Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Ansible Vault Основы автоматизации в Ansible

Ansible Vault - механизм шифрования переменных и файлов, который помогает спрятать секретные данные, такие как пароли или ключи к разнообразным сервисам. У Ansible Vault множество вариантов использования, о которых можно подробно прочитать в документации. Здесь мы остановимся на одном, наиболее простом и универсальном. Пример этой схемы можно подсмотреть тут

Подготовка

  1. Создайте директорию group_vars/all в той директории, откуда вы запускаете ansible (где хранится inventory файл). Yaml-файлы внутри этой директории автоматически подгружаются Ansible во время выполнения плейбуков
  2. Создайте файл group_vars/all/vault.yml. В этом файле мы будем хранить зашифрованные переменные
  3. Добавьте туда переменную с именем my_secret_key и значением lala

Теперь перейдем непосредственно к шифрованию. Для этого выполните следующую команду:

ansible-vault encrypt group_vars/all/vault.yml
New Vault password:
Confirm New Vault password:
Encryption successful

Перед шифрованием Ansible запросит пароль, который нужно запомнить или где-то записать, например, в менеджере паролей наподобие keepass. После установки пароля файл окажется зашифрованным. Вот как теперь выглядит его содержимое:

$ANSIBLE_VAULT;1.1;AES256
66353133343061653262393732666166313962303936626431303464363563663534386534373237
3034636362613338353739323131616465303762333431300a383838383937623565666436616162
63623934323662313466643839643466623635366138666136333361316432376464633639333862
3938323664663435310a336666666565376562363565643965346231643133333937376238326537
3539

Однажды зашифровав файл, его больше никогда не нужно расшифровывать самостоятельно. Ключевая фишка безопасности здесь в том, что файл всегда остается зашифрован. Расшифровкой занимается сам Ansible и только тогда, когда это нужно. Например во время запуска плейбука:

ansible-playbook -i inventory --ask-vault-pass playbook.yml

Для этого нужно указать опцию --ask-vault-pass. Затем Ansible запросит пароль, которым выполнялось шифрование и расшифрует данные файла. Сам файл останется зашифрованным.

Постоянное копирование пароля может утомить, поэтому существует еще один способ указания пароля. Достаточно положить его в какой-то файл, который исключен из контроля версий и указать к нему путь:

# внутри файла должен быть только пароль
ansible-playbook --vault-password-file /path/to/my/vault-password-file ...

Для изменения зашифрованного файла нужно набрать команду:

ansible-vault edit group_vars/all/vault.yml

Она откроет редактор по умолчанию (значение переменной окружения $EDITOR в системе), в котором отобразится расшифрованное содержимое файла. Файл, при этом, останется зашифрованным. Все это защищает от случайного попадания чувствительных данных в репозиторий в открытом виде.


Самостоятельная работа

Для выполнение этого задания необходимо любое приложение, для которого требуется зашифровать чувствительные данные (токены для внешних сервисов, пароли и так далее). Если у вас нет такого приложения, то используйте Devops Example App.

  1. Создайте плейбук с настройкой окружения для вашего приложения

  2. Подключите к приложению внешний сервис (база данных, сервис мониторинга, коллектор ошибок)

  3. Добавьте деплой и запуск приложения и выполните деплой

  4. Проверьте, что приложение запускается

В результате у вас получится плейбук, который готовит окружение и деплоит приложение, а чувствительные данные будут зашифрованы.


Дополнительные материалы

  1. Ansible Vault

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»