hostvars в playbook недоступен в zuul, хотя работает в ansible
Я использую для загрузки переменных из нескольких.yaml
файлы
- hosts: localhost
vars:
files: "{{ query('varnames', 'files_[0-9]+')|
map('extract', hostvars.localhost, 'files')|
flatten }}"
tasks:
- find:
paths: "{{ playbook_dir }}"
recurse: true
patterns: test.yaml
register: files_from_dirs
- include_vars:
file: "{{ item }}"
name: "{{ name }}"
loop: "{{ files_from_dirs.files|map(attribute='path')|list }}"
loop_control:
extended: true
vars:
name: "files_{{ ansible_loop.index }}"
- debug:
var: files
пока это работает вansible
когда я запускаю его, он не работает. Илиzuul
защищает по соображениям безопасности или загружает переменные в другое пространство имен
есть ли способ использовать другую переменную сinclude_vars
вместоhostvars
так что я могу иметь надежный обработчик имен для загрузки переменных
for example something akin to (the code below doesn't work but I am trying to explain the concept)
- local_vars: {
'name': 'This acts like a pointer',
}
files: "{{ query('varnames', 'files_[0-9]+')|
map('extract', local_vars, 'files')|
flatten }}"
и для загрузки в этот словарь в качестве ключей или другого метода, при котором я могу иметь локальную переменную, указывающую на эти словари без использованияhostvar
- include_vars:
file: "{{ item }}"
name: "{{ name }}"
loop: "{{ files_from_dirs.files|map(attribute='path')|list }}"
loop_control:
extended: true
vars:
name: "local_vars.folders_{{ ansible_loop.index }}"