Как сделать шаблоны заданий generic c AWX применимыми для машин с именем пользователя, отличным от S SH? - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть рабочий процесс в AWX, который последовательно запускает несколько шаблонов заданий. Я хочу сделать эти шаблоны работы обобщенными c для среды prod и non-prod. Учетные данные компьютера задаются на уровне шаблона задания, а не на уровне рабочего процесса задания, таким образом, можно предоставить только 1 удостоверение компьютера. Я также не хочу получать подсказки при запуске, так как при этом вы теряете функциональность планирования. Есть ли способ, как я могу сделать свои шаблоны работы generi c (playbooks)? который может работать на нескольких машинах с разными именами пользователей, от s sh до?
Примечание : у меня нет доступа к серверу AWX. Только пользовательский интерфейс. Я не системный администратор.

1 Ответ

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

Вот изменения, сделанные для достижения этой цели -

  1. Задание среды c Запасы - Важно не изменять состояние части узла любой другой Таким образом, среда помогает избежать неожиданностей во время выполнения. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#example -он-инвентаризации за охрану окружающей среды .
  2. Переместить учетные данные. из 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.
    Вот снимок переменных, которые я определяю на уровне инвентаря. enter image description here

  3. Переменные и хранилище - обратите внимание, что раздел учетных данных содержит значения как переменные. Очевидно, мы не хотим показывать какие-либо учетные данные в виде открытого текста. поэтому важно следовать рекомендациям Ansible, чтобы Ansible находил переменные в незашифрованном файле и все чувствительные переменные поступали из зашифрованного файла. https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#variables -and-vaults .
    Я поддерживаю переменный файл, то есть файл конфигурации, вместе с хранилищем, чтобы они отображались во время выполнения в playbooks. Вы можете создать подкаталог скажем vars и отобразить переменные, указанные как значения в переменных инвентаризации, в файл vars / var.yml . Ключ vars.yml может быть определен как - *

    ssh_secret_dev: "{{vault_secret_pass}}"
    ssh_user_dev: имя пользователя
    И файл зашифрованного хранилища может иметь окончательное значение -

    vault_secret_pass : very_secret_password

Почему большой танец? Почему бы просто не определить все в хранилище и не связать переменную инвентаря с хранилищем? Это обеспечивает дополнительный уровень безопасности, где вы можете отобразить защищенные учетные данные в файле переменной и более конфиденциально в хранилище. Очевидно, что хранилище будет зашифровано, поэтому вам нужно указать учетные данные хранилища на уровне шаблона задания. Раздел учетных данных на уровне шаблона задания будет содержать только учетные данные хранилища enter image description here.

Выберите приглашение при запуске для инвентаризации на уровне шаблона задания - Поскольку мы задаем среду WorkFlows c, а не шаблоны работы, поэтому мы можем упомянуть Inventory на уровне WorkFlow и выбрать приглашение при запуске в Уровень шаблонов работ, позволяющий инвентаризации применяться ко всем шаблонам работ, которые имеют подсказку при запуске. Редактировать 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 переменными), и использовать их в своих книгах, значения которых могут быть выбран из переменных файлов.

...