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:
@@ -5,3 +5,7 @@ skip_list:
|
||||
- yaml[line-length]
|
||||
- var-naming[no-role-prefix]
|
||||
- 'ignore-errors'
|
||||
|
||||
exclude_paths:
|
||||
- molecule/universal/
|
||||
- files/playbooks/
|
||||
18
Makefile
18
Makefile
@@ -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)"
|
||||
|
||||
@@ -421,6 +421,9 @@ ansible-template/
|
||||
│ ├── snapshot.sh # Создание снапшотов
|
||||
│ ├── restore.sh # Восстановление снапшотов
|
||||
│ └── cleanup.sh # Очистка лаборатории
|
||||
├── vault/ # Секреты и пароли
|
||||
│ ├── .vault # Пароль для Ansible Vault
|
||||
│ └── secrets.yml # Зашифрованные секреты
|
||||
└── .pre-commit-config.yaml # Pre-commit конфигурация
|
||||
```
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ services:
|
||||
command: sleep infinity
|
||||
environment:
|
||||
DOCKER_HOST: unix:///var/run/docker.sock
|
||||
ANSIBLE_VAULT_PASSWORD_FILE: /ansible/vault-password.txt
|
||||
ANSIBLE_VAULT_PASSWORD_FILE: /ansible/vault/.vault
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./molecule:/ansible/molecule
|
||||
@@ -16,7 +16,8 @@ services:
|
||||
- ./scripts:/ansible/scripts
|
||||
- ./reports:/ansible/reports
|
||||
- ./snapshots:/ansible/snapshots
|
||||
- ./vault-password.txt:/ansible/vault-password.txt
|
||||
- ./vault:/ansible/vault
|
||||
- ./.ansible-lint:/ansible/.ansible-lint
|
||||
# каталог с ролями (локальный или внешний)
|
||||
- ${ROLES_DIR:-./roles}:/ansible/roles:ro
|
||||
working_dir: /ansible
|
||||
|
||||
@@ -223,6 +223,10 @@ skip_list:
|
||||
- yaml[line-length] # Длина строки
|
||||
- var-naming[no-role-prefix] # Префиксы переменных
|
||||
- 'ignore-errors' # Игнорирование ошибок
|
||||
|
||||
exclude_paths:
|
||||
- molecule/universal/ # Исключить файлы Molecule
|
||||
- files/playbooks/ # Исключить playbooks с Docker модулями
|
||||
```
|
||||
|
||||
**Описание пропускаемых правил:**
|
||||
@@ -233,6 +237,10 @@ skip_list:
|
||||
- `var-naming[no-role-prefix]` - не требует префиксов для переменных ролей
|
||||
- `ignore-errors` - позволяет использовать `ignore_errors: yes`
|
||||
|
||||
**Исключенные пути:**
|
||||
- `molecule/universal/` - файлы Molecule с Docker модулями
|
||||
- `files/playbooks/` - playbooks с Docker Compose модулями
|
||||
|
||||
### Port-forward команды
|
||||
|
||||
```bash
|
||||
|
||||
@@ -27,7 +27,7 @@ KIND_VERSION=v0.23.0
|
||||
|
||||
# Пути
|
||||
ROLES_DIR=./roles
|
||||
VAULT_PASSWORD_FILE=vault-password.txt
|
||||
VAULT_PASSWORD_FILE=vault/.vault
|
||||
|
||||
# Переменные для лаборатории
|
||||
LAB_PAUSE_MINUTES=10
|
||||
|
||||
22
files/playbooks/test-vault.yml
Normal file
22
files/playbooks/test-vault.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
# Тестовый playbook для проверки работы с vault
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
- name: Test Vault Integration
|
||||
hosts: localhost
|
||||
gather_facts: no
|
||||
vars_files:
|
||||
- ../../vault/secrets.yml
|
||||
tasks:
|
||||
- name: Display vault variables
|
||||
debug:
|
||||
msg: "Database password: {{ db_password }}"
|
||||
|
||||
- name: Display API key
|
||||
debug:
|
||||
msg: "API key: {{ api_key }}"
|
||||
|
||||
- name: Display GitHub token
|
||||
debug:
|
||||
msg: "GitHub token: {{ github_token }}"
|
||||
@@ -1 +0,0 @@
|
||||
test
|
||||
1
vault/.vault
Normal file
1
vault/.vault
Normal file
@@ -0,0 +1 @@
|
||||
test_password
|
||||
36
vault/secrets.yml
Normal file
36
vault/secrets.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
37313930666665366564356631646336636130366562343435376262666131373338616633646165
|
||||
6232383865363562346664363334666438333438316630370a326532623133653963343230613434
|
||||
38356337383966343732313930616632656635653063343961396539623130636231663433373565
|
||||
6237303562303839630a646530653434616566303136643438356239626561326532383839663534
|
||||
61393164643337653137373437393834623430313937613866303131343061326665333362316333
|
||||
36303435353431313766653563653037393934373537643365313931373336333133633635386633
|
||||
66616331653337333531356432613431653135303134643261336339346538653838303235393332
|
||||
39373538643861653634613231323661366131303237393133653035326431386436653265306437
|
||||
62643266313862623737656164643437616535633438383533346237313364313834383237623265
|
||||
39303064356263666566386532323061646131336632616335626462373264633662616335353462
|
||||
30393664313565396532383965396337616237373864626631333237633263653065626265393264
|
||||
64396464356633333366353537633364643735323439336434386437643430316136613335646232
|
||||
36313462666438626136363334343439333537646461653166313535366361643235326137333163
|
||||
30363632613839653034626664653764376366653064613936353739363663326466303462356533
|
||||
36393932303135643531373432326236653163653835306361363261393137373835623639346464
|
||||
33616238633232373237643564626439653363356635373939333664653864643061643534336565
|
||||
39303366616635313466623634336234386438353262653031356633323036306636333437623263
|
||||
33343863316338356466323334316334313933393730626332373736396234376135623437393662
|
||||
30626263613738373461613933373166353737353538316337633062633861633135643638383031
|
||||
37626464323763376334656363373634343431383936386363623761366536653166353239343332
|
||||
33313435366430666531316131306239643632376262656631396162636233343631336566613531
|
||||
64313136383865326331366466316365646136623736303164373735636366643430343138373138
|
||||
39653533336434333939656361366633376361663266653063666537633261653663363134333562
|
||||
63663562303432323230303065303930343435356433326235323366373662666261313966616639
|
||||
39376131623237323836663735313839333034626163363236313939396638623565363038333432
|
||||
39643630366263613732636462353166626332653234336332366363346262316465353130623130
|
||||
32663061633830373038656539653238393732333964343836653965383131656534386337393335
|
||||
35383135316365393734666136343964393630346137393661643735613863613764313238663665
|
||||
35323664353939303631653835636231323531353863333839306531376337653063373536623833
|
||||
34326534303364383031346137323966353133333138306631323735376561656136376333616261
|
||||
63343435623233623338666337383265353766323666396139633964643563393366656339633736
|
||||
39326261316430313637313230656536323362666361353930353135383737313037316139653964
|
||||
32326230396263383939393961353763323138613230353364313038366165646130303363643239
|
||||
31303930653862323839653330373532646630336565303535306361346235306565613635396366
|
||||
316438396434306663316134316230636462
|
||||
Reference in New Issue
Block a user