Acesse o valor do dict na variável do mesmo item da lista no Ansible

Acesse o valor do dict na variável do mesmo item da lista no Ansible

Estou usando o Ansible para implantar algumas máquinas virtuais e tenho uma variável de lista que define as VMs. Estou me perguntando se posso fazer com que um dos itens do dict use outro como variável dentro do mesmo elemento da lista. Por exemplo, digamos que eu tenha a seguinte variável definida:

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

Eu poderia, em vez disso, fazer algo assim?

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

Eu tentei isso e tentei usar "{{ nodes.0.name }}".

Responder1

Não. Você não pode. Você terá que concatenar as strings em tempo de execução. Por exemplo

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

(não testado)

informação relacionada