Ansible Vault
Содержание
Ansible Vault#
Можно зашифровать одну или несколько переменных, и записать их в обычные плейбук, инвентарь, файл с переменными. Можно собрать все секреты в один или несколько файлов и зашифровать файлы целиком (даже плейбук / файл с тасками / ролью).
Основы и использование зашифрованной переменной#
Команда для шифрования отдельной переменной (например, пароля или любой
строки) с помощью ansible-vault:
ansible-vault encrypt_string --vault-id <your_name>@prompt --stdin-name 'my_ansible_secret:'
В <your_name> указываем идентификатор для используемого пароля, нужен
только для удобства, это своего рода памятка, с его помощью легко понять,
какой именно пароль был использован для шифрования данного артефакта.
@promt — указание Ansible, что пароль будет введён интерактивно.
@/path/to/password/file — указание, что пароль нужно прочитать из
указанного файла.
Note
Можно использовать сколько угодно разных паролей, хоть каждую новую переменную шифровать с разными паролями.
Ansible не следит за уникальностью идентификаторов и/или соответствию их используемым паролям. Вы можете зашифровать три разные переменные тремя разными паролями, но указать для всех один идентификатор. Я бы так делать не стал — но так можно.
В примерах будет использован идентификатор my_id.
Получаем результат:
my_ansible_secret: !vault |
$ANSIBLE_VAULT;1.2;AES256;my_id
61653232646132333838353365663134346264653139363166316661343730306135346237386635
6235623933653464376535383262626530376531353039300a353333613731396466333134303364
66343964616232623561346334646432306564353066633930626136336639646538303330666132
3332663730656162630a323933313165396366613730393736303039613965376135666638636432
34323862343431663162336662396338616464333236656239333261303535316639333961373266
3230356433303065323766396233306462323163643665366331
Его используем как обычную переменную Ansible:
need_to_use_secret_here: "{{ my_ansible_secret }}"
Для использования плейбука, содержащего данную переменную:
ansible-playbook --vault-id my_id@prompt playbook/this_playbook_uses_secret.yml
Если мы сохранили пароль для ansible-vault в файл (полезно для скриптов), то
плейбук будем вызывать так:
ansible-playbook --vault-id my_id@/path/to/password/file playbook/this_playbook_uses_secret.yml
Использование зашифрованного файла#
Шифрование существующего файла:
ansible-vault encrypt --vault-id my_id@prompt foo.yml
В плейбуке файл используется аналогично незашифрованному.
Ссылка на документацию#
https://docs.ansible.com/ansible/latest/user_guide/vault.html