тест шифрования при пуше

This commit is contained in:
Сергей Антропов
2025-10-30 01:26:48 +03:00
parent 981ede5c94
commit 25d04188b8
4 changed files with 980 additions and 803 deletions

View File

@@ -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"; \