我正在使用 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"
(未经测试)