Прежде всего мы должны начать с создания ./vault/main.yml
из корневого каталога вашего проекта и добавления туда секрета:
my_vault_secret: "It works!"
Затем параметр A , чтобы включить хранилищеВАР с главной ролью, которая будет выделена во время выполнения playbook, создайте ./roles/role1/default/main.yml
и добавьте вашу переменную, которая будет ссылаться на секрет:
my_vault_var: "{{ my_vault_secret }}"
Затем используйте my_vault_var
в role_a
, role_b
, role_c
.
Или, вариант B , сохраните ./vault/main.yml
со всеми вашими секретами, включая те, которые используются в role_a
, role_b
, role_c
, новместо использования default / main.yml, включите файл хранилища непосредственно в книгу воспроизведения, которую вы используете для выполнения задач в role1
и role2
:
- hosts: localhost
connection: local
vars_files:
- "vault/main.yml"
roles:
- role1
- role2
PLAY [localhost] *******************************************************************************************************************************************************************************************
TASK [role_a : debug] ****************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "It works!"
}
Структура проекта будет выглядетьнапример, с defaults
, необходимым только для варианта A:
my_ansible_repo
|-- group_vars
|-- main.yml
|-- vault
|-- main.yml
|-- roles
|-- role1
|-- defaults
|-- main.yml
|-- tasks
|-- main.yml
|-- meta
|-- main.yml
|-- role_a
|-- tasks
|-- main.yml
|-- my_playbook.yml
Подробнее об Ansible переменных по умолчанию в официальной документации здесь и об использовании переменных файлов с книгами воспроизведения, здесь .