如何根据变量中定义的主机名在多台主机上执行任务


content of inventory file: 
all:
vars:
rsyslog_server: SERVER-1,SERVER-2 # It can have one or more server 
content of my  task is:
- name: Copy server file in to /etc/rsyslog.d
template:
src: ../templates/server.j2
dst: /etc/rsyslog.d/server.conf
when: ansible_hostname == rsyslog_server

我想在变量中定义的服务器上执行playbook任务。视情况而定。我也有客户。我如何检查主机名是SERVER-1、SERVER-2还是变量中定义的任何其他值并执行任务?我的客户端机器将跳过该任务。我怎样才能做到这一点??

ansible_hostname内部的Loof forrsyslog_servervar

- name: Copy server file in to /etc/rsyslog.d
template:
src: ../templates/server.j2
dst: /etc/rsyslog.d/server.conf
when: rsyslog_server | search(ansible_hostname)

或者您可以在rsyslog_servervar

的列表中查找ansible_hostname
- name: Copy server file in to /etc/rsyslog.d
template:
src: ../templates/server.j2
dst: /etc/rsyslog.d/server.conf
when: ansible_hostname in rsyslog_server.split(',')

最新更新