feat: добавлена роль devops и оптимизирована структура проекта
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
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 файлов * Добавлены инструкции по безопасности
This commit is contained in:
249
docs/vault-guide.md
Normal file
249
docs/vault-guide.md
Normal file
@@ -0,0 +1,249 @@
|
||||
# Руководство по работе с Ansible Vault
|
||||
|
||||
## Автор
|
||||
Сергей Антропов
|
||||
Сайт: https://devops.org.ru
|
||||
|
||||
## Описание
|
||||
|
||||
Это руководство описывает работу с зашифрованными секретами в Ansible Vault для проекта AnsibleTemplate.
|
||||
|
||||
## Безопасность
|
||||
|
||||
⚠️ **ВАЖНО**: Зашифрованные файлы содержат секретные данные и должны храниться в безопасности!
|
||||
|
||||
## Команды для работы с Vault
|
||||
|
||||
### Инициализация Vault
|
||||
|
||||
```bash
|
||||
# Создание файла с паролем для vault
|
||||
make vault init
|
||||
```
|
||||
|
||||
### Основные операции
|
||||
|
||||
```bash
|
||||
# Создание нового файла секретов
|
||||
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. Создание нового файла секретов
|
||||
|
||||
```bash
|
||||
# Создать новый файл
|
||||
make vault create
|
||||
# Введите имя файла (без .yml): my-secrets
|
||||
```
|
||||
|
||||
### 2. Редактирование секретов
|
||||
|
||||
```bash
|
||||
# Редактировать существующий файл
|
||||
make vault edit
|
||||
# Введите имя файла (без .yml): secrets
|
||||
```
|
||||
|
||||
### 3. Просмотр секретов
|
||||
|
||||
```bash
|
||||
# Показать содержимое файла
|
||||
make vault show
|
||||
# Введите имя файла (без .yml): secrets
|
||||
```
|
||||
|
||||
### 4. Шифрование файла
|
||||
|
||||
```bash
|
||||
# Зашифровать незашифрованный файл
|
||||
make vault encrypt
|
||||
# Введите имя файла (без .yml): secrets
|
||||
```
|
||||
|
||||
### 5. Расшифровка файла
|
||||
|
||||
```bash
|
||||
# Расшифровать файл для редактирования
|
||||
make vault decrypt
|
||||
# Введите имя файла (без .yml): secrets
|
||||
```
|
||||
|
||||
## Использование в Playbook
|
||||
|
||||
### Передача пароля vault
|
||||
|
||||
```bash
|
||||
# Запуск 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
|
||||
|
||||
```yaml
|
||||
# В 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
|
||||
|
||||
```bash
|
||||
# Установка правильных прав на файл пароля
|
||||
chmod 600 vault/.vault
|
||||
|
||||
# Добавление в .gitignore
|
||||
echo "vault/.vault" >> .gitignore
|
||||
```
|
||||
|
||||
### 2. Ротация паролей
|
||||
|
||||
```bash
|
||||
# Смена пароля vault
|
||||
make vault rekey
|
||||
# Введите имя файла (без .yml): secrets
|
||||
```
|
||||
|
||||
### 3. Резервное копирование
|
||||
|
||||
```bash
|
||||
# Создание резервной копии зашифрованного файла
|
||||
cp vault/secrets.yml vault/secrets.yml.backup
|
||||
|
||||
# Создание резервной копии пароля
|
||||
cp vault/.vault vault/.vault.backup
|
||||
```
|
||||
|
||||
### 4. Проверка целостности
|
||||
|
||||
```bash
|
||||
# Проверка vault файлов
|
||||
make vault check
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Проблема: "Unable to read source file"
|
||||
|
||||
```bash
|
||||
# Убедитесь, что файл существует
|
||||
ls -la vault/*.yml
|
||||
|
||||
# Проверьте права доступа
|
||||
ls -la vault/
|
||||
```
|
||||
|
||||
### Проблема: "Vault password not provided"
|
||||
|
||||
```bash
|
||||
# Убедитесь, что файл .vault существует
|
||||
ls -la vault/.vault
|
||||
|
||||
# Проверьте содержимое файла
|
||||
cat vault/.vault
|
||||
```
|
||||
|
||||
### Проблема: "Invalid vault password"
|
||||
|
||||
```bash
|
||||
# Проверьте пароль в файле .vault
|
||||
cat vault/.vault
|
||||
|
||||
# Пересоздайте файл пароля
|
||||
rm vault/.vault
|
||||
make vault init
|
||||
```
|
||||
|
||||
## Интеграция с CI/CD
|
||||
|
||||
### GitHub Actions
|
||||
|
||||
```yaml
|
||||
# .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
|
||||
|
||||
```yaml
|
||||
# .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
|
||||
|
||||
```bash
|
||||
# Проверка всех vault файлов
|
||||
make vault check
|
||||
|
||||
# Проверка конкретного файла
|
||||
ansible-vault view vault/secrets.yml --vault-password-file vault/.vault
|
||||
```
|
||||
|
||||
### Логирование операций
|
||||
|
||||
```bash
|
||||
# Включение подробного логирования
|
||||
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/`
|
||||
Reference in New Issue
Block a user