Ansible

從 Ansible 中的同一列表項訪問變數中的 dict 值

  • September 23, 2021

我正在使用 Ansible 部署一些虛擬機,並且我有一個定義虛擬機的列表變數。我想知道是否可以讓其中一個 dict 項目在同一個列表元素中使用另一個作為變數。例如,假設我定義了以下變數:

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 }}".

不,你不能。您必須在執行時連接字元串。例如

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

(未測試)

引用自:https://serverfault.com/questions/1078446