Вот изменения, сделанные для достижения этой цели -
- Задание среды c Запасы - Важно не изменять состояние части узла любой другой Таким образом, среда помогает избежать неожиданностей во время выполнения. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#example -он-инвентаризации за охрану окружающей среды .
Переместить учетные данные. из 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.
Вот снимок переменных, которые я определяю на уровне инвентаря.
Переменные и хранилище - обратите внимание, что раздел учетных данных содержит значения как переменные. Очевидно, мы не хотим показывать какие-либо учетные данные в виде открытого текста. поэтому важно следовать рекомендациям 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
Почему большой танец? Почему бы просто не определить все в хранилище и не связать переменную инвентаря с хранилищем? Это обеспечивает дополнительный уровень безопасности, где вы можете отобразить защищенные учетные данные в файле переменной и более конфиденциально в хранилище. Очевидно, что хранилище будет зашифровано, поэтому вам нужно указать учетные данные хранилища на уровне шаблона задания. Раздел учетных данных на уровне шаблона задания будет содержать только учетные данные хранилища .
Выберите приглашение при запуске для инвентаризации на уровне шаблона задания - Поскольку мы задаем среду 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 переменными), и использовать их в своих книгах, значения которых могут быть выбран из переменных файлов.