Обновление проекта
This commit is contained in:
274
Makefile
274
Makefile
@@ -50,6 +50,7 @@ BASE_IMAGES := altlinux/p9 astralinux/astra-1.7 redos/redos:9 registry.access.re
|
||||
role:
|
||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
||||
lint) \
|
||||
$(MAKE) decrypt; \
|
||||
ROLE_NAME="$(word 3, $(MAKECMDGOALS))"; \
|
||||
if [ -z "$$ROLE_NAME" ]; then \
|
||||
echo "🔍 Проверка синтаксиса всех ролей ..."; \
|
||||
@@ -65,6 +66,7 @@ role:
|
||||
exit 1; \
|
||||
fi; \
|
||||
fi; \
|
||||
$(MAKE) encrypt-all; \
|
||||
echo ""; \
|
||||
echo "✅ Lint завершен";; \
|
||||
test) \
|
||||
@@ -82,6 +84,7 @@ role:
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo ""; \
|
||||
$(MAKE) decrypt; \
|
||||
echo "🔧 Запуск ansible-controller контейнера..."; \
|
||||
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
@@ -103,15 +106,16 @@ role:
|
||||
echo '=== ПРОВЕРКА ПОДКЛЮЧЕНИЯ К КОНТЕЙНЕРАМ ==='; \
|
||||
ansible all -i /tmp/molecule_workspace/inventory/hosts.ini -m ping && \
|
||||
echo ''; \
|
||||
echo '=== ЗАПУСК RUN.YML НА ТЕСТОВЫХ КОНТЕЙНЕРАХ ==='; \
|
||||
ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini run.yml -v -e vault_devops_password="123123" -e vault_devops_ssh_public_key="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBjzRt/b5Xe/tgQS2rvOBXOSBq1hychcnbz6G4m9Ps6hQXCxLA0hcrzPIRGazeWEslqsBynSm4fVJC6zAnExEd7KsNxS5gsMxmcHsghuU6/IA62tP8w8tXKEWaCGMQyfcUO/MIrdEjAg8txl3FIxdlcYwBTLW9nJggOmUn9w1YOA6ECNBDUbTwZC62yomJhQoAK0W+uVkKSLTqRIvd0oZJEF+0dtzBrhhe7cjR6fuoLpkB1/Q9bQImVfAxEiiExhFWFMxcyf4SGxpmsbKI4rJ3eBvsMmhrX76p1bYX4fKGiBaqNyXqThYWYybXfDfaITQR87SIrVt4U4NzS79ZFfQ142VPs+YISiy/+/VKZ1NjHo1fRZJSqBtsWJCsvtuM6C2+dRZ0JqwwMlHKLNhmerYMLJMQxkxdB5jRxafC+3T0aFNIsFIa7MdC8i3WQBk5z5huY5pslkPWnmKTfCi3gLjWNhfW9xEgKAww6hGrZR/zlQXZQrmQ2LGspzXFngd9tmk= linux@key" && \
|
||||
echo '=== ЗАПУСК CONVERGE.YML НА ТЕСТОВЫХ КОНТЕЙНЕРАХ ==='; \
|
||||
ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini converge.yml && \
|
||||
echo ''; \
|
||||
echo '=== ЗАПУСК ROLES/DEPLOY.YML НА ТЕСТОВЫХ КОНТЕЙНЕРАХ ==='; \
|
||||
ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini ../../roles/deploy.yml -v -e vault_devops_password="123123" -e vault_devops_ssh_public_key="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBjzRt/b5Xe/tgQS2rvOBXOSBq1hychcnbz6G4m9Ps6hQXCxLA0hcrzPIRGazeWEslqsBynSm4fVJC6zAnExEd7KsNxS5gsMxmcHsghuU6/IA62tP8w8tXKEWaCGMQyfcUO/MIrdEjAg8txl3FIxdlcYwBTLW9nJggOmUn9w1YOA6ECNBDUbTwZC62yomJhQoAK0W+uVkKSLTqRIvd0oZJEF+0dtzBrhhe7cjR6fuoLpkB1/Q9bQImVfAxEiiExhFWFMxcyf4SGxpmsbKI4rJ3eBvsMmhrX76p1bYX4fKGiBaqNyXqThYWYybXfDfaITQR87SIrVt4U4NzS79ZFfQ142VPs+YISiy/+/VKZ1NjHo1fRZJSqBtsWJCsvtuM6C2+dRZ0JqwwMlHKLNhmerYMLJMQxkxdB5jRxafC+3T0aFNIsFIa7MdC8i3WQBk5z5huY5pslkPWnmKTfCi3gLjWNhfW9xEgKAww6hGrZR/zlQXZQrmQ2LGspzXFngd9tmk= linux@key" && \
|
||||
ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini ../../roles/deploy.yml && \
|
||||
echo ''; \
|
||||
echo '=== ОЧИСТКА РЕСУРСОВ ==='; \
|
||||
ansible-playbook -i localhost, destroy.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && \
|
||||
echo '✅ Тестирование завершено'";; \
|
||||
echo '✅ Тестирование завершено'"; \
|
||||
$(MAKE) encrypt-all;; \
|
||||
deploy) \
|
||||
echo "🚀 Развертывание ролей на реальные серверы..."; \
|
||||
echo ""; \
|
||||
@@ -120,6 +124,7 @@ role:
|
||||
echo "💡 Создайте файл inventory/hosts.ini с вашими серверами"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
$(MAKE) decrypt; \
|
||||
echo "📋 Используется inventory: inventory/hosts.ini"; \
|
||||
echo "📄 Содержимое inventory:"; \
|
||||
docker run --rm -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) cat inventory/hosts.ini || cat inventory/hosts.ini; \
|
||||
@@ -140,7 +145,8 @@ role:
|
||||
bash -c "ansible-playbook -i inventory/hosts.ini roles/deploy.yml"; \
|
||||
else \
|
||||
echo "❌ Развертывание отменено"; \
|
||||
fi;; \
|
||||
fi; \
|
||||
$(MAKE) encrypt-all;; \
|
||||
list) \
|
||||
./scripts/role-manager.sh list;; \
|
||||
create) \
|
||||
@@ -275,66 +281,59 @@ vault:
|
||||
else \
|
||||
echo "✅ Файл vault/.vault уже существует"; \
|
||||
fi;; \
|
||||
create) \
|
||||
if [ ! -f "vault/.vault" ]; then \
|
||||
echo "⚠️ Файл vault/.vault не найден!"; \
|
||||
echo "💡 Сначала создайте файл: make vault init"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "🔐 Создание файла секретов..."; \
|
||||
read -p "Введите имя файла (без .yml): " FILE; \
|
||||
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
|
||||
-e EDITOR=$(EDITOR) \
|
||||
$(DOCKER_IMAGE) \
|
||||
ansible-vault create --encrypt-vault-id default --vault-password-file vault/.vault vault/$$FILE.yml;; \
|
||||
edit) \
|
||||
echo "🔐 Редактирование секретов..."; \
|
||||
ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \
|
||||
echo ""; \
|
||||
read -p "Введите имя файла (без .yml): " FILE; \
|
||||
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
|
||||
-e EDITOR=$(EDITOR) \
|
||||
$(DOCKER_IMAGE) \
|
||||
ansible-vault edit --vault-password-file vault/.vault vault/$$FILE.yml;; \
|
||||
echo "🔐 Редактирование vars/main.yml выбранной роли..."; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\\.yml$$" | sed 's/^/ - /'; \
|
||||
read -p "Введите имя роли: " ROLE; \
|
||||
FILE="roles/$$ROLE/vars/main.yml"; \
|
||||
if [ ! -f "$$FILE" ]; then echo "❌ Файл $$FILE не найден"; exit 1; fi; \
|
||||
$(MAKE) decrypt-role ROLE=$$ROLE; \
|
||||
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
|
||||
-e EDITOR=$(EDITOR) \
|
||||
$(DOCKER_IMAGE) \
|
||||
bash -c 'exec ${EDITOR:-nano} "$1"' _ "$$FILE"; \
|
||||
$(MAKE) encrypt-role ROLE=$$ROLE;; \
|
||||
show) \
|
||||
echo "🔐 Просмотр секретов..."; \
|
||||
ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \
|
||||
echo ""; \
|
||||
read -p "Введите имя файла (без .yml): " FILE; \
|
||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
||||
$(DOCKER_IMAGE) \
|
||||
ansible-vault view --vault-password-file vault/.vault vault/$$FILE.yml;; \
|
||||
delete) \
|
||||
echo "🔐 Удаление секретов..."; \
|
||||
ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \
|
||||
echo ""; \
|
||||
read -p "Введите имя файла (без .yml): " FILE; \
|
||||
rm -f vault/$$FILE.yml;; \
|
||||
echo "🔐 Просмотр vars/main.yml выбранной роли..."; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\\.yml$$" | sed 's/^/ - /'; \
|
||||
read -p "Введите имя роли: " ROLE; \
|
||||
FILE="roles/$$ROLE/vars/main.yml"; \
|
||||
if [ ! -f "$$FILE" ]; then echo "❌ Файл $$FILE не найден"; exit 1; fi; \
|
||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
||||
$(DOCKER_IMAGE) bash -c 'f="$1"; \
|
||||
if grep -q "ANSIBLE_VAULT" "$${f}" 2>/dev/null; then \
|
||||
ansible-vault view --vault-password-file vault/.vault "$${f}"; \
|
||||
else \
|
||||
cat "$${f}"; \
|
||||
fi' _ "$$FILE";; \
|
||||
encrypt) \
|
||||
echo "🔐 Шифрование файла..."; \
|
||||
ls -la vault/*.yml 2>/dev/null || echo "Нет файлов для шифрования"; \
|
||||
echo ""; \
|
||||
read -p "Введите имя файла (без .yml): " FILE; \
|
||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
||||
$(DOCKER_IMAGE) \
|
||||
ansible-vault encrypt --encrypt-vault-id default --vault-password-file vault/.vault vault/$$FILE.yml;; \
|
||||
echo "🔐 Шифрование vars/main.yml выбранной роли..."; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\\.yml$$" | sed 's/^/ - /'; \
|
||||
read -p "Введите имя роли: " ROLE; \
|
||||
$(MAKE) encrypt-role ROLE="$$ROLE";; \
|
||||
decrypt) \
|
||||
echo "🔐 Расшифровка файла..."; \
|
||||
ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \
|
||||
echo ""; \
|
||||
read -p "Введите имя файла (без .yml): " FILE; \
|
||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
||||
$(DOCKER_IMAGE) \
|
||||
ansible-vault decrypt --vault-password-file vault/.vault vault/$$FILE.yml;; \
|
||||
echo "🔓 Расшифровка vars/main.yml выбранной роли..."; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\\.yml$$" | sed 's/^/ - /'; \
|
||||
read -p "Введите имя роли: " ROLE; \
|
||||
$(MAKE) decrypt-role ROLE="$$ROLE";; \
|
||||
rekey) \
|
||||
echo "🔐 Смена пароля..."; \
|
||||
ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \
|
||||
echo ""; \
|
||||
read -p "Введите имя файла (без .yml): " FILE; \
|
||||
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
|
||||
-e EDITOR=$(EDITOR) \
|
||||
$(DOCKER_IMAGE) \
|
||||
ansible-vault rekey --vault-password-file vault/.vault vault/$$FILE.yml;; \
|
||||
echo "🔑 Смена пароля для vars/main.yml..."; \
|
||||
echo "Выберите действие:"; \
|
||||
echo " 1) Сменить пароль для всех ролей"; \
|
||||
echo " 2) Сменить пароль для одной роли"; \
|
||||
read -p "Введите номер (1-2): " CHOICE; \
|
||||
case "$$CHOICE" in \
|
||||
1) $(MAKE) rekey-all;; \
|
||||
2) echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\\.yml$$" | sed 's/^/ - /'; \
|
||||
read -p "Введите имя роли: " ROLE; \
|
||||
$(MAKE) rekey-role ROLE="$$ROLE";; \
|
||||
*) echo "❌ Неверный выбор"; exit 1;; \
|
||||
esac;; \
|
||||
check) \
|
||||
echo "🔍 Проверка vault файлов..."; \
|
||||
if [ ! -d "vault" ]; then \
|
||||
@@ -378,18 +377,12 @@ vault:
|
||||
echo " 🔑 make vault init - инициализировать vault (создать vault/.vault)"; \
|
||||
echo " 💡 Первая команда для настройки vault"; \
|
||||
echo ""; \
|
||||
echo " 🔐 make vault create - создать новый файл секретов"; \
|
||||
echo " 💡 Интерактивное создание зашифрованного файла с nano"; \
|
||||
echo ""; \
|
||||
echo " ✏️ make vault edit - редактировать существующие секреты"; \
|
||||
echo " 💡 Открывает nano для изменения секретов"; \
|
||||
echo ""; \
|
||||
echo " 👁️ make vault show - показать содержимое секретов"; \
|
||||
echo " 💡 Расшифровывает и показывает содержимое"; \
|
||||
echo ""; \
|
||||
echo " 🗑️ make vault delete - удалить файл секретов"; \
|
||||
echo " 💡 Безвозвратное удаление файла"; \
|
||||
echo ""; \
|
||||
echo " 🔒 make vault encrypt - зашифровать существующий файл"; \
|
||||
echo " 💡 Шифрует незашифрованный файл"; \
|
||||
echo ""; \
|
||||
@@ -397,7 +390,7 @@ vault:
|
||||
echo " 💡 Создает незашифрованную копию"; \
|
||||
echo ""; \
|
||||
echo " 🔑 make vault rekey - сменить пароль шифрования"; \
|
||||
echo " 💡 Изменяет пароль для существующего файла с nano"; \
|
||||
echo " 💡 Изменяет пароль для всех или одной роли"; \
|
||||
echo ""; \
|
||||
echo " ✅ make vault check - проверить vault файлы"; \
|
||||
echo " 💡 Проверяет структуру и статус файлов"; \
|
||||
@@ -413,6 +406,7 @@ git:
|
||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
||||
push) \
|
||||
echo "📤 Отправка изменений в репозиторий..."; \
|
||||
$(MAKE) encrypt-all; \
|
||||
if [ -d "vault" ]; then \
|
||||
VAULT_FILES=$$(find vault -maxdepth 1 -type f -name "*.yml" 2>/dev/null); \
|
||||
if [ -n "$$VAULT_FILES" ]; then \
|
||||
@@ -425,6 +419,7 @@ git:
|
||||
done; \
|
||||
fi; \
|
||||
fi; \
|
||||
$(MAKE) decrypt-all; \
|
||||
git add .; \
|
||||
git commit -m "Обновление проекта"; \
|
||||
git push origin main;; \
|
||||
@@ -1593,13 +1588,11 @@ help:
|
||||
@echo ""
|
||||
@echo "🔐 VAULT (управление секретами):"
|
||||
@echo " make vault init - инициализировать vault (создать vault/.vault)"
|
||||
@echo " make vault create - создать новый файл секретов"
|
||||
@echo " make vault edit - редактировать существующие секреты"
|
||||
@echo " make vault show - показать содержимое секретов"
|
||||
@echo " make vault delete - удалить файл секретов"
|
||||
@echo " make vault encrypt - зашифровать файл"
|
||||
@echo " make vault decrypt - расшифровать файл"
|
||||
@echo " make vault rekey - сменить пароль шифрования"
|
||||
@echo " make vault rekey - сменить пароль шифрования (все/одна роль)"
|
||||
@echo " make vault check - проверить vault файлы"
|
||||
@echo " make vault scan - поиск потенциальных секретов"
|
||||
@echo ""
|
||||
@@ -1665,6 +1658,139 @@ setup-cicd:
|
||||
@chmod +x scripts/setup-cicd.sh
|
||||
@./scripts/setup-cicd.sh
|
||||
|
||||
# Вспомогательные функции: шифрование/расшифровка roles/*/vars/main.yml
|
||||
.PHONY: encrypt decrypt rekey-all
|
||||
encrypt-all:
|
||||
@echo "🔐 Шифрование всех roles/*/vars/main.yml (только незашифрованных) ..."
|
||||
@docker run --rm -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) bash -c '\
|
||||
VAULT=vault/.vault; \
|
||||
for f in roles/*/vars/main.yml; do [ -f "$$f" ] || continue; \
|
||||
if ! grep -q "ANSIBLE_VAULT" "$$f" 2>/dev/null; then \
|
||||
ansible-vault encrypt --encrypt-vault-id default --vault-password-file "$$VAULT" "$$f" || true; \
|
||||
printf "✅ Зашифровано: %s\n" "$$f"; \
|
||||
else \
|
||||
printf "ℹ️ Уже зашифровано: %s\n" "$$f"; \
|
||||
fi; \
|
||||
done'
|
||||
|
||||
decrypt-all:
|
||||
@echo "🔓 Расшифровка всех roles/*/vars/main.yml (только зашифрованных) ..."
|
||||
@docker run --rm -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) bash -c '\
|
||||
VAULT=vault/.vault; \
|
||||
for f in roles/*/vars/main.yml; do [ -f "$$f" ] || continue; \
|
||||
if grep -q "ANSIBLE_VAULT" "$$f" 2>/dev/null; then \
|
||||
ansible-vault decrypt --vault-password-file "$$VAULT" "$$f" || true; \
|
||||
printf "✅ Расшифровано: %s\n" "$$f"; \
|
||||
else \
|
||||
printf "ℹ️ Уже расшифровано: %s\n" "$$f"; \
|
||||
fi; \
|
||||
done'
|
||||
|
||||
rekey-all:
|
||||
@echo "🔑 Смена пароля для всех roles/*/vars/main.yml (только зашифрованных) ..."
|
||||
@docker run --rm -it -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) bash -c '\
|
||||
VAULT=vault/.vault; \
|
||||
for f in roles/*/vars/main.yml; do [ -f "$$f" ] || continue; \
|
||||
if grep -q "ANSIBLE_VAULT" "$$f" 2>/dev/null; then \
|
||||
printf "🔑 Смена пароля для: %s\n" "$$f"; \
|
||||
ansible-vault rekey --vault-password-file "$$VAULT" "$$f" || true; \
|
||||
printf "✅ Пароль изменен: %s\n" "$$f"; \
|
||||
else \
|
||||
printf "ℹ️ Пропущено (не зашифровано): %s\n" "$$f"; \
|
||||
fi; \
|
||||
done'
|
||||
|
||||
# Вспомогательные функции: шифрование/расшифровка ТОЛЬКО одной роли
|
||||
.PHONY: encrypt-role decrypt-role rekey-role
|
||||
encrypt-role:
|
||||
@ROLE_NAME="$(ROLE)"; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\.yml$$" | sed 's/^/ - /'; \
|
||||
if [ -z "$$ROLE_NAME" ]; then \
|
||||
read -p "Введите имя роли: " ROLE_NAME; \
|
||||
fi; \
|
||||
if [ ! -d "roles/$$ROLE_NAME" ]; then \
|
||||
echo "❌ Роль '$$ROLE_NAME' не найдена"; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\\.yml$$" | sed 's/^/ - /'; \
|
||||
echo "↩️ Возврат в интерактивный выбор роли для шифрования..."; \
|
||||
$(MAKE) vault encrypt; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
FILE="roles/$$ROLE_NAME/vars/main.yml"; \
|
||||
if [ ! -f "$$FILE" ]; then \
|
||||
echo "❌ Файл $$FILE не найден"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if grep -q "ANSIBLE_VAULT" "$$FILE" 2>/dev/null; then \
|
||||
echo "ℹ️ Уже зашифровано: $$FILE"; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
docker run --rm -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) bash -c '\
|
||||
VAULT=vault/.vault; \
|
||||
ansible-vault encrypt --encrypt-vault-id default --vault-password-file "$$VAULT" "$$1" || true' _ "$$FILE"; \
|
||||
echo "✅ Зашифровано: $$FILE"
|
||||
|
||||
decrypt-role:
|
||||
@ROLE_NAME="$(ROLE)"; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\.yml$$" | sed 's/^/ - /'; \
|
||||
if [ -z "$$ROLE_NAME" ]; then \
|
||||
read -p "Введите имя роли: " ROLE_NAME; \
|
||||
fi; \
|
||||
if [ ! -d "roles/$$ROLE_NAME" ]; then \
|
||||
echo "❌ Роль '$$ROLE_NAME' не найдена"; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\\.yml$$" | sed 's/^/ - /'; \
|
||||
echo "↩️ Возврат в интерактивный выбор роли для расшифровки..."; \
|
||||
$(MAKE) vault decrypt; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
FILE="roles/$$ROLE_NAME/vars/main.yml"; \
|
||||
if [ ! -f "$$FILE" ]; then \
|
||||
echo "❌ Файл $$FILE не найден"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if ! grep -q "ANSIBLE_VAULT" "$$FILE" 2>/dev/null; then \
|
||||
echo "ℹ️ Уже расшифровано: $$FILE"; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
docker run --rm -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) bash -c '\
|
||||
VAULT=vault/.vault; \
|
||||
ansible-vault decrypt --vault-password-file "$$VAULT" "$$1" || true' _ "$$FILE"; \
|
||||
echo "✅ Расшифровано: $$FILE"
|
||||
|
||||
rekey-role:
|
||||
@ROLE_NAME="$(ROLE)"; \
|
||||
echo "🔑 Смена пароля для vars/main.yml выбранной роли..."; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\.yml$$" | sed 's/^/ - /'; \
|
||||
if [ -z "$$ROLE_NAME" ]; then \
|
||||
read -p "Введите имя роли: " ROLE_NAME; \
|
||||
fi; \
|
||||
if [ ! -d "roles/$$ROLE_NAME" ]; then \
|
||||
echo "❌ Роль '$$ROLE_NAME' не найдена"; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles | grep -v "\\.yml$$" | sed 's/^/ - /'; \
|
||||
echo "↩️ Возврат в интерактивный выбор роли для смены пароля..."; \
|
||||
$(MAKE) vault rekey; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
FILE="roles/$$ROLE_NAME/vars/main.yml"; \
|
||||
if [ ! -f "$$FILE" ]; then \
|
||||
echo "❌ Файл $$FILE не найден"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if ! grep -q "ANSIBLE_VAULT" "$$FILE" 2>/dev/null; then \
|
||||
echo "ℹ️ Файл $$FILE не зашифрован, сначала зашифруйте его"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
|
||||
-e EDITOR=$(EDITOR) \
|
||||
$(DOCKER_IMAGE) \
|
||||
ansible-vault rekey --vault-password-file vault/.vault "$$FILE"; \
|
||||
echo "✅ Пароль изменен для: $$FILE"
|
||||
|
||||
# Очистка контейнеров Molecule
|
||||
.PHONY: clean-containers
|
||||
clean-containers:
|
||||
@@ -1680,6 +1806,14 @@ clean-containers:
|
||||
@echo "✅ Очистка завершена"
|
||||
|
||||
# Пустые цели для совместимости
|
||||
.PHONY: encrypt decrypt
|
||||
encrypt:
|
||||
@echo "ℹ️ Команда переименована. Используйте: make encrypt-all или make vault encrypt"
|
||||
@true
|
||||
decrypt:
|
||||
@echo "ℹ️ Команда переименована. Используйте: make decrypt-all или make vault decrypt"
|
||||
@true
|
||||
|
||||
view create edit show delete lint deploy new advanced list info test build push pull clean prepare update run stop purge clean-builder setup-builder diagnose reset-builder build-image:
|
||||
@true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user