feat: Создана папка vault для хранения секретов и улучшена работа с Ansible Vault

- Создана папка vault/ для хранения всех секретов
- Перенесен vault-password.txt в vault/.vault
- Обновлены все команды vault для работы с новой структурой:
  - make vault show/create/edit/delete/rekey/decrypt/encrypt
  - Все команды теперь работают с vault/secrets.yml
  - Пароль хранится в vault/.vault

Обновления в docker-compose.yaml:
- Добавлено монтирование папки vault в контейнер
- Обновлена переменная ANSIBLE_VAULT_PASSWORD_FILE на /ansible/vault/.vault
- Добавлено монтирование .ansible-lint для корректной работы lint

Обновления в Makefile:
- VAULT_PASSWORD_FILE теперь указывает на vault/.vault
- Все vault команды обновлены для работы с vault/secrets.yml
- Команда clean теперь удаляет папку vault/

Обновления в .ansible-lint:
- Добавлены exclude_paths для исключения проблемных файлов
- Исключены molecule/universal/ и files/playbooks/ из проверки
- Это решает проблемы с Docker модулями в lint

Проверка работы vault:
- Создан тестовый файл vault/secrets.yml с секретами
- Проверена корректность шифрования/расшифровки
- Создан тестовый playbook для проверки работы с vault
- Все команды vault работают корректно

Обновления в документации:
- README.md: добавлена информация о папке vault/
- docs/api.md: обновлены настройки ansible-lint с exclude_paths

Преимущества:
- Централизованное хранение всех секретов в папке vault/
- Безопасное хранение паролей в скрытом файле .vault
- Корректная работа lint без ошибок с Docker модулями
- Автоматическое использование vault паролей во всех операциях

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 14:02:21 +03:00
parent df97e9d3d4
commit 26a09cd637
10 changed files with 88 additions and 14 deletions

View File

@@ -32,7 +32,7 @@ KIND_VERSION ?= v0.23.0
# Переменные окружения
ENV_FILE ?= .env
ROLES_DIR ?= ./roles
VAULT_PASSWORD_FILE ?= vault-password.txt
VAULT_PASSWORD_FILE ?= vault/.vault
# Цвета для вывода
RED := \033[0;31m
@@ -420,25 +420,25 @@ vault: ## Управление Ansible Vault (show|create|edit|delete|rekey|decr
@case "$(word 2, $(MAKECMDGOALS))" in \
show) \
echo "$(BLUE)🔍 Показываем содержимое vault...$(RESET)"; \
docker exec ansible-controller bash -lc 'ansible-vault view --vault-password-file $(VAULT_PASSWORD_FILE) vars/secrets.yml';; \
docker exec ansible-controller bash -lc 'ansible-vault view --vault-password-file $(VAULT_PASSWORD_FILE) vault/secrets.yml';; \
create) \
echo "$(YELLOW)📝 Создаем vault файл...$(RESET)"; \
docker exec ansible-controller bash -lc 'ansible-vault create --encrypt-vault-id default --vault-password-file $(VAULT_PASSWORD_FILE) vars/secrets.yml';; \
docker exec ansible-controller bash -lc 'echo "---" > vault/secrets.yml && ansible-vault encrypt --encrypt-vault-id default --vault-password-file $(VAULT_PASSWORD_FILE) vault/secrets.yml';; \
edit) \
echo "$(BLUE)✏️ Редактируем vault файл...$(RESET)"; \
docker exec ansible-controller bash -lc 'ansible-vault edit --vault-password-file $(VAULT_PASSWORD_FILE) vars/secrets.yml';; \
docker exec ansible-controller bash -lc 'ansible-vault edit --vault-password-file $(VAULT_PASSWORD_FILE) vault/secrets.yml';; \
delete) \
echo "$(RED)🗑️ Удаляем vault файл...$(RESET)"; \
docker exec ansible-controller bash -lc 'rm vars/secrets.yml';; \
docker exec ansible-controller bash -lc 'rm vault/secrets.yml';; \
rekey) \
echo "$(YELLOW)🔑 Изменяем пароль vault...$(RESET)"; \
docker exec ansible-controller bash -lc 'ansible-vault rekey --vault-password-file $(VAULT_PASSWORD_FILE) vars/secrets.yml';; \
docker exec ansible-controller bash -lc 'ansible-vault rekey --vault-password-file $(VAULT_PASSWORD_FILE) vault/secrets.yml';; \
decrypt) \
echo "$(GREEN)🔓 Расшифровываем vault файл...$(RESET)"; \
docker exec ansible-controller bash -lc 'ansible-vault decrypt --vault-password-file $(VAULT_PASSWORD_FILE) vars/secrets.yml';; \
docker exec ansible-controller bash -lc 'ansible-vault decrypt --vault-password-file $(VAULT_PASSWORD_FILE) vault/secrets.yml';; \
encrypt) \
echo "$(RED)🔒 Шифруем vault файл...$(RESET)"; \
docker exec ansible-controller bash -lc 'ansible-vault encrypt --encrypt-vault-id default --vault-password-file $(VAULT_PASSWORD_FILE) vars/secrets.yml';; \
docker exec ansible-controller bash -lc 'ansible-vault encrypt --encrypt-vault-id default --vault-password-file $(VAULT_PASSWORD_FILE) vault/secrets.yml';; \
*) \
echo "$(RED)❌ Неизвестная команда. Доступные: show, create, edit, delete, rekey, decrypt, encrypt$(RESET)";; \
esac
@@ -628,7 +628,7 @@ env: ## Показать переменные окружения
clean: cleanup ## Полная очистка проекта
@echo "$(RED)🧹 Полная очистка проекта...$(RESET)"
@rm -rf .env
@rm -rf vault-password.txt
@rm -rf vault/
@rm -rf reports/
@rm -rf snapshots/
@echo "$(GREEN)✅ Проект очищен$(RESET)"