feat: Убраны emoji из whiptail и добавлена проверка инициализации в команду по умолчанию
- Убраны все emoji из whiptail диалогов для лучшей совместимости - Добавлена команда check-init-and-menu как команда по умолчанию - Автоматическая проверка инициализации при запуске make - Сохранены цвета в консольном выводе для лучшей читаемости Изменения в whiptail: - Убраны emoji из заголовков диалогов - Убраны emoji из сообщений - Сохранена функциональность всех диалогов - Улучшена совместимость с разными терминалами Команда по умолчанию: - make без параметров теперь проверяет инициализацию - Автоматический запуск инициализации при первом запуске - Переход к главному меню после инициализации - Нет повторной инициализации после настройки Преимущества: - Лучшая совместимость с терминалами - Автоматическая инициализация при первом запуске - Сохранены цвета в консольном выводе - Упрощенный интерфейс whiptail Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
155
Makefile
155
Makefile
@@ -49,7 +49,7 @@ RESET := \033[0m
|
||||
# =============================================================================
|
||||
|
||||
# Команда по умолчанию - интерактивное меню
|
||||
.DEFAULT_GOAL := menu
|
||||
.DEFAULT_GOAL := check-init-and-menu
|
||||
|
||||
.PHONY: help
|
||||
help: ## Показать справку по всем командам
|
||||
@@ -80,18 +80,18 @@ menu: check-whiptail check-init ## Интерактивное главное м
|
||||
@while true; do \
|
||||
CHOICE=$$(whiptail --title "Ansible Template - Универсальная лаборатория" \
|
||||
--menu "Выберите действие:" 20 60 12 \
|
||||
"lab" "🧪 Управление лабораторией" \
|
||||
"kube" "☸️ Управление Kubernetes" \
|
||||
"preset" "📋 Управление пресетами" \
|
||||
"role" "🎭 Управление ролями" \
|
||||
"vault" "🔐 Управление vault" \
|
||||
"report" "📊 Генерация отчетов" \
|
||||
"lint" "🔍 Проверка синтаксиса" \
|
||||
"snapshot" "📸 Снимки лаборатории" \
|
||||
"cleanup" "🧹 Очистка данных" \
|
||||
"docs" "📚 Документация" \
|
||||
"help" "❓ Помощь и справка" \
|
||||
"exit" "🚪 Выход" \
|
||||
"lab" "Управление лабораторией" \
|
||||
"kube" "Управление Kubernetes" \
|
||||
"preset" "Управление пресетами" \
|
||||
"role" "Управление ролями" \
|
||||
"vault" "Управление vault" \
|
||||
"report" "Генерация отчетов" \
|
||||
"lint" "Проверка синтаксиса" \
|
||||
"snapshot" "Снимки лаборатории" \
|
||||
"cleanup" "Очистка данных" \
|
||||
"docs" "Документация" \
|
||||
"help" "Помощь и справка" \
|
||||
"exit" "Выход" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "exit" ]; then \
|
||||
echo "$(YELLOW)👋 До свидания!$(RESET)"; \
|
||||
@@ -116,6 +116,9 @@ menu: check-whiptail check-init ## Интерактивное главное м
|
||||
# ПРОВЕРКИ ИНИЦИАЛИЗАЦИИ
|
||||
# =============================================================================
|
||||
|
||||
.PHONY: check-init-and-menu
|
||||
check-init-and-menu: check-init menu ## Проверить инициализацию и запустить меню
|
||||
|
||||
.PHONY: check-init
|
||||
check-init: ## Проверить инициализацию проекта
|
||||
@if [ ! -f .env ] || [ ! -f vault/.vault ] || [ ! -d molecule/presets ]; then \
|
||||
@@ -259,74 +262,74 @@ init-interactive: ## Интерактивная инициализация пр
|
||||
|
||||
.PHONY: menu-lab
|
||||
menu-lab: check-whiptail ## Меню управления лабораторией
|
||||
@CHOICE=$$(whiptail --title "🧪 Управление лабораторией" \
|
||||
@CHOICE=$$(whiptail --title "Управление лабораторией" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"up" "🚀 Запустить лабораторию" \
|
||||
"down" "🛑 Остановить лабораторию" \
|
||||
"test" "🧪 Тестировать лабораторию" \
|
||||
"destroy" "💥 Уничтожить лабораторию" \
|
||||
"status" "📊 Статус лаборатории" \
|
||||
"logs" "📝 Просмотр логов" \
|
||||
"shell" "🐚 Подключиться к контейнеру" \
|
||||
"back" "⬅️ Назад" \
|
||||
"up" "Запустить лабораторию" \
|
||||
"down" "Остановить лабораторию" \
|
||||
"test" "Тестировать лабораторию" \
|
||||
"destroy" "Уничтожить лабораторию" \
|
||||
"status" "Статус лаборатории" \
|
||||
"logs" "Просмотр логов" \
|
||||
"shell" "Подключиться к контейнеру" \
|
||||
"back" "Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
case "$$CHOICE" in \
|
||||
"up") \
|
||||
echo "$(BLUE)🚀 Запуск лаборатории...$(RESET)"; \
|
||||
if make lab up; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Лаборатория успешно запущена!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Лаборатория успешно запущена!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при запуске лаборатории. Проверьте логи." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при запуске лаборатории. Проверьте логи." 8 50; \
|
||||
fi;; \
|
||||
"down") \
|
||||
echo "$(BLUE)🛑 Остановка лаборатории...$(RESET)"; \
|
||||
if make lab down; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Лаборатория успешно остановлена!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Лаборатория успешно остановлена!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при остановке лаборатории." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при остановке лаборатории." 8 50; \
|
||||
fi;; \
|
||||
"test") \
|
||||
echo "$(BLUE)🧪 Тестирование лаборатории...$(RESET)"; \
|
||||
if make lab test; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Тесты лаборатории прошли успешно!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Тесты лаборатории прошли успешно!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Тесты лаборатории не прошли. Проверьте логи." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Тесты лаборатории не прошли. Проверьте логи." 8 50; \
|
||||
fi;; \
|
||||
"destroy") \
|
||||
if whiptail --title "⚠️ Подтверждение" --yesno "Вы уверены, что хотите уничтожить лабораторию? Это действие необратимо!" 8 50; then \
|
||||
if whiptail --title "Подтверждение" --yesno "Вы уверены, что хотите уничтожить лабораторию? Это действие необратимо!" 8 50; then \
|
||||
echo "$(BLUE)💥 Уничтожение лаборатории...$(RESET)"; \
|
||||
if make lab destroy; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Лаборатория успешно уничтожена!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Лаборатория успешно уничтожена!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при уничтожении лаборатории." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при уничтожении лаборатории." 8 50; \
|
||||
fi; \
|
||||
fi;; \
|
||||
"status") \
|
||||
echo "$(BLUE)📊 Проверка статуса лаборатории...$(RESET)"; \
|
||||
STATUS_OUTPUT=$$(make lab status 2>&1); \
|
||||
if [ $$? -eq 0 ] && [ -n "$$STATUS_OUTPUT" ]; then \
|
||||
whiptail --title "📊 Статус лаборатории" --msgbox "$$STATUS_OUTPUT" 15 70; \
|
||||
whiptail --title "Статус лаборатории" --msgbox "$$STATUS_OUTPUT" 15 70; \
|
||||
else \
|
||||
whiptail --title "⚠️ Предупреждение" --msgbox "Лаборатория не запущена или статус недоступен." 8 50; \
|
||||
whiptail --title "Предупреждение" --msgbox "Лаборатория не запущена или статус недоступен." 8 50; \
|
||||
fi;; \
|
||||
"logs") \
|
||||
echo "$(BLUE)📝 Получение логов лаборатории...$(RESET)"; \
|
||||
LOGS_OUTPUT=$$(make lab logs 2>&1); \
|
||||
if [ $$? -eq 0 ] && [ -n "$$LOGS_OUTPUT" ]; then \
|
||||
echo "$$LOGS_OUTPUT" | whiptail --title "📝 Логи лаборатории" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
echo "$$LOGS_OUTPUT" | whiptail --title "Логи лаборатории" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
else \
|
||||
whiptail --title "⚠️ Предупреждение" --msgbox "Логи недоступны. Лаборатория может быть не запущена." 8 50; \
|
||||
whiptail --title "Предупреждение" --msgbox "Логи недоступны. Лаборатория может быть не запущена." 8 50; \
|
||||
fi;; \
|
||||
"shell") \
|
||||
echo "$(BLUE)🐚 Подключение к контейнеру...$(RESET)"; \
|
||||
whiptail --title "🐚 Shell" --msgbox "Подключение к контейнеру. Используйте Ctrl+D для выхода." 8 50; \
|
||||
whiptail --title "Shell" --msgbox "Подключение к контейнеру. Используйте Ctrl+D для выхода." 8 50; \
|
||||
make lab shell;; \
|
||||
esac
|
||||
|
||||
.PHONY: menu-kube
|
||||
menu-kube: check-whiptail ## Меню управления Kubernetes
|
||||
@CHOICE=$$(whiptail --title "☸️ Управление Kubernetes" \
|
||||
@CHOICE=$$(whiptail --title "Управление Kubernetes" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"logs" "📝 Просмотр логов" \
|
||||
"exec" "🐚 Выполнить команду" \
|
||||
@@ -343,9 +346,9 @@ menu-kube: check-whiptail ## Меню управления Kubernetes
|
||||
echo "$(BLUE)📝 Получение логов Kubernetes...$(RESET)"; \
|
||||
KUBE_LOGS=$$(make kube logs 2>&1); \
|
||||
if [ $$? -eq 0 ] && [ -n "$$KUBE_LOGS" ]; then \
|
||||
echo "$$KUBE_LOGS" | whiptail --title "📝 Логи Kubernetes" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
echo "$$KUBE_LOGS" | whiptail --title "Логи Kubernetes" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
else \
|
||||
whiptail --title "⚠️ Предупреждение" --msgbox "Логи Kubernetes недоступны. Кластер может быть не запущен." 8 50; \
|
||||
whiptail --title "Предупреждение" --msgbox "Логи Kubernetes недоступны. Кластер может быть не запущен." 8 50; \
|
||||
fi;; \
|
||||
"exec") \
|
||||
COMMAND=$$(whiptail --inputbox "Введите команду для выполнения в кластере:" 8 50 "kubectl get pods" 3>&1 1>&2 2>&3); \
|
||||
@@ -353,9 +356,9 @@ menu-kube: check-whiptail ## Меню управления Kubernetes
|
||||
echo "$(BLUE)🐚 Выполнение команды: $$COMMAND$(RESET)"; \
|
||||
EXEC_OUTPUT=$$(make kube exec CMD="$$COMMAND" 2>&1); \
|
||||
if [ $$? -eq 0 ] && [ -n "$$EXEC_OUTPUT" ]; then \
|
||||
echo "$$EXEC_OUTPUT" | whiptail --title "🐚 Результат выполнения" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
echo "$$EXEC_OUTPUT" | whiptail --title "Результат выполнения" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при выполнении команды в кластере." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при выполнении команды в кластере." 8 50; \
|
||||
fi; \
|
||||
fi;; \
|
||||
"port-forward") \
|
||||
@@ -369,30 +372,30 @@ menu-kube: check-whiptail ## Меню управления Kubernetes
|
||||
"kiali") \
|
||||
echo "$(BLUE)🔍 Запуск Kiali Dashboard...$(RESET)"; \
|
||||
if make kube kiali; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Kiali Dashboard доступен по адресу: http://localhost:20001" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Kiali Dashboard доступен по адресу: http://localhost:20001" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при запуске Kiali Dashboard." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при запуске Kiali Dashboard." 8 50; \
|
||||
fi;; \
|
||||
"istio") \
|
||||
echo "$(BLUE)🌐 Запуск Istio Gateway...$(RESET)"; \
|
||||
if make kube istio; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Istio Gateway доступен по адресу: http://localhost:8080" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Istio Gateway доступен по адресу: http://localhost:8080" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при запуске Istio Gateway." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при запуске Istio Gateway." 8 50; \
|
||||
fi;; \
|
||||
"grafana") \
|
||||
echo "$(BLUE)📊 Запуск Grafana Dashboard...$(RESET)"; \
|
||||
if make kube grafana; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Grafana Dashboard доступен по адресу: http://localhost:3000" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Grafana Dashboard доступен по адресу: http://localhost:3000" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при запуске Grafana Dashboard." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при запуске Grafana Dashboard." 8 50; \
|
||||
fi;; \
|
||||
"prometheus") \
|
||||
echo "$(BLUE)📈 Запуск Prometheus...$(RESET)"; \
|
||||
if make kube prometheus; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Prometheus доступен по адресу: http://localhost:9090" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Prometheus доступен по адресу: http://localhost:9090" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при запуске Prometheus." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при запуске Prometheus." 8 50; \
|
||||
fi;; \
|
||||
esac
|
||||
|
||||
@@ -415,7 +418,7 @@ menu-preset: check-whiptail ## Меню управления пресетами
|
||||
if [ $$? -eq 0 ] && [ -n "$$PRESET_LIST" ]; then \
|
||||
echo "$$PRESET_LIST" | whiptail --title "📋 Список пресетов" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
else \
|
||||
whiptail --title "⚠️ Предупреждение" --msgbox "Пресеты не найдены или недоступны." 8 50; \
|
||||
whiptail --title "Предупреждение" --msgbox "Пресеты не найдены или недоступны." 8 50; \
|
||||
fi;; \
|
||||
"create") \
|
||||
echo "$(CYAN)🎯 Создание нового пресета лаборатории$(RESET)"; \
|
||||
@@ -460,15 +463,15 @@ menu-preset: check-whiptail ## Меню управления пресетами
|
||||
echo " istio: $$(echo $$FEATURES | grep -q istio && echo 'true' || echo 'false')" >> molecule/presets/$$PRESET_NAME.yml; \
|
||||
echo " monitoring: $$(echo $$FEATURES | grep -q monitoring && echo 'true' || echo 'false')" >> molecule/presets/$$PRESET_NAME.yml; \
|
||||
echo " chaos: $$(echo $$FEATURES | grep -q chaos && echo 'true' || echo 'false')" >> molecule/presets/$$PRESET_NAME.yml; \
|
||||
whiptail --title "✅ Успех" --msgbox "Пресет $$PRESET_NAME создан: molecule/presets/$$PRESET_NAME.yml\n\nИспользование: make lab up PRESET=$$PRESET_NAME" 10 70;; \
|
||||
whiptail --title "Успех" --msgbox "Пресет $$PRESET_NAME создан: molecule/presets/$$PRESET_NAME.yml\n\nИспользование: make lab up PRESET=$$PRESET_NAME" 10 70;; \
|
||||
"edit") \
|
||||
PRESET_NAME=$$(whiptail --inputbox "Введите имя пресета для редактирования:" 8 50 "" 3>&1 1>&2 2>&3); \
|
||||
if [ $$? -eq 0 ] && [ -n "$$PRESET_NAME" ]; then \
|
||||
echo "$(BLUE)✏️ Редактирование пресета: $$PRESET_NAME$(RESET)"; \
|
||||
if make preset edit NAME="$$PRESET_NAME"; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Пресет $$PRESET_NAME отредактирован!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Пресет $$PRESET_NAME отредактирован!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при редактировании пресета $$PRESET_NAME." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при редактировании пресета $$PRESET_NAME." 8 50; \
|
||||
fi; \
|
||||
fi;; \
|
||||
"test") \
|
||||
@@ -476,9 +479,9 @@ menu-preset: check-whiptail ## Меню управления пресетами
|
||||
if [ $$? -eq 0 ] && [ -n "$$PRESET_NAME" ]; then \
|
||||
echo "$(BLUE)🧪 Тестирование пресета: $$PRESET_NAME$(RESET)"; \
|
||||
if make preset test NAME="$$PRESET_NAME"; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Пресет $$PRESET_NAME протестирован успешно!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Пресет $$PRESET_NAME протестирован успешно!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при тестировании пресета $$PRESET_NAME." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при тестировании пресета $$PRESET_NAME." 8 50; \
|
||||
fi; \
|
||||
fi;; \
|
||||
"copy") \
|
||||
@@ -487,17 +490,17 @@ menu-preset: check-whiptail ## Меню управления пресетами
|
||||
if [ $$? -eq 0 ] && [ -n "$$SOURCE_NAME" ] && [ -n "$$TARGET_NAME" ]; then \
|
||||
echo "$(BLUE)📋 Копирование пресета: $$SOURCE_NAME -> $$TARGET_NAME$(RESET)"; \
|
||||
if make preset copy SOURCE="$$SOURCE_NAME" TARGET="$$TARGET_NAME"; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Пресет скопирован: $$SOURCE_NAME -> $$TARGET_NAME" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Пресет скопирован: $$SOURCE_NAME -> $$TARGET_NAME" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при копировании пресета." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при копировании пресета." 8 50; \
|
||||
fi; \
|
||||
fi;; \
|
||||
"interactive") \
|
||||
echo "$(BLUE)🎯 Интерактивное создание пресета...$(RESET)"; \
|
||||
if make preset-create-interactive; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Пресет создан интерактивно!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Пресет создан интерактивно!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при интерактивном создании пресета." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при интерактивном создании пресета." 8 50; \
|
||||
fi;; \
|
||||
esac
|
||||
|
||||
@@ -522,7 +525,7 @@ menu-role: check-whiptail ## Меню управления ролями
|
||||
if [ $$? -eq 0 ] && [ -n "$$ROLE_LIST" ]; then \
|
||||
echo "$$ROLE_LIST" | whiptail --title "📋 Список ролей" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
else \
|
||||
whiptail --title "⚠️ Предупреждение" --msgbox "Роли не найдены или недоступны." 8 50; \
|
||||
whiptail --title "Предупреждение" --msgbox "Роли не найдены или недоступны." 8 50; \
|
||||
fi;; \
|
||||
"create") \
|
||||
echo "$(CYAN)🎯 Создание новой Ansible роли$(RESET)"; \
|
||||
@@ -620,15 +623,15 @@ menu-role: check-whiptail ## Меню управления ролями
|
||||
echo " systemd:" >> roles/$$ROLE_NAME/handlers/main.yml; \
|
||||
echo " name: \"{{ $$ROLE_NAME_service }}\"" >> roles/$$ROLE_NAME/handlers/main.yml; \
|
||||
echo " state: restarted" >> roles/$$ROLE_NAME/handlers/main.yml; \
|
||||
whiptail --title "✅ Успех" --msgbox "Роль $$ROLE_NAME создана в roles/$$ROLE_NAME/\n\nСтруктура:\n- tasks/ (основные задачи)\n- handlers/ (обработчики)\n- defaults/ (переменные)\n- meta/ (метаданные)\n\nИспользование: make role test NAME=$$ROLE_NAME" 15 70;; \
|
||||
whiptail --title "Успех" --msgbox "Роль $$ROLE_NAME создана в roles/$$ROLE_NAME/\n\nСтруктура:\n- tasks/ (основные задачи)\n- handlers/ (обработчики)\n- defaults/ (переменные)\n- meta/ (метаданные)\n\nИспользование: make role test NAME=$$ROLE_NAME" 15 70;; \
|
||||
"edit") \
|
||||
ROLE_NAME=$$(whiptail --inputbox "Введите имя роли для редактирования:" 8 50 "" 3>&1 1>&2 2>&3); \
|
||||
if [ $$? -eq 0 ] && [ -n "$$ROLE_NAME" ]; then \
|
||||
echo "$(BLUE)✏️ Редактирование роли: $$ROLE_NAME$(RESET)"; \
|
||||
if make role edit NAME="$$ROLE_NAME"; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Роль $$ROLE_NAME отредактирована!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Роль $$ROLE_NAME отредактирована!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при редактировании роли $$ROLE_NAME." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при редактировании роли $$ROLE_NAME." 8 50; \
|
||||
fi; \
|
||||
fi;; \
|
||||
"test") \
|
||||
@@ -636,42 +639,42 @@ menu-role: check-whiptail ## Меню управления ролями
|
||||
if [ $$? -eq 0 ] && [ -n "$$ROLE_NAME" ]; then \
|
||||
echo "$(BLUE)🧪 Тестирование роли: $$ROLE_NAME$(RESET)"; \
|
||||
if make role test NAME="$$ROLE_NAME"; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Роль $$ROLE_NAME протестирована успешно!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Роль $$ROLE_NAME протестирована успешно!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при тестировании роли $$ROLE_NAME." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при тестировании роли $$ROLE_NAME." 8 50; \
|
||||
fi; \
|
||||
fi;; \
|
||||
"lint") \
|
||||
echo "$(BLUE)🔍 Проверка синтаксиса ролей...$(RESET)"; \
|
||||
LINT_OUTPUT=$$(make role lint 2>&1); \
|
||||
if [ $$? -eq 0 ]; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Проверка синтаксиса ролей прошла успешно!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Проверка синтаксиса ролей прошла успешно!" 8 50; \
|
||||
else \
|
||||
echo "$$LINT_OUTPUT" | whiptail --title "❌ Ошибки синтаксиса" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
fi;; \
|
||||
"deploy") \
|
||||
echo "$(BLUE)🚀 Развертывание ролей...$(RESET)"; \
|
||||
if make role deploy; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Роли успешно развернуты!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Роли успешно развернуты!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при развертывании ролей." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при развертывании ролей." 8 50; \
|
||||
fi;; \
|
||||
"playbook") \
|
||||
ROLE_NAME=$$(whiptail --inputbox "Введите имя роли для управления playbooks:" 8 50 "" 3>&1 1>&2 2>&3); \
|
||||
if [ $$? -eq 0 ] && [ -n "$$ROLE_NAME" ]; then \
|
||||
echo "$(BLUE)📝 Управление playbooks роли: $$ROLE_NAME$(RESET)"; \
|
||||
if make role playbook NAME="$$ROLE_NAME"; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Playbooks роли $$ROLE_NAME обработаны!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Playbooks роли $$ROLE_NAME обработаны!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при обработке playbooks роли $$ROLE_NAME." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при обработке playbooks роли $$ROLE_NAME." 8 50; \
|
||||
fi; \
|
||||
fi;; \
|
||||
"interactive") \
|
||||
echo "$(BLUE)🎯 Интерактивное создание роли...$(RESET)"; \
|
||||
if make role-create-interactive; then \
|
||||
whiptail --title "✅ Успех" --msgbox "Роль создана интерактивно!" 8 50; \
|
||||
whiptail --title "Успех" --msgbox "Роль создана интерактивно!" 8 50; \
|
||||
else \
|
||||
whiptail --title "❌ Ошибка" --msgbox "Ошибка при интерактивном создании роли." 8 50; \
|
||||
whiptail --title "Ошибка" --msgbox "Ошибка при интерактивном создании роли." 8 50; \
|
||||
fi;; \
|
||||
esac
|
||||
|
||||
@@ -697,7 +700,7 @@ menu-vault: check-whiptail ## Меню управления vault
|
||||
|
||||
.PHONY: menu-report
|
||||
menu-report: check-whiptail ## Меню генерации отчетов
|
||||
@CHOICE=$$(whiptail --title "📊 Генерация отчетов" \
|
||||
@CHOICE=$$(whiptail --title "Генерация отчетов" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"html" "📄 HTML отчет" \
|
||||
"json" "📋 JSON отчет" \
|
||||
@@ -828,16 +831,16 @@ menu-help: check-whiptail ## Меню помощи и справки
|
||||
whiptail --title "🚀 Быстрый старт" \
|
||||
--msgbox "Быстрый старт:\n\n1. Инициализация проекта:\n make init\n\n2. Запуск лаборатории:\n make lab up\n\n3. Создание роли:\n make role-create-interactive\n\n4. Создание пресета:\n make preset-create-interactive\n\n5. Генерация отчета:\n make report\n\nВсе команды доступны через интерактивное меню!" 20 70;; \
|
||||
"commands") \
|
||||
whiptail --title "⌨️ Список команд" \
|
||||
whiptail --title "Список команд" \
|
||||
--msgbox "Основные команды:\n\n• make - Главное меню\n• make help - Справка\n• make init - Инициализация\n• make lab up - Запуск лаборатории\n• make lab down - Остановка\n• make lab test - Тестирование\n• make role list - Список ролей\n• make preset list - Список пресетов\n• make vault view - Просмотр секретов\n• make report - Генерация отчета\n• make lint - Проверка синтаксиса\n• make cleanup - Очистка данных" 20 70;; \
|
||||
"examples") \
|
||||
whiptail --title "💡 Примеры использования" \
|
||||
--msgbox "Примеры использования:\n\n1. Создание роли nginx:\n make role-create-interactive\n\n2. Создание пресета для 5 хостов:\n make preset-create-interactive\n\n3. Запуск лаборатории с пресетом:\n make lab up PRESET=my-preset\n\n4. Тестирование роли:\n make role test NAME=nginx\n\n5. Генерация HTML отчета:\n make report" 20 70;; \
|
||||
"troubleshooting") \
|
||||
whiptail --title "🔧 Решение проблем" \
|
||||
whiptail --title "Решение проблем" \
|
||||
--msgbox "Решение проблем:\n\n• whiptail не найден:\n make check-whiptail\n\n• Docker не запускается:\n make lab down && make lab up\n\n• Проблемы с vault:\n make vault view\n\n• Очистка всех данных:\n make cleanup\n\n• Проверка синтаксиса:\n make lint\n\n• Просмотр логов:\n make lab logs" 20 70;; \
|
||||
"about") \
|
||||
whiptail --title "ℹ️ О проекте" \
|
||||
whiptail --title "О проекте" \
|
||||
--msgbox "Ansible Template v$(VERSION)\n\nУниверсальная лаборатория для тестирования Ansible ролей и playbooks с поддержкой Docker, Kubernetes, и множества готовых пресетов.\n\nАвтор: $(AUTHOR)\nСайт: $(SITE)\nЛицензия: MIT\n\nОсобенности:\n• 🎯 Интерактивный интерфейс\n• 🧪 Универсальная лаборатория\n• ☸️ Kubernetes поддержка\n• 📋 21 готовый пресет\n• 🔐 Безопасность vault\n• 📊 Красивые отчеты" 20 70;; \
|
||||
esac
|
||||
|
||||
|
||||
Reference in New Issue
Block a user