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
- Создана роль devops с функциями: * Создание пользователя devops * Генерация безопасного пароля (30 символов) * Настройка SSH доступа по ключу * Добавление в sudoers без пароля * Полная документация и тесты - Оптимизирована структура проекта: * Удален Dockerfile из корня (сборка из dockerfiles/ansible-controller) * Заменены внешние образы на локальные ansible-controller * Обновлен Makefile для использования локальных образов * Зашифрован vault/secrets.yml с помощью ansible-vault - Добавлена документация: * Руководство по работе с vault (docs/vault-guide.md) * Подробная документация роли devops * Примеры использования и тесты - Улучшена безопасность: * Все секреты зашифрованы * Обновлен .gitignore для vault файлов * Добавлены инструкции по безопасности
6.1 KiB
6.1 KiB
Руководство по работе с Ansible Vault
Автор
Сергей Антропов
Сайт: https://devops.org.ru
Описание
Это руководство описывает работу с зашифрованными секретами в Ansible Vault для проекта AnsibleTemplate.
Безопасность
⚠️ ВАЖНО: Зашифрованные файлы содержат секретные данные и должны храниться в безопасности!
Команды для работы с 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/