ansible-vault encrypt
Тема дорожной карты · Ansible
ansible-vault encrypt — это команда Ansible Vault, которая шифрует существующий файл на месте с использованием симметричного шифрования AES-256, защищая секреты — пароли, API-ключи и сертификаты, — хранящиеся рядом с playbook в системе контроля версий. Выполнение ansible-vault encrypt group_vars/all/secrets.yml запрашивает пароль vault и перезаписывает файл как зашифрованный блоб, который Ansible прозрачно расшифровывает во время выполнения playbook, если передан --ask-vault-pass или --vault-password-file. Дополнительные команды ansible-vault decrypt, ansible-vault view и ansible-vault edit позволяют просматривать или изменять зашифрованные vault файлы без их постоянной расшифровки. Для команд с несколькими секретами разных уровней доступа ansible-vault encrypt поддерживает несколько vault ID, позволяя использовать отдельные пароли vault для каждой среды и гибко управлять доступом к конфиденциальным данным автоматизации.
Как это работает
ansible-vault encrypt использует Ansible Vault для шифрования at rest: ansible-vault encrypt secrets.yml AES-шифрует файл паролем; ansible-vault edit расшифровывает в памяти для правки; запуск плейбука расшифровывает на лету через --ask-vault-pass или --vault-password-file. Per-variable шифрование (ansible-vault encrypt_string) даёт встроить одно зашифрованное значение в plaintext-файл. Multiple Vault ID (--vault-id prod@prompt) — для per-environment паролей.
Когда применять
Всегда Vault-шифруйте файлы с секретами — пароли, API-ключи, сертификаты. Per-environment Vault ID — чтобы dev и prod credentials шифровались отдельно. Сам Vault-пароль — в secrets-менеджере (Bitwarden, 1Password, Yandex Lockbox) или CI-секрете + --vault-password-file. Для больших флотов — интеграция с HashiCorp Vault (community.hashi_vault).
Типичные ошибки
Ловушки ansible-vault encrypt: коммит файла с Vault-паролем в git ("для удобства"); один Vault-пароль для prod и dev (утечка в dev компрометирует prod); не ротируются Vault-пароли (могут утечь через build-логи годами); encrypt_string inline повсюду вместо одного Vault-файла (каждый секрет требует отдельной перешифровки при ротации ключа).