使用 Anble 显示远程命令的输出

在安塞尔角色中,我生成用户的 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]

也许还有更好的办法。我真的不喜欢它总是显示一个“改变”状态的事实。我确实找到了这个对于 anable 的 pull 请求-https://github.com/ansible/ansible/pull/2673-但是不确定我是否可以在不编写我自己的模块的情况下使用它。

111769 次浏览

如果您将 -v标志传递给 anable-playbook 命令,那么 anable 将在您的终端上显示输出。

对于您的用例,您可能希望尝试使用 捡回来模块将公钥从服务器复制到本地计算机。这样,它只会在文件更改时显示“更改”状态。

我不确定你特定命令的语法(例如,流浪汉,等等) ,但总的来说..。

只需将 Anble 的(非正常显示的) 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

打印 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"