從 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"

(未測試)

相關內容