feat: улучшения роли devops и тестирования
- Убрана подстановка значений по умолчанию для devops_password и devops_ssh_public_key - Добавлена строгая валидация секретов из vault/secrets.yml с детальными сообщениями об ошибках - Убран подробный вывод установки пакетов в тасках - Исправлена проблема с созданием симлинков в vault/ при тестировании - Обновлена логика загрузки vault переменных в molecule тестах - Добавлена очистка симлинков в destroy.yml для дополнительной безопасности Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
111
Makefile
111
Makefile
@@ -91,7 +91,27 @@ role:
|
||||
-e MOLECULE_EPHEMERAL_DIRECTORY=/tmp/molecule_workspace \
|
||||
-e MOLECULE_VAULT_ENABLED=$${MOLECULE_VAULT_ENABLED:-false} \
|
||||
$(DOCKER_IMAGE) \
|
||||
bash -c "mkdir -p /tmp/molecule_workspace/inventory && cd molecule/default && ansible-playbook -i localhost, create.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && ansible-playbook -i localhost, converge.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini site.yml; ansible-playbook -i localhost, destroy.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace; echo '✅ Тестирование завершено'";; \
|
||||
bash -c " \
|
||||
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 И ПЕРЕМЕННЫХ ==='; \
|
||||
ansible-playbook -i localhost, converge.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && \
|
||||
echo ''; \
|
||||
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 ''; \
|
||||
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" && \
|
||||
echo ''; \
|
||||
echo '=== ОЧИСТКА РЕСУРСОВ ==='; \
|
||||
ansible-playbook -i localhost, destroy.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && \
|
||||
echo '✅ Тестирование завершено'";; \
|
||||
deploy) \
|
||||
echo "🚀 Развертывание ролей на реальные серверы..."; \
|
||||
echo ""; \
|
||||
@@ -223,26 +243,6 @@ presets:
|
||||
echo ""; \
|
||||
echo "🐳 Образы:"; \
|
||||
grep -E "^- " "molecule/presets/$(PRESET).yml" | grep -E "family:" | sed 's/.*family: / - /' || echo "Образы не найдены";; \
|
||||
test) \
|
||||
if [ -z "$(PRESET)" ]; then \
|
||||
echo "❌ Ошибка: Укажите PRESET=имя_пресета"; \
|
||||
echo "💡 Пример: make presets test PRESET=etcd-patroni"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if [ ! -f "molecule/presets/$(PRESET).yml" ]; then \
|
||||
echo "❌ Ошибка: Пресет '$(PRESET)' не найден!"; \
|
||||
echo "💡 Доступные пресеты:"; \
|
||||
make presets list; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "🚀 Тестирование с пресетом: $(PRESET)"; \
|
||||
echo ""; \
|
||||
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-e ANSIBLE_FORCE_COLOR=1 \
|
||||
-e MOLECULE_PRESET=$(PRESET) \
|
||||
$(DOCKER_IMAGE) \
|
||||
bash -c "cd molecule/default && molecule test" || echo "✅ Тестирование завершено";; \
|
||||
*) \
|
||||
echo "🎯 Доступные команды:"; \
|
||||
echo ""; \
|
||||
@@ -253,15 +253,9 @@ presets:
|
||||
echo " 💡 Показывает: описание, хосты, сеть, образы"; \
|
||||
echo " 💡 Требует: PRESET=имя_пресета"; \
|
||||
echo ""; \
|
||||
echo " 🚀 make presets test - запустить тест с preset'ом"; \
|
||||
echo " 💡 Запускает: molecule test с выбранным preset'ом"; \
|
||||
echo " 💡 Требует: PRESET=имя_пресета"; \
|
||||
echo ""; \
|
||||
echo "💡 Примеры:"; \
|
||||
echo " make presets list # показать все preset'ы"; \
|
||||
echo " make presets info PRESET=etcd-patroni # информация о etcd-patroni"; \
|
||||
echo " make presets test PRESET=minimal # тест с minimal preset"; \
|
||||
echo " make presets test PRESET=performance # тест с performance preset";; \
|
||||
echo " make presets info PRESET=etcd-patroni # информация о etcd-patroni";; \
|
||||
esac
|
||||
|
||||
# =============================================================================
|
||||
@@ -1571,12 +1565,6 @@ help:
|
||||
@echo "📋 PRESET'Ы (тестовые окружения):"
|
||||
@echo " make presets list - показать все доступные preset'ы"
|
||||
@echo " make presets info - подробная информация о preset'е"
|
||||
@echo " make presets test - запустить тест с preset'ом"
|
||||
@echo ""
|
||||
@echo "🖼️ СОБСТВЕННЫЕ ОБРАЗЫ (DevOpsLab):"
|
||||
@echo " make custom-images test [minimal|full|performance] - тест с собственными образами"
|
||||
@echo " make custom-images check - проверить наличие собственных образов"
|
||||
@echo " make custom-images build - собрать все образы для тестирования"
|
||||
@echo ""
|
||||
@echo "🐳 DOCKER ОБРАЗЫ (Multi-Arch):"
|
||||
@echo " make docker prepare - подготовка к работе с Docker Hub"
|
||||
@@ -1641,7 +1629,6 @@ help:
|
||||
@echo ""
|
||||
@echo "💡 ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:"
|
||||
@echo " make presets list # показать все preset'ы"
|
||||
@echo " make presets test PRESET=etcd-patroni # тест с etcd-patroni"
|
||||
@echo " make role test minimal # быстрый тест"
|
||||
@echo " make role test all-images # тест всех образов"
|
||||
@echo " make docker setup-builder # настройка multi-arch builder"
|
||||
@@ -1658,60 +1645,6 @@ help:
|
||||
@echo "📖 Подробная справка: make [команда]"
|
||||
@echo "=========================================="
|
||||
|
||||
# =============================================================================
|
||||
# КОМАНДЫ ДЛЯ РАБОТЫ С СОБСТВЕННЫМИ ОБРАЗАМИ
|
||||
# =============================================================================
|
||||
custom-images:
|
||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
||||
test) \
|
||||
echo "🧪 Тестирование с собственными образами DevOpsLab..."; \
|
||||
if [ -z "$(word 3, $(MAKECMDGOALS))" ]; then \
|
||||
echo "💡 Использование: make custom-images test [minimal|full|performance]"; \
|
||||
echo "💡 По умолчанию: minimal"; \
|
||||
./scripts/test-custom-images.sh minimal; \
|
||||
else \
|
||||
./scripts/test-custom-images.sh $(word 3, $(MAKECMDGOALS)); \
|
||||
fi;; \
|
||||
check) \
|
||||
echo "🔍 Проверка наличия собственных образов..."; \
|
||||
./scripts/test-custom-images.sh check;; \
|
||||
build) \
|
||||
echo "🔨 Сборка всех образов для тестирования..."; \
|
||||
$(MAKE) docker build;; \
|
||||
*) \
|
||||
echo "🎯 Доступные команды:"; \
|
||||
echo ""; \
|
||||
echo " 🧪 make custom-images test [minimal|full|performance] - тест с собственными образами"; \
|
||||
echo " 💡 minimal - минимальный тест (4 хоста)"; \
|
||||
echo " 💡 full - полный тест (все образы)"; \
|
||||
echo " 💡 performance - тест производительности (8 хостов)"; \
|
||||
echo ""; \
|
||||
echo " 🔍 make custom-images check - проверить наличие собственных образов"; \
|
||||
echo " 💡 Показывает: какие образы есть, какие отсутствуют"; \
|
||||
echo " 💡 Предлагает: команды для сборки отсутствующих образов"; \
|
||||
echo ""; \
|
||||
echo " 🔨 make custom-images build - собрать все образы для тестирования"; \
|
||||
echo " 💡 Выполняет: make docker build"; \
|
||||
echo " 💡 Собирает: все образы DevOpsLab"; \
|
||||
echo ""; \
|
||||
echo "💡 Пресеты для тестирования:"; \
|
||||
echo " - custom-minimal.yml - минимальный тест (4 хоста)"; \
|
||||
echo " - custom-images.yml - полный тест (все образы)"; \
|
||||
echo " - custom-performance.yml - тест производительности (8 хостов)"; \
|
||||
echo ""; \
|
||||
echo "💡 Собственные образы:"; \
|
||||
echo " - inecs/ansible-lab:ansible-controller-latest"; \
|
||||
echo " - inecs/ansible-lab:alt9-latest"; \
|
||||
echo " - inecs/ansible-lab:alt10-latest"; \
|
||||
echo " - inecs/ansible-lab:astra-linux-latest"; \
|
||||
echo " - inecs/ansible-lab:redos-latest"; \
|
||||
echo " - inecs/ansible-lab:rhel-latest"; \
|
||||
echo " - inecs/ansible-lab:centos-latest"; \
|
||||
echo " - inecs/ansible-lab:alma-latest"; \
|
||||
echo " - inecs/ansible-lab:rocky-latest"; \
|
||||
echo " - inecs/ansible-lab:ubuntu-latest"; \
|
||||
echo " - inecs/ansible-lab:debian-latest";; \
|
||||
esac
|
||||
|
||||
# =============================================================================
|
||||
# АВТОМАТИЗАЦИЯ
|
||||
|
||||
Reference in New Issue
Block a user