Используем ansible-vault в плэйбуках и ролях
Зачастую при работе с 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