Ansible-如何在一个任务中在多个shell上运行同一命令

时间:2019-11-11 11:19:17

标签: ansible

我正在尝试使用ansible运行ip link命令 在位于/ bin / ip的一个框ip命令上,在另一个框/ usr / sbin / ip

   - name: verify the MAC address
     shell: /usr/sbin/ip link
   - name: verify the MAC address
     shell: /bin/ip link

如何解决这个问题

1 个答案:

答案 0 :(得分:3)

这是一种可能使您步入正轨的情况:

  1. 确定其中一个命令是默认命令。例如,我将使用/usr/sbin/ip
  2. 在清单中(例如,单个文件ini格式),为未使用默认命令的计算机添加一个变量。
    machine_a
    machine_b
    machine_c ip_cmd_path="/bin/ip"
    
  3. 在您的剧本中,运行默认命令,除非有覆盖
    - name: Demo run default cmd unless override
      hosts: all
      tasks:
        - name: run ip command
          shell: "{{ ip_cmd_path | default('/usr/sbin/ip') }} link"
    

您可以将其调整为目标组,而不是计算机。如果需要,还可以在变量中使用默认命令。找到最佳选择取决于您的确切要求。

相关问题