如何用yaml指定数组或列表元素事实?

sur*_*190 8 yaml ansible ansible-facts

当我们检查hostvars时:

  - name: Display all variables/facts known for a host
    debug: var=hostvars[inventory_hostname]
Run Code Online (Sandbox Code Playgroud)

我们得到:

ok: [default] => {
    "hostvars[inventory_hostname]": {
        "admin_email": "admin@surfer190.com", 
        "admin_user": "root", 
        "ansible_all_ipv4_addresses": [
            "192.168.35.19", 
            "10.0.2.15"
        ],...
Run Code Online (Sandbox Code Playgroud)

我如何指定"ansible_all_ipv4_addresses"列表的第一个元素?

sur*_*190 15

使用点表示法

"{{ ansible_all_ipv4_addresses.0 }}"
Run Code Online (Sandbox Code Playgroud)


小智 7

这应该像在Python中一样工作.这意味着您可以使用引号访问键,使用整数访问索引.

  - set_fact:
      ip_address_1: "{{ hostvars[inventory_hostname]['ansible_all_ipv4_addresses'][0] }}"
      ip_address_2: "{{ hostvars[inventory_hostname]['ansible_all_ipv4_addresses'][1] }}"

  - name: Display 1st ipaddress
    debug:
      var: ip_address_1
  - name: Display 2nd ipaddress
    debug:
      var: ip_address_2
Run Code Online (Sandbox Code Playgroud)