Вот структура переменных, с которыми я хотел бы работать из packages.yml
файла:
---
- name: Some description 1,
package: package1
- name: Some description 1,
package: package2
Я ожидал, что я импортирую файл и сохраню список в переменной packages:
- name: Import packages vars
include_vars:
file: packages.yml
name: packages
Тогда я хочу напечатать только имена:
- name: iteration
debug:
msg: "name: {{ item.name }}"
with_items: "{{ packages }}"
Но получаю ошибку:
TASK [Импорт пакетов переменных] **************************************************** фатально: [по умолчанию]: НЕ УДАЛОСЬ! => {"ansible_facts": {"packages": {}}, "ansible_included_var_files": [], «change»: false, «message»: «/vagrant/packages.yml должен храниться в виде словаря / хэша»}
Исходные цели, которые я пытаюсь получить:
1st. Упростите определение свойств, объявив список элементов без названия этого списка. Я имею в виду, я не хочу определять их во внешнем файле как:
---
- packages:
- name: Some description 1,
package: package1
- name: Some description 1,
package: package1
Хотя это можно легко решить без include_vars, но с помощью директивы vars_files:
vars_files:
- packages.yml
2nd. Имея неназванный список элементов в yml-файле, я хочу в самом playbook дать ему имя. Это то, что я пытаюсь сделать в задаче «Импорт пакетов в» с помощью «packages
» в playbook
- name: Import packages vars
include_vars:
file: packages.yml
name: packages
Таким образом, я возлагаю ответственность за присвоение имени списку его потребителю. Сам список не должен беспокоиться о том, как его клиенты называют.
Если это возможно, как я могу это сделать?