在Ansible角色中,我生成用户的SSH密钥。之后,我想将其打印到屏幕并暂停,以便用户可以将其复制并粘贴到其他位置。到目前为止,我有这样的事情:
- 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"
“显示SSH公钥”任务完成但未显示输出。
TASK: [Show SSH public key] ***************************************************
changed: [default]
可能有更好的方法来解决这个问题。我真的不喜欢它总会显示出“已更改”的状态。我确实找到了对ansible的拉取请求 - https://github.com/ansible/ansible/pull/2673 - 但不确定我是否可以在不编写自己的模块的情况下使用它。
答案 0 :(得分:72)
我不确定你的特定命令的语法(例如,流浪汉等),但总的来说......
只需将Ansible(非常规显示)JSON输出注册到变量,然后显示每个变量的stdout_lines
属性:
- 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
答案 1 :(得分:16)
如果将-v
标志传递给ansible-playbook命令,则ansible将在终端上显示输出。
对于您的用例,您可能希望尝试使用fetch模块将公钥从服务器复制到本地计算机。这样,它只会在文件更改时显示“已更改”状态。
答案 2 :(得分:6)
通过将pubkey
添加到changed_when: False
任务来打印cat
并避免更改状态:
- name: Generate SSH keys for vagrant user
user: name=vagrant generate_ssh_key=yes ssh_key_bits=2048
- name: Check SSH public key
command: /bin/cat $home_directory/.ssh/id_rsa.pub
register: cat
changed_when: False
- name: Print SSH public key
debug: var=cat.stdout
- name: Wait for user to copy SSH public key
pause: prompt="Please add the SSH public key above to your GitHub account"