3
我必须使用template.j2列出文件中的所有服务器。目的是生成一个最新的配置文件与可靠的清单文件。所有文件都在安全服务器上。 我有一个generate-projectconf.yml,一个template.j2和库存文件。 问题是,我的方法localhost也在生成的文件中。我只想要库存文件中的IP。如何在主机操作是localhost localhost时从组中排除localhost
我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 : ...
...
完美的作品,非常感谢你! –