Ansible 库存组中所有主机上的多个可用项和循环

Ansible 库存组中所有主机上的多个可用项和循环,ansible,ansible-2.x,ansible-inventory,ansible-facts,Ansible,Ansible 2.x,Ansible Inventory,Ansible Facts,团队,我需要在多台主机上执行多个命令。对于单一主机的情况,我可以使用下面的方法,但是如何在多个主机上迭代相同的方法呢 - name: "SMI Tests for ECC singlebit and double bit codes " command: "smi --xml-format --query | grep retired_count | grep -v 0" ignore_errors: no register: _smi

团队,我需要在多台主机上执行多个命令。对于单一主机的情况,我可以使用下面的方法,但是如何在多个主机上迭代相同的方法呢

      - name: "SMI Tests for ECC singlebit and double bit codes "
        command: "smi --xml-format --query | grep retired_count | grep -v 0"
        ignore_errors: no
        register: _smi_ecc_result
        failed_when: _smi_ecc_result.rc == 0
        delegate_to: "{{ item }}"
        with_items: "{{ groups['kube-gpu-node'] }}"
现在,我有更多的命令要执行,我应该如何修改上面的命令,以便在每个带有_项的主机上执行这些命令

例: 命令:df-kh 命令:ls-ltr



      - name: "multi_commands Tests for ECC singlebit and double bit codes "
        command: 
           - "smi --xml-format --query | grep retired_count | grep -v 0"
           - "df -kh"
           - "ls -ltr"
        ignore_errors: no
        register: multi_commands_result
        failed_when: multi_commands_result.rc == 0
        delegate_to: "{{ item }}"
        with_items: "{{ groups['kube-gpu-node'] }}"
但是我有语法错误

您可以在命令模块中使用argv传递多个命令,也可以使用shell传递多个命令,如下所示

- name: "multi_commands Tests for ECC singlebit and double bit codes "
  shell: |
      smi --xml-format --query | grep retired_count | grep -v 0
      df -kh
      ls -ltr
  ignore_errors: no
  register: multi_commands_result
  failed_when: multi_commands_result.rc != 0
  delegate_to: "{{ item }}"
  with_items: "{{ groups['kube-gpu-node'] }}"

你签出嵌套循环了吗?您已经在使用register,因此可以使用
-debug:var=multi\u命令\u result.stdout\u行
打印执行的shell的输出。