In an Ansible role I generate the user's SSH key. After that I want to print it to the screen and pause so the user can copy and paste it somewhere else. So far I have something like this:
- name: Generate SSH keys for vagrant user user: name=vagrant generate_ssh_key=yes ssh_key_bits=2048 - name: Show SSH public key command: /bin/cat $home_directory/.ssh/id_rsa.pub - name: Wait for user to copy SSH public key pause: prompt="Please add the SSH public key above to your GitHub account"
The 'Show SSH public key' task completes but doesn't show the output.
TASK: [Show SSH public key] *************************************************** changed: [default]
There may be a better way of going about this. I don't really like the fact that it will always show a 'changed' status. I did find this pull request for ansible - https://github.com/ansible/ansible/pull/2673 - but not sure if I can use it without writing my own module.
To capture the output, you need to specify your own variable into which the output will be saved. To achieve this, we use the 'register' parameter to record the output to a variable. Then use the 'debug' module to display the variable's content to standard out. To demonstrate this, let's use a few examples.
stdout. Some modules execute command line utilities or are geared for executing commands directly (raw, shell, command, and so on). This field contains the normal output of these utilities. "stdout": "foo!"
There is no Ansible grep module, but you can use the grep commands along with shell module or command module. We can store the results of the task and use it in various conditional statements, print them or use them for debugging purposes.
I'm not sure about the syntax of your specific commands (e.g., vagrant, etc), but in general...
Just register Ansible's (not-normally-shown) JSON output to a variable, then display each variable's stdout_lines
attribute:
- name: Generate SSH keys for vagrant user user: name=vagrant generate_ssh_key=yes ssh_key_bits=2048 register: vagrant - debug: var=vagrant.stdout_lines - name: Show SSH public key command: /bin/cat $home_directory/.ssh/id_rsa.pub register: cat - debug: var=cat.stdout_lines - name: Wait for user to copy SSH public key pause: prompt="Please add the SSH public key above to your GitHub account" register: pause - debug: var=pause.stdout_lines
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With