我试图找出如何在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
主机列表并运行命令?
答案 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'] }}"