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

Dam*_*ore 59 ssh command-line configuration-management ansible

在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"
Run Code Online (Sandbox Code Playgroud)

"显示SSH公钥"任务完成但未显示输出.

TASK: [Show SSH public key] *************************************************** 
changed: [default]
Run Code Online (Sandbox Code Playgroud)

可能有更好的方法来解决这个问题.我真的不喜欢它总会显示出"已更改"的状态.我确实找到了这个对ansible的请求 - https://github.com/ansible/ansible/pull/2673 - 但不确定我是否可以在不编写自己的模块的情况下使用它.

eli*_*eve 77

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

只需将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
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,我仍然没有输出,我甚至在ansible上使用`-vvvv`而我根本没有输出.尝试`命令:ls` (3认同)

Lor*_*ein 19

如果将-v标志传递给ansible-playbook命令,则ansible将在终端上显示输出.

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

  • 我不认为我想以详细模式运行整个剧本来获得这个输出。如果我可以让剧本暂停并显示本地文件的内容,Fetch 可能有助于避免“已更改”状态。我需要告诉运营商将公共 SSH 密钥添加到 GitHub 的帐户授权中。我想我可以提供更多说明并告诉他们打开获取的文件。 (2认同)
  • @DamianMoore 您可以使用“暂停”模块让剧本暂停,您可以使用“调试”模块和“查找”插件将文件打印到屏幕上。 (2认同)

lui*_*all 5

pubkey通过添加changed_when: Falsecat任务来打印并避免更改状态:

- 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"
Run Code Online (Sandbox Code Playgroud)