
Я использую 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"
(не испытано)