如何根据变量中定义的主机名在多个主机上执行任务
How to execute task in multiple host according to the hostname defined in variables
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
我想在变量中定义的服务器上执行剧本任务。根据病情。我也有一些客户。如何检查主机名是 SERVER-1、SERVER-2 还是变量中定义的任何其他值并执行任务。我的客户端机器将跳过该任务。我怎样才能做到这一点??
Loof for ansible_hostname
inside rsyslog_server
var
- 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_server
var
的列表中查找 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(',')
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
我想在变量中定义的服务器上执行剧本任务。根据病情。我也有一些客户。如何检查主机名是 SERVER-1、SERVER-2 还是变量中定义的任何其他值并执行任务。我的客户端机器将跳过该任务。我怎样才能做到这一点??
Loof for ansible_hostname
inside rsyslog_server
var
- 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_server
var
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(',')