feat: Убраны emoji из whiptail диалогов и обновлена документация

- Убраны все emoji из whiptail диалогов для лучшей совместимости
- Обновлен README.md с новыми возможностями
- Добавлен раздел с интерактивным интерфейсом
- Добавлен раздел с автоматической инициализацией
- Добавлен раздел с CI/CD командами
- Добавлен раздел с управлением ролями

Изменения в whiptail:
- Убраны emoji из заголовков диалогов
- Убраны emoji из опций меню
- Сохранена функциональность всех диалогов
- Улучшена совместимость с разными терминалами

Обновления документации:
- Добавлен раздел 'Новые возможности'
- Описание интерактивного интерфейса
- Описание автоматической инициализации
- Описание CI/CD команд
- Описание управления ролями
- Обновлен быстрый старт

Преимущества:
- Лучшая совместимость с терминалами
- Чистый интерфейс whiptail
- Обновленная документация
- Сохранены цвета в консольном выводе

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 15:47:11 +03:00
parent c59edae00d
commit 102003bb32
2 changed files with 114 additions and 59 deletions

View File

@@ -475,13 +475,13 @@ menu-lab: check-whiptail ## Меню управления лабораторие
menu-kube: check-whiptail ## Меню управления Kubernetes menu-kube: check-whiptail ## Меню управления Kubernetes
@CHOICE=$$(whiptail --title "Управление Kubernetes" \ @CHOICE=$$(whiptail --title "Управление Kubernetes" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"logs" "📝 Просмотр логов" \ "logs" "Просмотр логов" \
"exec" "🐚 Выполнить команду" \ "exec" "Выполнить команду" \
"port-forward" "🔗 Проброс портов" \ "port-forward" "🔗 Проброс портов" \
"kiali" "🔍 Kiali Dashboard" \ "kiali" "Kiali Dashboard" \
"istio" "🌐 Istio Gateway" \ "istio" "🌐 Istio Gateway" \
"grafana" "📊 Grafana Dashboard" \ "grafana" "Grafana Dashboard" \
"prometheus" "📈 Prometheus" \ "prometheus" "Prometheus" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
3>&1 1>&2 2>&3); \ 3>&1 1>&2 2>&3); \
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \ if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
@@ -545,13 +545,13 @@ menu-kube: check-whiptail ## Меню управления Kubernetes
.PHONY: menu-preset .PHONY: menu-preset
menu-preset: check-whiptail ## Меню управления пресетами menu-preset: check-whiptail ## Меню управления пресетами
@CHOICE=$$(whiptail --title "📋 Управление пресетами" \ @CHOICE=$$(whiptail --title "Управление пресетами" \
--menu "Выберите действие:" 15 50 7 \ --menu "Выберите действие:" 15 50 7 \
"list" "📋 Список пресетов" \ "list" "Список пресетов" \
"create" " Создать пресет" \ "create" " Создать пресет" \
"edit" "✏️ Редактировать пресет" \ "edit" "✏️ Редактировать пресет" \
"test" "🧪 Тестировать пресет" \ "test" "Тестировать пресет" \
"copy" "📋 Копировать пресет" \ "copy" "Копировать пресет" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
3>&1 1>&2 2>&3); \ 3>&1 1>&2 2>&3); \
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \ if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
@@ -560,7 +560,7 @@ menu-preset: check-whiptail ## Меню управления пресетами
echo "$(BLUE)📋 Получение списка пресетов...$(RESET)"; \ echo "$(BLUE)📋 Получение списка пресетов...$(RESET)"; \
PRESET_LIST=$$(make preset list 2>&1); \ PRESET_LIST=$$(make preset list 2>&1); \
if [ $$? -eq 0 ] && [ -n "$$PRESET_LIST" ]; then \ if [ $$? -eq 0 ] && [ -n "$$PRESET_LIST" ]; then \
echo "$$PRESET_LIST" | whiptail --title "📋 Список пресетов" --scrolltext --textbox /dev/stdin 20 70; \ echo "$$PRESET_LIST" | whiptail --title "Список пресетов" --scrolltext --textbox /dev/stdin 20 70; \
else \ else \
whiptail --title "Предупреждение" --msgbox "Пресеты не найдены или недоступны." 8 50; \ whiptail --title "Предупреждение" --msgbox "Пресеты не найдены или недоступны." 8 50; \
fi;; \ fi;; \
@@ -650,15 +650,15 @@ menu-preset: check-whiptail ## Меню управления пресетами
.PHONY: menu-role .PHONY: menu-role
menu-role: check-whiptail ## Меню управления ролями menu-role: check-whiptail ## Меню управления ролями
@CHOICE=$$(whiptail --title "🎭 Управление ролями" \ @CHOICE=$$(whiptail --title "Управление ролями" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"list" "📋 Список ролей" \ "list" "Список ролей" \
"create" " Создать роль" \ "create" " Создать роль" \
"edit" "✏️ Редактировать роль" \ "edit" "✏️ Редактировать роль" \
"test" "🧪 Тестировать роль" \ "test" "Тестировать роль" \
"lint" "🔍 Проверка синтаксиса" \ "lint" "Проверка синтаксиса" \
"deploy" "🚀 Развертывание ролей" \ "deploy" "Развертывание ролей" \
"playbook" "📝 Управление playbooks" \ "playbook" "Управление playbooks" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
3>&1 1>&2 2>&3); \ 3>&1 1>&2 2>&3); \
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \ if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
@@ -667,7 +667,7 @@ menu-role: check-whiptail ## Меню управления ролями
echo "$(BLUE)📋 Получение списка ролей...$(RESET)"; \ echo "$(BLUE)📋 Получение списка ролей...$(RESET)"; \
ROLE_LIST=$$(make role list 2>&1); \ ROLE_LIST=$$(make role list 2>&1); \
if [ $$? -eq 0 ] && [ -n "$$ROLE_LIST" ]; then \ if [ $$? -eq 0 ] && [ -n "$$ROLE_LIST" ]; then \
echo "$$ROLE_LIST" | whiptail --title "📋 Список ролей" --scrolltext --textbox /dev/stdin 20 70; \ echo "$$ROLE_LIST" | whiptail --title "Список ролей" --scrolltext --textbox /dev/stdin 20 70; \
else \ else \
whiptail --title "Предупреждение" --msgbox "Роли не найдены или недоступны." 8 50; \ whiptail --title "Предупреждение" --msgbox "Роли не найдены или недоступны." 8 50; \
fi;; \ fi;; \
@@ -794,7 +794,7 @@ menu-role: check-whiptail ## Меню управления ролями
if [ $$? -eq 0 ]; then \ if [ $$? -eq 0 ]; then \
whiptail --title "Успех" --msgbox "Проверка синтаксиса ролей прошла успешно!" 8 50; \ whiptail --title "Успех" --msgbox "Проверка синтаксиса ролей прошла успешно!" 8 50; \
else \ else \
echo "$$LINT_OUTPUT" | whiptail --title "Ошибки синтаксиса" --scrolltext --textbox /dev/stdin 20 70; \ echo "$$LINT_OUTPUT" | whiptail --title "Ошибки синтаксиса" --scrolltext --textbox /dev/stdin 20 70; \
fi;; \ fi;; \
"deploy") \ "deploy") \
echo "$(BLUE)🚀 Развертывание ролей...$(RESET)"; \ echo "$(BLUE)🚀 Развертывание ролей...$(RESET)"; \
@@ -824,12 +824,12 @@ menu-role: check-whiptail ## Меню управления ролями
.PHONY: menu-vault .PHONY: menu-vault
menu-vault: check-whiptail ## Меню управления vault menu-vault: check-whiptail ## Меню управления vault
@CHOICE=$$(whiptail --title "🔐 Управление vault" \ @CHOICE=$$(whiptail --title "Управление vault" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"view" "👁️ Просмотр секретов" \ "view" "👁️ Просмотр секретов" \
"create" " Создать секрет" \ "create" " Создать секрет" \
"edit" "✏️ Редактировать секрет" \ "edit" "✏️ Редактировать секрет" \
"encrypt" "🔒 Зашифровать файл" \ "encrypt" "Зашифровать файл" \
"decrypt" "🔓 Расшифровать файл" \ "decrypt" "🔓 Расшифровать файл" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
3>&1 1>&2 2>&3); \ 3>&1 1>&2 2>&3); \
@@ -847,7 +847,7 @@ menu-report: check-whiptail ## Меню генерации отчетов
@CHOICE=$$(whiptail --title "Генерация отчетов" \ @CHOICE=$$(whiptail --title "Генерация отчетов" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"html" "📄 HTML отчет" \ "html" "📄 HTML отчет" \
"json" "📋 JSON отчет" \ "json" "JSON отчет" \
"health" "🏥 Отчет о здоровье" \ "health" "🏥 Отчет о здоровье" \
"topology" "🗺️ Топология сети" \ "topology" "🗺️ Топология сети" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
@@ -862,13 +862,13 @@ menu-report: check-whiptail ## Меню генерации отчетов
.PHONY: menu-lint .PHONY: menu-lint
menu-lint: check-whiptail ## Меню проверки синтаксиса menu-lint: check-whiptail ## Меню проверки синтаксиса
@CHOICE=$$(whiptail --title "🔍 Проверка синтаксиса" \ @CHOICE=$$(whiptail --title "Проверка синтаксиса" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"all" "🔍 Проверить все" \ "all" "Проверить все" \
"roles" "🎭 Проверить роли" \ "roles" "Проверить роли" \
"playbooks" "📝 Проверить playbooks" \ "playbooks" "Проверить playbooks" \
"vault" "🔐 Проверить vault" \ "vault" "Проверить vault" \
"secrets" "🔍 Проверить секреты" \ "secrets" "Проверить секреты" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
3>&1 1>&2 2>&3); \ 3>&1 1>&2 2>&3); \
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \ if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
@@ -882,11 +882,11 @@ menu-lint: check-whiptail ## Меню проверки синтаксиса
.PHONY: menu-snapshot .PHONY: menu-snapshot
menu-snapshot: check-whiptail ## Меню снимков лаборатории menu-snapshot: check-whiptail ## Меню снимков лаборатории
@CHOICE=$$(whiptail --title "📸 Снимки лаборатории" \ @CHOICE=$$(whiptail --title "Снимки лаборатории" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"create" "📸 Создать снимок" \ "create" "Создать снимок" \
"restore" "🔄 Восстановить снимок" \ "restore" "🔄 Восстановить снимок" \
"list" "📋 Список снимков" \ "list" "Список снимков" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
3>&1 1>&2 2>&3); \ 3>&1 1>&2 2>&3); \
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \ if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
@@ -898,13 +898,13 @@ menu-snapshot: check-whiptail ## Меню снимков лаборатории
.PHONY: menu-cleanup .PHONY: menu-cleanup
menu-cleanup: check-whiptail ## Меню очистки данных menu-cleanup: check-whiptail ## Меню очистки данных
@CHOICE=$$(whiptail --title "🧹 Очистка данных" \ @CHOICE=$$(whiptail --title "Очистка данных" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"all" "🧹 Очистить все" \ "all" "Очистить все" \
"containers" "🐳 Очистить контейнеры" \ "containers" "🐳 Очистить контейнеры" \
"images" "🖼️ Очистить образы" \ "images" "🖼️ Очистить образы" \
"volumes" "💾 Очистить тома" \ "volumes" "💾 Очистить тома" \
"reports" "📊 Очистить отчеты" \ "reports" "Очистить отчеты" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
3>&1 1>&2 2>&3); \ 3>&1 1>&2 2>&3); \
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \ if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
@@ -918,11 +918,11 @@ menu-cleanup: check-whiptail ## Меню очистки данных
.PHONY: menu-interactive .PHONY: menu-interactive
menu-interactive: check-whiptail ## Меню интерактивных команд menu-interactive: check-whiptail ## Меню интерактивных команд
@CHOICE=$$(whiptail --title "🎯 Интерактивные команды" \ @CHOICE=$$(whiptail --title "Интерактивные команды" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"preset" "📋 Создать пресет" \ "preset" "Создать пресет" \
"role" "🎭 Создать роль" \ "role" "Создать роль" \
"playbook" "📝 Создать playbook" \ "playbook" "Создать playbook" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
3>&1 1>&2 2>&3); \ 3>&1 1>&2 2>&3); \
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \ if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
@@ -934,12 +934,12 @@ menu-interactive: check-whiptail ## Меню интерактивных кома
.PHONY: menu-docs .PHONY: menu-docs
menu-docs: check-whiptail ## Меню документации menu-docs: check-whiptail ## Меню документации
@CHOICE=$$(whiptail --title "📚 Документация" \ @CHOICE=$$(whiptail --title "Документация" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"readme" "📖 README" \ "readme" "📖 README" \
"lab" "🧪 Универсальная лаборатория" \ "lab" "Универсальная лаборатория" \
"presets" "📋 Пресеты" \ "presets" "Пресеты" \
"roles" "🎭 Роли" \ "roles" "Роли" \
"examples" "💡 Примеры" \ "examples" "💡 Примеры" \
"api" "🔧 API Reference" \ "api" "🔧 API Reference" \
"back" "⬅️ Назад" \ "back" "⬅️ Назад" \
@@ -956,10 +956,10 @@ menu-docs: check-whiptail ## Меню документации
.PHONY: menu-help .PHONY: menu-help
menu-help: check-whiptail ## Меню помощи и справки menu-help: check-whiptail ## Меню помощи и справки
@CHOICE=$$(whiptail --title "Помощь и справка" \ @CHOICE=$$(whiptail --title "Помощь и справка" \
--menu "Выберите действие:" 15 50 8 \ --menu "Выберите действие:" 15 50 8 \
"overview" "📋 Обзор проекта" \ "overview" "Обзор проекта" \
"quickstart" "🚀 Быстрый старт" \ "quickstart" "Быстрый старт" \
"commands" "⌨️ Список команд" \ "commands" "⌨️ Список команд" \
"examples" "💡 Примеры использования" \ "examples" "💡 Примеры использования" \
"troubleshooting" "🔧 Решение проблем" \ "troubleshooting" "🔧 Решение проблем" \
@@ -969,10 +969,10 @@ menu-help: check-whiptail ## Меню помощи и справки
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \ if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
case "$$CHOICE" in \ case "$$CHOICE" in \
"overview") \ "overview") \
whiptail --title "📋 Обзор проекта" \ whiptail --title "Обзор проекта" \
--msgbox "Ansible Template - Универсальная лаборатория для тестирования Ansible ролей и playbooks.\n\nОсновные возможности:\n• 🧪 Универсальная лаборатория с Docker\n• ☸️ Kubernetes кластеры (Kind)\n• 📋 Готовые пресеты для разных сценариев\n• 🎭 Управление Ansible ролями\n• 🔐 Безопасное хранение секретов\n• 📊 Генерация отчетов\n• 🎯 Интерактивные команды\n\nАвтор: $(AUTHOR)\nСайт: $(SITE)" 20 70;; \ --msgbox "Ansible Template - Универсальная лаборатория для тестирования Ansible ролей и playbooks.\n\nОсновные возможности:\n• 🧪 Универсальная лаборатория с Docker\n• ☸️ Kubernetes кластеры (Kind)\n• 📋 Готовые пресеты для разных сценариев\n• 🎭 Управление Ansible ролями\n• 🔐 Безопасное хранение секретов\n• 📊 Генерация отчетов\n• 🎯 Интерактивные команды\n\nАвтор: $(AUTHOR)\nСайт: $(SITE)" 20 70;; \
"quickstart") \ "quickstart") \
whiptail --title "🚀 Быстрый старт" \ 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;; \ --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") \ "commands") \
whiptail --title "Список команд" \ whiptail --title "Список команд" \

View File

@@ -11,16 +11,18 @@
### 🎯 Основные возможности ### 🎯 Основные возможности
- **Динамическое создание инфраструктуры** - автоматическое развертывание Docker контейнеров и Kind кластеров - **🎯 Интерактивный интерфейс** - полноценный TUI с whiptail для удобного управления
- **Поддержка различных ОС** - тестирование ролей на Debian и RHEL-подобных системах - **🚀 Автоматическая инициализация** - настройка проекта при первом запуске
- **Docker-in-Docker (DinD)** - изолированные Docker-среды внутри контейнеров - **🧪 Универсальная лаборатория** - автоматическое развертывание Docker контейнеров и Kind кластеров
- **Docker-outside-of-Docker (DOoD)** - использование Docker-демона хоста из контейнера - **☸️ Kubernetes поддержка** - полноценные Kind кластеры с аддонами
- **Kubernetes кластеры** - полноценные Kind кластеры с аддонами - **📋 21 готовый пресет** - от простых до экстремально сложных сценариев
- **Service Mesh** - Istio с Kiali для визуализации - **🎭 Управление ролями** - интерактивное создание и тестирование Ansible ролей
- **Мониторинг** - Prometheus, Grafana, Jaeger для полной наблюдаемости - **🔐 Безопасность vault** - автоматическое управление секретами
- **21 готовый пресет** - от простых до экстремально сложных сценариев - **📊 Красивые отчеты** - HTML отчеты о результатах тестирования
- **HTML отчеты** - красивые отчеты о результатах тестирования - **🔧 CI/CD команды** - автоматизированное тестирование, линтинг и развертывание
- **Снапшоты** - сохранение и восстановление состояния лаборатории - **📸 Снапшоты** - сохранение и восстановление состояния лаборатории
- **🌐 Service Mesh** - Istio с Kiali для визуализации
- **📈 Мониторинг** - Prometheus, Grafana для полной наблюдаемости
## 🚀 Быстрый старт ## 🚀 Быстрый старт
@@ -38,14 +40,15 @@
git clone https://github.com/your-username/ansible-template.git git clone https://github.com/your-username/ansible-template.git
cd ansible-template cd ansible-template
# Инициализировать проект (интерактивная настройка) # Запустить проект (автоматическая инициализация)
make init make
# Команда запросит настройки проекта в интерактивном режиме: # При первом запуске автоматически запустится интерактивная настройка:
# - Название проекта, версия, автор, сайт # - Название проекта, версия, автор, сайт
# - Настройки Docker (образ, сеть) # - Настройки Docker (образ, сеть)
# - Настройки лаборатории (сценарий, пресет) # - Настройки лаборатории (сценарий, пресет)
# - Настройки Kubernetes (контекст, версии Istio/Kind) # - Настройки Kubernetes (контекст, версии Istio/Kind)
# - Пути к папкам и файлам # - Пути к папкам и файлам
# После настройки откроется главное меню
# Установить pre-commit хуки (опционально) # Установить pre-commit хуки (опционально)
make pre-commit-install make pre-commit-install
@@ -134,6 +137,58 @@ make restore # Восстановить снапшот
make cleanup # Очистить лабораторию make cleanup # Очистить лабораторию
``` ```
## 🎯 Новые возможности
### Интерактивный интерфейс
Проект теперь имеет полноценный TUI (Text User Interface) с whiptail:
```bash
# Главное меню (запускается автоматически)
make
# Интерактивные команды
make preset-create-interactive # Создание пресета через диалоги
make role-create-interactive # Создание роли через диалоги
```
### Автоматическая инициализация
При первом запуске проекта автоматически запускается интерактивная настройка:
- Настройка основных параметров проекта
- Конфигурация Docker и лаборатории
- Настройка Kubernetes и мониторинга
- Создание необходимых файлов и папок
### CI/CD команды
Полный набор команд для автоматизированного тестирования:
```bash
# Основные CI/CD команды
make ci-validate # Валидация проекта
make ci-lint # Проверка синтаксиса
make ci-test # Запуск тестов
make ci-deploy # Развертывание
make ci-security # Проверка безопасности
make ci-report # Генерация отчета
make ci-cleanup # Очистка после тестов
# Комбинированные команды
make ci-full # Полный цикл (lint + test + deploy)
make ci-all # Все проверки
```
### Управление ролями
Интерактивное создание и управление Ansible ролями:
- Автоматическое создание структуры роли
- Универсальные задачи для Debian и RHEL
- Создание handlers, defaults, meta файлов
- Интерактивная настройка параметров
## 📚 Документация ## 📚 Документация
### Основные разделы ### Основные разделы