Обновление проекта
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