Если вы работаете с Ansible, рано или поздно возникает вопрос: куда девать пароли, ключи, токены и прочее? Хранить их в открытом виде в репозитории - явно плохая идея. Для этого существует Ansible Vault - встроенный механизм шифрования файлов и переменных.
Vault позволяет безопасно хранить секреты прямо в плейбуках или отдельных файлах, а ansible будет расшифровывать их при выполнении. Все просто, удобно и без лишних зависимостей.
▪️ Шифруем файл. Создадим защищенный файл с переменными:
ansible-vault create secrets.yml
Откроется редактор, куда можно вписать переменные, например:
db_user: admin
db_pass: S3cretP@ss
Файл автоматически сохранится в зашифрованном виде.
▪️ Редактируем зашифрованный файл
ansible-vault edit secrets.yml
▪️ Расшифровка при необходимости. Если нужно временно получить обычный текст:
ansible-vault decrypt secrets.yml
И обратно:
ansible-vault encrypt secrets.yml
▪️ Использование в плейбуках. Зашифрованный файл подключается как обычно:
vars_files:
- secrets.yml
А запуск плейбука выглядит так:
ansible-playbook site.yml --ask-vault-pass
▪️ Частичное шифрование (опционально). Можно зашифровать только нужные переменные:
ansible-vault encrypt_string 'P@ssw0rd!' --name 'db_pass'
#ansible
🧑💻 NetworkAdmin