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

0 ответов

Другие вопросы по тегам