тест шифрования при пуше
This commit is contained in:
		
							
								
								
									
										84
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								Makefile
									
									
									
									
									
								
							| @@ -321,19 +321,8 @@ vault: | ||||
| 			read -p "Введите имя роли: " ROLE; \ | ||||
| 			$(MAKE) decrypt-role ROLE="$$ROLE";; \ | ||||
| 		rekey) \ | ||||
| 			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;; \ | ||||
| 			echo "🔑 Смена пароля для всех vars/main.yml..."; \ | ||||
| 			$(MAKE) rekey-all;; \ | ||||
| 		check) \ | ||||
| 			echo "🔍 Проверка vault файлов..."; \ | ||||
| 			if [ ! -d "vault" ]; then \ | ||||
| @@ -390,7 +379,7 @@ vault: | ||||
| 			echo "     💡 Создает незашифрованную копию"; \ | ||||
| 			echo ""; \ | ||||
| 			echo "  🔑 make vault rekey     - сменить пароль шифрования"; \ | ||||
| 			echo "     💡 Изменяет пароль для всех или одной роли"; \ | ||||
| 			echo "     💡 Изменяет пароль для всех ролей"; \ | ||||
| 			echo ""; \ | ||||
| 			echo "  ✅ make vault check     - проверить vault файлы"; \ | ||||
| 			echo "     💡 Проверяет структуру и статус файлов"; \ | ||||
| @@ -419,9 +408,10 @@ git: | ||||
| 					done; \ | ||||
| 				fi; \ | ||||
| 			fi; \ | ||||
| 			$(MAKE) decrypt-all; \ | ||||
| 			$(MAKE) encrypt-all; \ | ||||
| 			git add .; \ | ||||
| 			git commit -m "Обновление проекта"; \ | ||||
| 			read -p "Введите сообщение коммита: " COMMIT_MSG; \ | ||||
| 			git commit -m "$$COMMIT_MSG"; \ | ||||
| 			git push origin main;; \ | ||||
| 		pull) \ | ||||
| 			echo "📥 Получение изменений из репозитория..."; \ | ||||
| @@ -1592,7 +1582,7 @@ help: | ||||
| 	@echo "  make vault show          - показать содержимое секретов" | ||||
| 	@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 "" | ||||
| @@ -1687,40 +1677,56 @@ decrypt-all: | ||||
| 		done' | ||||
|  | ||||
| rekey-all: | ||||
| 	@echo "🔑 Смена пароля для всех roles/*/vars/main.yml (только зашифрованных) ..." | ||||
| 	@docker run --rm -it -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) bash -c '\ | ||||
| 		VAULT=vault/.vault; \ | ||||
| 	@echo "🔑 Смена пароля для всех roles/*/vars/main.yml ..." | ||||
| 	@echo "🔍 Проверка статуса шифрования файлов..." | ||||
| 	@UNENCRYPTED_FILES=$$(docker run --rm -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) bash -c '\ | ||||
| 		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"; \ | ||||
| 			if ! grep -q "ANSIBLE_VAULT" "$$f" 2>/dev/null; then \ | ||||
| 				echo "$$f"; \ | ||||
| 			fi; \ | ||||
| 		done' | ||||
| 		done'); \ | ||||
| 	if [ -n "$$UNENCRYPTED_FILES" ]; then \ | ||||
| 		echo "❌ Ошибка: Для смены пароля все файлы должны быть зашифрованы!"; \ | ||||
| 		echo "📋 Незашифрованные файлы:"; \ | ||||
| 		echo "$$UNENCRYPTED_FILES" | sed 's/^/  - /'; \ | ||||
| 		echo ""; \ | ||||
| 		echo "💡 Сначала зашифруйте все файлы командой: make encrypt-all"; \ | ||||
| 		exit 0; \ | ||||
| 	fi; \ | ||||
| 	echo "✅ Все файлы зашифрованы, можно менять пароль"; \ | ||||
| 	echo "📝 Введите новый пароль для vault:"; \ | ||||
| 	read -sp "Новый пароль: " NEW_PASSWORD; \ | ||||
| 	echo ""; \ | ||||
| 	echo "$$NEW_PASSWORD" > vault/.vault.new; \ | ||||
| 	chmod 600 vault/.vault.new; \ | ||||
| 	docker run --rm -it -v "$(PWD):/workspace" -w /workspace $(DOCKER_IMAGE) bash -c '\ | ||||
| 		VAULT=vault/.vault; \ | ||||
| 		NEW_VAULT=vault/.vault.new; \ | ||||
| 		for f in roles/*/vars/main.yml; do [ -f "$$f" ] || continue; \ | ||||
| 			printf "🔑 Смена пароля для: %s\n" "$$f"; \ | ||||
| 			ansible-vault rekey --vault-password-file "$$VAULT" --new-vault-password-file "$$NEW_VAULT" "$$f" || true; \ | ||||
| 			printf "✅ Пароль изменен: %s\n" "$$f"; \ | ||||
| 		done'; \ | ||||
| 	mv vault/.vault.new vault/.vault; \ | ||||
| 	echo "✅ Пароль vault обновлен для всех ролей" | ||||
|  | ||||
| # Вспомогательные функции: шифрование/расшифровка ТОЛЬКО одной роли | ||||
| .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 \ | ||||
| 		echo "📋 Доступные роли:"; \ | ||||
| 		ls -1 roles | grep -v "\.yml$$" | sed 's/^/  - /'; \ | ||||
| 		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; \ | ||||
| 		exit 0; \ | ||||
| 	fi; \ | ||||
| 	if grep -q "ANSIBLE_VAULT" "$$FILE" 2>/dev/null; then \ | ||||
| 		echo "ℹ️  Уже зашифровано: $$FILE"; \ | ||||
| @@ -1733,23 +1739,19 @@ encrypt-role: | ||||
|  | ||||
| decrypt-role: | ||||
| 	@ROLE_NAME="$(ROLE)"; \ | ||||
| 	echo "📋 Доступные роли:"; \ | ||||
| 	ls -1 roles | grep -v "\.yml$$" | sed 's/^/  - /'; \ | ||||
| 	if [ -z "$$ROLE_NAME" ]; then \ | ||||
| 		echo "📋 Доступные роли:"; \ | ||||
| 		ls -1 roles | grep -v "\.yml$$" | sed 's/^/  - /'; \ | ||||
| 		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; \ | ||||
| 		exit 0; \ | ||||
| 	fi; \ | ||||
| 	if ! grep -q "ANSIBLE_VAULT" "$$FILE" 2>/dev/null; then \ | ||||
| 		echo "ℹ️  Уже расшифровано: $$FILE"; \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user