是否有任何可能的方法来检查带有循环的注册变量(主机名)是否在清单中并打印其组?
我正在创建一个角色来安装具有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配置中
答案 0 :(得分:0)
Q; 是否有任何可能的方法来检查带有循环的已注册变量(主机名)是否在清单中并打印其组?
A:是的。可以使用Special Variables
ansible_play_hosts_all :该播放所针对的所有主机的列表
group_names :当前主机所属的组的列表
- debug:
msg: "{{ hostvars[item].group_names }}"
loop: "{{ hostnames }}"
when: item in ansible_play_hosts_all