从 Ansible 中的同一列表项访问变量中的字典值

从 Ansible 中的同一列表项访问变量中的字典值

我正在使用 Ansible 部署一些虚拟机,并且我有一个定义虚拟机的列表变量。我想知道我是否可以让其中一个字典项使用另一个字典项作为同一列表元素中的变量。例如,假设我定义了以下变量:

nodes:
  - name: vm1
    aliases:
      - vm1
      - vm1.local
  - name: vm2
    aliases:
      - vm2
      - vm2.local

我可以做这样的事吗?

nodes:
  - name: vm1
    aliases:
      - "{{ name }}"
      - "{{ name }}.local"
  - name: vm2
    aliases:
      - "{{ name }}"
      - "{{ name }}.local"

我尝试过并且尝试使用"{{ nodes.0.name }}"

答案1

不可以。你必须在运行时连接字符串。例如

  - debug:
      msg: "vm:{{ item.0 }} alias:{{ item.0 }}{{ item.1 }}"
    with_subelements:
      - "{{ nodes }}"
      - aliases
    vars:
      nodes:
        - name: vm1
          aliases:
            - ""
            - ".local"
        - name: vm2
          aliases:
            - ""
            - ".local"

(未经测试)

相关内容