如何在 ansible 中显示 2 个命令的输出?

如何在 ansible 中显示 2 个命令的输出?
---
- hosts: all
  gather_facts: false
  user: 
  become: yes

  tasks:

  - name: Checking current kernel on Target Server
    shell: hostname;uname -r
    register: output
  - debug: msg= "{{ output.stdout }}"

答案1

删除“=”后的空格。正确的语法是

- debug: msg="{{ output.stdout }}"

, 或者

- debug:
    var: output.stdout

甚至更好

- debug:
    var: output.stdout_lines

答案2

虽然 Vladimir 关于使用调试转储命令的标准输出的说法是正确的,但是可以通过最少量的事实收集来访问内核版本和主机名:

---
- hosts: all
  gather_facts: True
  gather_subset: min
  become: False

  tasks:
  - name: hostname
    debug:
      var: ansible_hostname

  - name: kernel version
    debug: 
      var: ansible_kernel
  • 您的变量无需注册即可使用。您还可以获得一些额外信息,例如ansible_distribution
  • 事实min设置足够,它跳过了很多硬件检测并且相当快。
  • 无需成为特权用户。
  • 避免使用shell。与事实收集相比,其故障模式不太明显。

相关内容