python - Ansible,检查库存组和主机
问题描述
是否有任何可能的方法来检查带有循环的注册变量(主机名)是否在清单中并打印它们的组?
我正在创建一个角色来安装带有 ansible 角色的心跳。但它只会安装在一个会 ping 另一个的 jumphost 上。
在这个角色中,我创建了单独的文件并将每个主机的配置放入其中。但是我需要添加一些字段来找出它们属于哪个组(我们在 Kibana 中需要它)。
我使用了 Jinja 模板,但它粘贴了拥有我扮演角色的主机的组。
{% for group in group_names %}
group: {{ group }}
{% endfor %}
所以我开始搜索ansible本身是否有任何方法可以做到这一点。我
- name: list of hosts
debug:
msg: "{{ item }}"
with_items:
- "{{ groups['all'] }}"
它返回了主机,我想将此列表与我们库存中的列表进行比较,并获取他们的组名以将它们粘贴到心跳的 icmp.yml 配置中
解决方案
问;是否有任何可能的方法来检查带有循环的注册变量(主机名)是否在库存中并打印它们的组?
答:是的。可以使用特殊变量
ansible_play_hosts_all : 被播放的所有主机列表
group_names:当前主机所属的组列表
- debug:
msg: "{{ hostvars[item].group_names }}"
loop: "{{ hostnames }}"
when: item in ansible_play_hosts_all
推荐阅读
- mysql - MySQL Union 未按预期工作
- javascript - 如何映射包含一组数据和一个日期的json数据?
- sql - SQL 使用 LIKE %?% 搜索多个列
- java - Java Calendar 定义一周中的日期和时间范围以进行比较
- vb.net - 带有 COM 控件的 VB.net prgram 在 Windows 7 但不是 10 上运行
- javascript - 能够选择午夜之后的时间
- azure-devops - 要求构建包含单元测试 VSTS
- python - keras 分类和二元交叉熵
- autodesk-forge - Forge 查看器中的 3ds Max 动画
- amazon-web-services - 拒绝访问 Amazon S3 put 对象的加密策略