Files
DevOpsLab/docs/vault-guide.md
Сергей Антропов 3f3507e079
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
refactor: переименование проекта из AnsibleTemplate в AnsibleLab
- Обновлены все упоминания AnsibleTemplate на AnsibleLab
- Изменены название проекта в README.md, Makefile и документации
- Обновлены комментарии в CI/CD конфигурациях

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-26 01:02:21 +03:00

6.1 KiB
Raw Blame History

Руководство по работе с Ansible Vault

Автор

Сергей Антропов
Сайт: https://devops.org.ru

Описание

Это руководство описывает работу с зашифрованными секретами в Ansible Vault для проекта AnsibleLab.

Безопасность

⚠️ ВАЖНО: Зашифрованные файлы содержат секретные данные и должны храниться в безопасности!

Команды для работы с Vault

Инициализация Vault

# Создание файла с паролем для vault
make vault init

Основные операции

# Создание нового файла секретов
make vault create

# Редактирование существующих секретов
make vault edit

# Просмотр содержимого секретов
make vault show

# Шифрование существующего файла
make vault encrypt

# Расшифровка файла
make vault decrypt

# Смена пароля шифрования
make vault rekey

# Удаление файла секретов
make vault delete

# Проверка vault файлов
make vault check

Структура файлов

vault/
├── .vault              # Файл с паролем для vault (НЕ коммитится в git)
├── secrets.yml         # Зашифрованный файл с секретами
└── secrets/            # Директория для незашифрованных секретов
    └── *.yml           # Незашифрованные файлы секретов

Примеры использования

1. Создание нового файла секретов

# Создать новый файл
make vault create
# Введите имя файла (без .yml): my-secrets

2. Редактирование секретов

# Редактировать существующий файл
make vault edit
# Введите имя файла (без .yml): secrets

3. Просмотр секретов

# Показать содержимое файла
make vault show
# Введите имя файла (без .yml): secrets

4. Шифрование файла

# Зашифровать незашифрованный файл
make vault encrypt
# Введите имя файла (без .yml): secrets

5. Расшифровка файла

# Расшифровать файл для редактирования
make vault decrypt
# Введите имя файла (без .yml): secrets

Использование в Playbook

Передача пароля vault

# Запуск playbook с паролем vault
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --ask-vault-pass

# Использование файла с паролем
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --vault-password-file vault/.vault

Переменные из vault

# В playbook
- name: "Использование секретов из vault"
  hosts: all
  vars_files:
    - vault/secrets.yml
  tasks:
    - name: "Использование SSH ключа"
      authorized_key:
        user: "{{ devops_user.name }}"
        key: "{{ devops_ssh_keys.public_key }}"

Безопасность и лучшие практики

1. Защита пароля vault

# Установка правильных прав на файл пароля
chmod 600 vault/.vault

# Добавление в .gitignore
echo "vault/.vault" >> .gitignore

2. Ротация паролей

# Смена пароля vault
make vault rekey
# Введите имя файла (без .yml): secrets

3. Резервное копирование

# Создание резервной копии зашифрованного файла
cp vault/secrets.yml vault/secrets.yml.backup

# Создание резервной копии пароля
cp vault/.vault vault/.vault.backup

4. Проверка целостности

# Проверка vault файлов
make vault check

Troubleshooting

Проблема: "Unable to read source file"

# Убедитесь, что файл существует
ls -la vault/*.yml

# Проверьте права доступа
ls -la vault/

Проблема: "Vault password not provided"

# Убедитесь, что файл .vault существует
ls -la vault/.vault

# Проверьте содержимое файла
cat vault/.vault

Проблема: "Invalid vault password"

# Проверьте пароль в файле .vault
cat vault/.vault

# Пересоздайте файл пароля
rm vault/.vault
make vault init

Интеграция с CI/CD

GitHub Actions

# .github/workflows/deploy.yml
- name: "Deploy with Vault"
  run: |
    echo "${{ secrets.VAULT_PASSWORD }}" > vault/.vault
    ansible-playbook -i inventory/hosts.ini roles/deploy.yml --vault-password-file vault/.vault

GitLab CI

# .gitlab-ci.yml
deploy:
  script:
    - echo "$VAULT_PASSWORD" > vault/.vault
    - ansible-playbook -i inventory/hosts.ini roles/deploy.yml --vault-password-file vault/.vault

Мониторинг и логирование

Проверка статуса vault

# Проверка всех vault файлов
make vault check

# Проверка конкретного файла
ansible-vault view vault/secrets.yml --vault-password-file vault/.vault

Логирование операций

# Включение подробного логирования
export ANSIBLE_VERBOSITY=4

# Запуск с логированием
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --vault-password-file vault/.vault -vvv

Поддержка

  • 📧 Email: через сайт https://devops.org.ru
  • 📖 Документация: docs/
  • 🧪 Тесты: roles/*/tests/