Ansible,正在检查库存组和主机

时间:2019-09-19 11:04:01

标签: python linux elasticsearch 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配置中

1 个答案:

答案 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