Несколько дней новогоднего волшебства:
Успейте начать обучение в 2018-ом году со скидкой до 30%!
Выбрать курс

Используем ansible-vault в плэйбуках и ролях

Linux_Deep_5.07_site.png

Зачастую при работе с Ansible требуется использовать различные аутентификационные данные. Хранить их в plain text – не самая лучшая идея. Для хранения таких данных в зашифрованном виде следует использовать ansible-vault.

Рассмотрим пример использования ansible-vault для хранения имени пользователя и пароля для подключения по ssh в том случае, когда у нас нет ключа на сервере.

Создаём vars файл

ansible-vault create vars.yml
New Vault password: 
Confirm New Vault password: 

заполняем данные

ansible_ssh_user: root
ansible_ssh_pass: mypasswd

Смотрим содержимое файла

$ more vars.yml 
$ANSIBLE_VAULT;1.1;AES256
34616461393939363333636466396266313363333765616661306661313662306566373039383032
3331643864656235613039303034646338396433316466660a646433663563353330653662353034
31653163656132346462653432393733343865373833386439393865646239663336656335616132
3437306634656634340a646364346635343161363230313735363136313338616338663663643533
61366438373166376438333261306432343162653137353035323663616138663333623932323630
32336537646263613235366132396665373435323266633933373636633434396534333434363035
303537306466373236366561316534643330

Чтобы посмотреть или изменить данные

ansible-vault view vars.yml
ansible-vault edit vars.yml

Добавляем vars.yml в плейбук

- hosts: all
  gather_facts: true
  vars_files:
    - vars.yml
  tasks: 
  - debug: var=[ansible_kernel,ansible_distribution,ansible_dns,ansible_date_time.tz,ansible_date_time]

Исполняем плейбук

ansible-playbook -i my.inv get_info.yml --ask-vault-pass 
Vault password: 

Использование для group_vars и host_vars

Когда нам нужны разные данные для разных групп и хостов, мы также создаём файлы переменных согласно требуемой конфигурации с помощью ansible-vault, как было показано выше:

group_vars/
   linux.yml             # названия фалов соответвуют названию групп
   db.yml                 # в inventory
host_vars/
   primary_mysql.yml          # названия файлов соответвуют названию хостов
   primary_web.yml             # в  inventory

Есть вопрос? Напишите в комментариях!

Автор
5 комментариев
0

Wow, nice!!!

0

Вводить пароль на каждом выполнении ansible-playbook так себе идея

1

Использовать файл с паролем идея тоже не самая лучшая, хотя, да, опцию расписать стоило.

0

Если этот файл в гитигноре, не вижу проблем

0

если админов много, каждый пускает скрипты со своей рабочей машины - будут множественные копии файла с паролем. конечно можно выделить отдельную подключаемую шару где хранить такие вещи или пускать такие скрипты с выделенной машины

Для комментирования необходимо авторизоваться