2017-06-08 48 views
0

我想知道如何使用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主机列表并运行命令?

回答

1

我不知道如果我理解正确的描述,但下面好像答案:

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

你应该使用groups变量,用你的剧本里一个适当的主机。例如:

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