Ansible-vault для хранения конфиденциальной информации
Если решение какой-нибудь задачи предполагает наличие конфиденциальной информации (к примеру, доступ в базу данных), неплохой практикой является хранение данной информации в зашифрованном виде. Создавать и управлять шифрованными файлами позволяет утилита командной строки ansible-vault, поставляемая вместе с Ansible.
В результате применения ansible-vault вы сможете «коммитить» зашифрованный файл в систему управления версиями, а прочесть его смогут лишь доверенные пользователи, имеющие пароль дешифрования.
Давайте посмотрим, как это работает.
Команда ниже позволяет шифровать уже существующий файл, при этом вам необходимо будет лишь создать пароль шифрования:
Если нужно создать новый зашифрованный файл:
Если надо расшифровать файл, вводим пароль, который был задействован для шифрования:
Также можно выполнить редактирование зашифрованного файла. По дефолту используется редактор vim, однако его можно переопределить переменной окружения $EDITOR.
Когда нужно отобразить содержимое файла, который вы зашифровали:
Когда вы будете выполнять импорт файла secrets.yml в ваш плейбук, Ansible «зафейлится», ведь он не будет знать, каким образом прочесть зашифрованный вами файл. Чтобы решить проблему, надо указать аргумент командной строки --ask-vault-pass, в результате чего будет предложено ввести пароль для зашифрованного вами файла.
Есть и иной способ: он заключается в хранении пароля непосредственно в файле (файл не должен быть «закоммичен»), при этом потребуется указать путь к файлу с помощью аргумента --vault-password-file. Если файл является исполняемым, Ansible станет запускать его, применяя вывод в качестве пароля.
Если тема ansible-vault вам интересна, самую актуальную и более подробную информацию можно найти в официальной документации.
По материалам статьи «15 Things You Should Know About Ansible».