gpt4 book ai didi

localhost - 当主机操作是带有ansible的本地主机时如何从组中排除本地主机

转载 作者:行者123 更新时间:2023-12-02 01:14:10 30 4
gpt4 key购买 nike

我必须使用 template.j2 列出文件中的所有服务器。目的是使用 ansible list 文件生成最新的配置文件。所有文件都在 ansible 服务器上。
我有一个 generate-projectconf.yml、一个 template.j2 和库存文件。
问题是,使用我的方法,本地主机也在生成的文件中。我只想要库存文件中的 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 : ...
...

最佳答案

从模板中的服务器列表中排除当前主机(在您的情况下为 localhost ):

{% for host in groups[servers_to_monitor] | difference([inventory_hostname]) %}

关于localhost - 当主机操作是带有ansible的本地主机时如何从组中排除本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43517124/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com