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的输出。