Добавлена роль repo для автоматического добавления репозиториев
- Создана новая роль repo для добавления репозиториев на все ОС - Добавлена поддержка Docker, PostgreSQL, Elasticsearch, Patroni репозиториев - Реализована специальная поддержка российских дистрибутивов: - Astra Linux: добавлены репозитории Lab50 и debian-archive-keyring - Alt Linux: добавлены репозитории Sisyphus (alt-sisyphus, classic, contrib) и Autoimports - Обновлена документация README.md с информацией о новой роли - Обновлен .ansible-lint для подавления необходимых правил - Автор: Сергей Антропов, https://devops.org.ru
This commit is contained in:
70
Makefile
70
Makefile
@@ -50,7 +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; \
|
||||
$(MAKE) decrypt-all; \
|
||||
ROLE_NAME="$(word 3, $(MAKECMDGOALS))"; \
|
||||
if [ -z "$$ROLE_NAME" ]; then \
|
||||
echo "🔍 Проверка синтаксиса всех ролей ..."; \
|
||||
@@ -84,7 +84,7 @@ role:
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo ""; \
|
||||
$(MAKE) decrypt; \
|
||||
$(MAKE) decrypt-all; \
|
||||
echo "🔧 Запуск ansible-controller контейнера..."; \
|
||||
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
@@ -95,26 +95,70 @@ role:
|
||||
-e MOLECULE_VAULT_ENABLED=$${MOLECULE_VAULT_ENABLED:-false} \
|
||||
$(DOCKER_IMAGE) \
|
||||
bash -c " \
|
||||
echo '=== СОЗДАНИЕ ТЕСТОВЫХ КОНТЕЙНЕРОВ ==='; \
|
||||
echo -e '\033[33m=== СОЗДАНИЕ ТЕСТОВЫХ КОНТЕЙНЕРОВ ==='; \
|
||||
echo ''; \
|
||||
mkdir -p /tmp/molecule_workspace/inventory && \
|
||||
cd molecule/default && \
|
||||
ansible-playbook -i localhost, create.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && \
|
||||
echo ''; \
|
||||
echo '=== НАСТРОЙКА VAULT И ПЕРЕМЕННЫХ ==='; \
|
||||
echo -e '\033[33m=== НАСТРОЙКА VAULT И ПЕРЕМЕННЫХ ==='; \
|
||||
echo ''; \
|
||||
ansible-playbook -i localhost, converge.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && \
|
||||
echo ''; \
|
||||
echo '=== ПРОВЕРКА ПОДКЛЮЧЕНИЯ К КОНТЕЙНЕРАМ ==='; \
|
||||
echo -e '\033[33m=== ПРОВЕРКА ПОДКЛЮЧЕНИЯ К КОНТЕЙНЕРАМ ==='; \
|
||||
echo ''; \
|
||||
ansible all -i /tmp/molecule_workspace/inventory/hosts.ini -m ping && \
|
||||
echo ''; \
|
||||
echo '=== ЗАПУСК CONVERGE.YML НА ТЕСТОВЫХ КОНТЕЙНЕРАХ ==='; \
|
||||
echo -e '\033[33m=== ЗАПУСК CONVERGE.YML НА ТЕСТОВЫХ КОНТЕЙНЕРАХ ===\033[0m'; \
|
||||
echo ''; \
|
||||
ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini converge.yml && \
|
||||
echo ''; \
|
||||
echo '=== ЗАПУСК ROLES/DEPLOY.YML НА ТЕСТОВЫХ КОНТЕЙНЕРАХ ==='; \
|
||||
echo -e '\033[33m=== ЗАПУСК ROLES/DEPLOY.YML НА ТЕСТОВЫХ КОНТЕЙНЕРАХ ===\033[0m'; \
|
||||
echo ''; \
|
||||
ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini ../../roles/deploy.yml && \
|
||||
echo ''; \
|
||||
echo '=== ОЧИСТКА РЕСУРСОВ ==='; \
|
||||
echo -e '\033[33m=== ОЧИСТКА РЕСУРСОВ ==='; \
|
||||
echo ''; \
|
||||
ansible-playbook -i localhost, destroy.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && \
|
||||
echo ''; \
|
||||
echo '✅ Тестирование завершено'"; \
|
||||
echo ''; \
|
||||
$(MAKE) encrypt-all;; \
|
||||
dryrun) \
|
||||
echo "🔍 Проверка роли на реальных серверах (dry-run)..."; \
|
||||
echo ""; \
|
||||
if [ ! -f "inventory/hosts.ini" ]; then \
|
||||
echo "❌ Ошибка: Файл inventory/hosts.ini не найден!"; \
|
||||
echo "💡 Создайте файл inventory/hosts.ini с вашими серверами"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
ROLE_NAME="$(word 3, $(MAKECMDGOALS))"; \
|
||||
if [ -z "$$ROLE_NAME" ]; then \
|
||||
echo "❌ Укажите имя роли для проверки"; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles/ | grep -v "\.yml$$" | sed 's/^/ - /'; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if [ ! -d "roles/$$ROLE_NAME" ]; then \
|
||||
echo "❌ Роль '$$ROLE_NAME' не найдена в roles/"; \
|
||||
echo "📋 Доступные роли:"; \
|
||||
ls -1 roles/ | grep -v "\.yml$$" | sed 's/^/ - /'; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
$(MAKE) decrypt-all; \
|
||||
echo "📋 Проверяемая роль: $$ROLE_NAME"; \
|
||||
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; \
|
||||
echo ""; \
|
||||
echo "🔍 Запуск dry-run проверки роли $$ROLE_NAME..."; \
|
||||
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace \
|
||||
-v ~/.ssh:/root/.ssh:ro \
|
||||
-e ANSIBLE_FORCE_COLOR=1 \
|
||||
$(DOCKER_IMAGE) \
|
||||
bash -c "ansible-playbook -i inventory/hosts.ini roles/$$ROLE_NAME/tasks/main.yml --check --diff"; \
|
||||
echo ""; \
|
||||
echo "✅ Dry-run проверка роли $$ROLE_NAME завершена"; \
|
||||
$(MAKE) encrypt-all;; \
|
||||
deploy) \
|
||||
echo "🚀 Развертывание ролей на реальные серверы..."; \
|
||||
@@ -124,7 +168,7 @@ role:
|
||||
echo "💡 Создайте файл inventory/hosts.ini с вашими серверами"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
$(MAKE) decrypt; \
|
||||
$(MAKE) decrypt-all; \
|
||||
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; \
|
||||
@@ -172,6 +216,13 @@ role:
|
||||
echo " ansible-playbook -i inventory/hosts.ini roles/deploy.yml --check"; \
|
||||
echo " 💡 Документация: docs/deploy-yml-customization.md"; \
|
||||
echo ""; \
|
||||
echo " 🔍 make role dryrun [role] - проверить роль на реальных серверах (dry-run)"; \
|
||||
echo " 💡 Требует: inventory/hosts.ini"; \
|
||||
echo " 💡 Безопасно: не изменяет серверы, только проверяет"; \
|
||||
echo " 💡 Примеры:"; \
|
||||
echo " make role dryrun devops # проверить роль devops"; \
|
||||
echo " make role dryrun docker # проверить роль docker"; \
|
||||
echo ""; \
|
||||
echo " 🔍 make role lint [role] - проверить синтаксис ролей"; \
|
||||
echo " 💡 Использует: ansible-lint"; \
|
||||
echo " 💡 Без параметра: проверяет все роли"; \
|
||||
@@ -1532,6 +1583,7 @@ help:
|
||||
@echo " 💡 Примеры: make role lint, make role lint devops"
|
||||
@echo " make role test [preset] - протестировать роли с preset'ом"
|
||||
@echo " make role deploy - развернуть роли на реальные серверы"
|
||||
@echo " make role dryrun [role] - проверить роль на реальных серверах (dry-run)"
|
||||
@echo " make role list - показать все роли"
|
||||
@echo " make role create - создать новую роль (интерактивно)"
|
||||
@echo " make role delete - удалить роль (интерактивно)"
|
||||
|
||||
Reference in New Issue
Block a user