使用主机列表并在列表中的每个主机的一个主机上运行命令

时间:2017-06-08 21:45:49

标签: ansible

我试图找出如何在Ansible中使用主机清单并运行每个主机的命令,但只在其中一个主机上运行。

例如

......

如果我的库存文件如下所示:

[data]
data1
data2
data3

[meta]
meta1
meta2
meta3
meta4

我尝试做的就是在节点data1上运行类似的内容:

- name: Run this on data1
  command: "someCmd.sh -arg1 {{ item }}"
  with_items:
    - "data1"
    - "data2"
    - "data3"
    - "data4"

我知道我不会那样明确地得到这样的清单......只是想表明我想做什么。那么如何循环遍历data主机列表并运行命令?

2 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解了描述,但以下内容似乎就是答案:

- name: Run this on data1
  command: "someCmd.sh -arg1 {{ item }}"
  delegate_to: data1
  run_once: true
  with_items:
    - "{{ groups['data'] }}"

答案 1 :(得分:0)

你应该使用groups变量并在你的剧本中使用一个合适的主持人。类似的东西:

- hosts: data1
  tasks:
    - name: Run this on data1
      command: "someCmd.sh -arg1 {{ item }}"
      with_items: "{{ groups['data'] }}"