Что такое Ansible Vault

«Что такое Ansible Vault» — вопрос из категории Ansible, который задают на 26% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ansible Vault — это встроенный механизм шифрования для безопасного хранения конфиденциальных данных (паролей, API-ключей, сертификатов) прямо в репозитории с кодом инфраструктуры. Он использует симметричное шифрование AES-256.

Зачем это нужно в DevOps: Без Vault секреты пришлось бы хранить в отдельном, незакоммиченном файле или передавать через ненадежные каналы. Vault позволяет версионировать секреты вместе с плейбуками, обеспечивая их безопасность и воспроизводимость.

Основные команды и использование:

# Создать новый зашифрованный файл переменных
ansible-vault create secrets.yml

# Зашифровать существующий файл
ansible-vault encrypt database_credentials.yml

# Редактировать зашифрованный файл
ansible-vault edit secrets.yml

# Расшифровать файл (с осторожностью!)
ansible-vault decrypt secrets.yml --output=secrets-decrypted.yml

Интеграция в плейбук: В плейбуке вы просто подключаете зашифрованный файл как vars_files:

---
- name: Deploy application with secrets
  hosts: app_servers
  vars_files:
    - vaulted_secrets.yml  # Этот файл зашифрован Vault
  tasks:
    - name: Ensure service is running
      ansible.builtin.systemd:
        name: myapp
        state: started
      environment:
        DB_PASSWORD: "{{ vaulted_db_password }}"

Запуск плейбука с секретами:

# Запрос пароля интерактивно
ansible-playbook site.yml --ask-vault-pass

# Использование файла с паролем (права 600!)
ansible-playbook site.yml --vault-password-file ~/.ansible/vault_pass

# Использование переменной окружения
ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass ansible-playbook site.yml

Best Practice: Никогда не храните пароль от Vault в репозитории. Используйте защищенные секреты CI/CD (например, GitLab CI Variables, GitHub Secrets) для автоматической передачи пароля при запуске плейбуков из пайплайна.