Ansible Vault

19 September 2013

Когда вы работаете с Ansible, часто возникает необходимость хранить пароли, ключи доступа, токены и другие чувствительные данные. Хранить их в открытом виде в плейбуках или переменных — плохая практика. Здесь на помощь приходит Ansible Vault — встроенный инструмент для шифрования и безопасного хранения секретов.

Что такое Ansible Vault

Ansible Vault позволяет:

  • шифровать отдельные файлы или переменные;
  • безопасно хранить секреты в репозиториях;
  • запускать плейбуки с зашифрованными данными.

Вы можете шифровать любые файлы: YAML, текстовые файлы, конфиги и даже целые плейбуки.

Основные команды

Создание и редактирование файлов

ansible-vault create secret.txt     # Создать новый зашифрованный файл
ansible-vault view secret.txt       # Просмотреть содержимое файла
ansible-vault edit secret.txt       # Отредактировать зашифрованный файл

Шифрование и расшифровка существующих файлов

ansible-vault encrypt file.yml      # Зашифровать файл
ansible-vault decrypt file.yml      # Расшифровать файл

Смена пароля шифрования

ansible-vault rekey secret.txt      # Поменять пароль у файла

Использование с плейбуками

Чтобы запустить плейбук, использующий зашифрованные переменные:

ansible-playbook encryptedplaybook.yml --ask-vault-pass

Или указать файл с паролем:

ansible-playbook encryptedplaybook.yml --vault-password-file my.pass

Шифруем отдельные строки

Иногда нужно зашифровать только одну переменную, а не весь файл. Для этого используется encrypt_string:

# Вводим строку в stdin для шифрования
echo -n "SECRET" | ansible-vault encrypt_string

Можно сразу задать имя переменной, чтобы получить готовый YAML:

echo -n "mypassword" | ansible-vault encrypt_string --stdin-name "DB_PASSWORD"

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

DB_PASSWORD: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          616263646566...

Важные рекомендации

  1. Один пароль на несколько секретов. Если в одном файле шифруется несколько переменных, используйте один пароль ко всем. Ansible Vault применяет единый пароль к файлу, и разные пароли в одном файле не поддерживаются.
  2. Хранение паролей. Можно хранить пароль в файле и использовать его через --vault-password-file, чтобы автоматизировать запуск плейбуков.
  3. Любые файлы можно шифровать. Это не обязательно YAML — текстовые конфиги, .env файлы и прочее тоже можно защищать.

Вывод

Ansible Vault — простой, но мощный инструмент для безопасного управления секретами в инфраструктуре. Он позволяет шифровать файлы и строки, интегрируется с плейбуками и поддерживает автоматизацию через файл с паролем. Использование Vault помогает держать ваши пароли и ключи в безопасности и не раскрывать их в git или на серверах.

Чеклист-командник по Ansible Vault

  • ansible-vault create <имя_файла> — создать новый зашифрованный файл
  • ansible-vault view <имя_файла> — посмотреть содержимое файла
  • ansible-vault edit <имя_файла> — редактировать зашифрованный файл
  • ansible-vault encrypt <имя_файла> — зашифровать файл
  • ansible-vault decrypt <имя_файла> — расшифровать файл
  • ansible-vault rekey <имя_файла> — сменить пароль
  • ansible-playbook <плейбук>.yml --ask-vault-pass — запуск плейбука с запросом пароля
  • ansible-playbook <плейбук>.yml --vault-password-file <файл_с_паролем> — запуск плейбука с файлом пароля
  • echo -n "строка" | ansible-vault encrypt_string — зашифровать строку
  • echo -n "строка" | ansible-vault encrypt_string --stdin-name "VAR_NAME" — зашифровать строку с именем переменной

Leave a comment

Popular Posts

Advertisement

Headlines