Измените указанные c переменные в AWX (ansible) в ansible .cfg - PullRequest
0 голосов
/ 18 февраля 2020

Мы используем AWX для управления конфигурацией, и у нашей команды есть много книг с книгами и 4 области применения (DEV, QA, STAGING, PRODUCTION). В наших книгах мы используем некоторую переменную c в ansible .cfg, которая позволяет нам отправлять уведомления.

[some_section]
some_var = https://some-dev-url/service/job_complete?

В dev env он выглядит как в примере выше, на qa мы добавляем qa в ссылку, на prod добавляем prod в ссылку et c. Когда мы выполняем код * sh между ветвями, например: dev -> qa, мы всегда имеем конфликт, потому что ссылка в ansible .cfg не совпадает. То, что мы делаем сейчас, это всегда меняем эту ссылку, когда мы что-то объединяем. То, что я пытаюсь сделать, это пропуск с ansible дополнительными переменными (в ansible .cfg) по этой ссылке, когда playbook запускается, но, к сожалению, у меня нет успеха. Единственное, что произошло, я вытащил переменную из конфига, но я не знаю, что делать дальше. playbook запущен. Если у кого-то есть решение, пожалуйста) (кстати, мы попытались использовать git игнорировать в этом файле, оно не работает)

1 Ответ

0 голосов
/ 18 февраля 2020

В соответствии с Ansible руководствами важно иметь спецификации среды c. Вы можете связать эту переменную на уровне инвентаря, а не на уровне работы. Вот мои предложения -
1. Задать спецификацию среды c инвентаризации - Важно не изменять состояние узла в какой-либо другой среде, что помогает избежать неожиданностей во время выполнения. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#example -one-инвентарь-на-среду .
2. Move env. Speci c информация. из playbooks в инвентарь - Вы можете настроить env. укажите c переменные на вашем уровне инвентаря вместе с магическими c переменными. Маги c переменные известны Ansible. Например -
ansible_connection, ansible_user, ansible_ssh_pass . Ansible хорошо понимает, он должен войти в систему через s sh, используя ansible_user, ansible_ssh_pass .
Таким образом, вам не нужно указывать учетные данные на AWX Job Шаблон и счастливо оставить параметр учетных данных машины пусто на уровне шаблона. https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#magic.
3. Переменные и хранилище - Обратите внимание, что раздел учетных данных содержит значения в виде переменных. Очевидно, мы не хотим показывать какие-либо учетные данные в виде открытого текста. поэтому важно следовать рекомендациям Ansible, чтобы Ansible находил переменные в незашифрованном файле и все чувствительные переменные поступали из зашифрованного файла. https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#variables -and-vaults .
Я сохраняю переменный файл, т.е. файл конфигурации, вместе с хранилищем, чтобы они отображались во время выполнения в книгах воспроизведения. Вы можете создать подкаталог скажем vars и отобразить переменные, указанные как значения в переменных инвентаризации, в файл vars / var.yml . vars.yml может иметь ключ, определяемый как -

ssh_secret_dev: "{{ vault_secret_pass }}"   
ssh_user_dev: username    

И зашифрованный файл хранилища может иметь окончательное значение -

vault_secret_pass: very_secret_password

Почему большой танец? Почему бы просто не определить все в хранилище и не связать переменную инвентаря с хранилищем? Это обеспечивает дополнительный уровень безопасности, где вы можете отобразить защищенные учетные данные в файле переменной и более конфиденциально в хранилище. Очевидно, что хранилище будет зашифровано, поэтому вам нужно указать учетные данные хранилища на уровне шаблона задания. Раздел учетных данных на уровне шаблона задания будет содержать только учетные данные хранилища.
4. Выберите приглашение при запуске для инвентаризации на уровне шаблона задания - поскольку мы создаем среду WorkFlows, указав c, а не шаблоны задания, поэтому , мы можем упомянуть Inventory на уровне WorkFlow и выбрать параметр «Приглашение при запуске» на уровне «Шаблон работы», чтобы разрешить применение Inventory ко всем шаблонам заданий, которые имеют параметр «Запуск при запуске».
5. Редактирование Playbooks для загрузки этих двух переменных файлов (vault.yml и vars.yml).

- hosts: localhost
  vars_files:
    - ./vars/vault.yml
    - ./vars/vars.yml
  gather_facts: no
  no_log: true
  tasks:
     - .....some tasks...... 

Вы также можете использовать любую переменную, которую вы определили в инвентаре (которая не является специальной ansible переменными), и использовать их в своих книгах, значения которых можно выбрать из переменной. файлы.

...