Question:
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:
1 2 3 4 5 6 7 |
- 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.
1 2 3 |
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.
Answer:
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
- 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 |