Ansible迭代库存变量

时间:2019-07-11 16:38:45

标签: ansible

我有一个清单,其中定义了一些变量,例如服务器ip:

all:
  children:
    my_servers:
      children:
        data:
          hosts:
            data01.mydomain:
              ansible_host: 10.0.0.1
              es_name: "data01"
            data02.mydomain:
              ansible_host: 10.0.0.2
              es_name: "data02"

我知道要访问主机名,我可以使用类似“ {{groups ['data']}}”的名称,这将遍历主机名。

我想做的是遍历每个主机名中的变量“ ansible_host”(以在防火墙上打开规则)。我可以使用“ {{hostvars ['data01'] ['ansible_host']}}”获得一个值,但找不到遍历清单中所有主机的方法。

1 个答案:

答案 0 :(得分:1)

您在这里。请记住使用-i hosts

进行播放

play.yml

---
- name: Play
  hosts: localhost
  tasks:
    - name: iterate
      debug:
         msg: "{{ item }}:{{ hostvars[item].ansible_ssh_host }}"
      with_items:
        - "{{ groups['all'] }}"

运行如下所示的剧本

ansible-playbook -i hosts play.yml