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