Ansible 迭代库存变量

Joã*_*ira 1 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"
Run Code Online (Sandbox Code Playgroud)

我知道要访问主机名,我可以使用“{{ groups['data'] }}”之类的内容,这将迭代主机名。

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

Pra*_*hna 5

干得好。记得用-i hosts

播放.yml

---
- name: Play
  hosts: localhost
  tasks:
    - name: iterate
      debug:
         msg: "{{ item }}:{{ hostvars[item].ansible_ssh_host }}"
      with_items:
        - "{{ groups['all'] }}"
Run Code Online (Sandbox Code Playgroud)

像下面一样运行剧本

ansible-playbook -i hosts play.yml
Run Code Online (Sandbox Code Playgroud)