我必须使用template.j2在一个文件中列出所有服务器。其目的是使用ansible清单文件生成最新的配置文件。所有文件都在ansible服务器上。我有一个generate-projectconf.yml、一个template.j2和清单文件。问题是,在我的方法中,localhost也在生成的文件中。我只想要清单文件中的IP。
我的yml文件如下所示
- hosts: localhost
tasks:
- name: modif du project.conf
template: src="template.j2" dest="/tmp/project.conf" template.j2文件
...
ServersList
{% for host in groups[servers_to_monitor] %}
{{ hostvars[host]['ansible_hostname'] }} : {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
...清单文件如下所示
[DB_Servers]
cas05 ansible_ssh_host=192.168.20.105 ansible_user=ansible
cas06 ansible_ssh_host=192.168.20.106 ansible_user=ansible
[MS_Account_Servers]
acc21 ansible_host=192.168.20.99 ansible_user=ansible
acc22 ansible_host=192.168.20.100 ansible_user=ansible
[MS_Admin_Servers]
adm21 ansible_host=192.168.20.79 ansible_user=ansible
adm22 ansible_host=192.168.20.80 ansible_user=ansible
[MS_Admingui_Servers]
ihm21 ansible_host=192.168.20.81 ansible_user=ansible要启动此命令,我执行以下命令
ansible-playbook generate-projectconf.yml -i /.../inventory --extra-vars "servers_to_monitor=all"结果如下所示:
...
dep01 : 192.168.20.3
ihm21 : 192.168.20.81
adm21 : ...
...发布于 2017-04-20 18:49:05
从模板的服务器列表中排除当前主机(在您的情况下为localhost):
{% for host in groups[servers_to_monitor] | difference([inventory_hostname]) %}https://stackoverflow.com/questions/43517124
复制相似问题