Как я могу использовать подстановочный знак для включения нескольких файлов для использования переменных среды в Ansible? - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь выполнить пользовательскую установку openx , и у меня есть куча .yml файлов с переменными среды внутри них в путях, которые выглядят следующим образом

playbooks/roles/<component-name>/defaults/main.yml

Затем, при запуске playbook, который устанавливает все такие компоненты, я использую команду, подобную этой

ansible-playbook ./openedx_native.yml -e"@roles/<component-name-1>/defaults/main.yml" -e"@roles/<component-name-2>/defaults/main.yml"

Теперь я хочу иметь возможность использовать файлы main.yml из всех компонентов, и их около 20-25, поэтому я ищу способ включить их, используя подстановочный знак, что-то вроде этого

ansible-playbook ./openedx_native.yml -e"@roles/*/defaults/main.yml"

Это, конечно, не работает, и Ansible выдает ошибку вроде этой

ОШИБКА! имя_файла «/var/tmp/configuration/playbooks/roles/*/defaults/main.yml» не существует или не читается

Как мне этого добиться? Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Можно указать найти файлы и include_vars .

  tasks:
    - command: "sh -c 'find {{ playbook_dir }}/roles/*/defaults/main.yml'"
      register: result
    - include_vars:
        file: "{{ item }}"
      loop: "{{ result.stdout_lines }}"
0 голосов
/ 08 июня 2019

Если у вас есть возможность изменять и переупорядочивать переменные среды и их значения в /group/all.yaml, например, environments: - { name: ‘development’, profile: 'small' } - { name: ‘staging’, profile: ‘medium’ } - { name: ‘production’, profile: ‘complex’ }

И затем вы можете использовать эту переменную для любой задачи, например, для любой, которую вы хотитесоздать папку с именем окружения

    - name: create folders for Environment
  file: 
    path: "{{ target }}/{{ item.name }}"
    state: directory
    mode: 0755
  with_items: "{{ environments }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...