首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当hosts操作是localhost with ansible时,如何从组中排除localhost

当hosts操作是localhost with ansible时,如何从组中排除localhost
EN

Stack Overflow用户
提问于 2017-04-20 18:35:58
回答 1查看 1.6K关注 0票数 4

我必须使用template.j2在一个文件中列出所有服务器。其目的是使用ansible清单文件生成最新的配置文件。所有文件都在ansible服务器上。我有一个generate-projectconf.yml、一个template.j2和清单文件。问题是,在我的方法中,localhost也在生成的文件中。我只想要清单文件中的IP。

我的yml文件如下所示

代码语言:javascript
复制
- hosts: localhost
  tasks:
 - name: modif du project.conf
   template: src="template.j2" dest="/tmp/project.conf" 

template.j2文件

代码语言:javascript
复制
...
ServersList
    {% for host in  groups[servers_to_monitor] %}
    {{ hostvars[host]['ansible_hostname'] }} : {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
    {% endfor %}
...

清单文件如下所示

代码语言:javascript
复制
[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

要启动此命令,我执行以下命令

代码语言:javascript
复制
ansible-playbook  generate-projectconf.yml -i /.../inventory --extra-vars "servers_to_monitor=all"

结果如下所示:

代码语言:javascript
复制
...
dep01 : 192.168.20.3
ihm21 : 192.168.20.81
adm21 : ...
...
EN

回答 1

Stack Overflow用户

发布于 2017-04-20 18:49:05

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

代码语言:javascript
复制
{% for host in groups[servers_to_monitor] | difference([inventory_hostname]) %}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43517124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档