feat: Убраны emoji из whiptail диалогов и обновлена документация
- Убраны все emoji из whiptail диалогов для лучшей совместимости - Обновлен README.md с новыми возможностями - Добавлен раздел с интерактивным интерфейсом - Добавлен раздел с автоматической инициализацией - Добавлен раздел с CI/CD командами - Добавлен раздел с управлением ролями Изменения в whiptail: - Убраны emoji из заголовков диалогов - Убраны emoji из опций меню - Сохранена функциональность всех диалогов - Улучшена совместимость с разными терминалами Обновления документации: - Добавлен раздел 'Новые возможности' - Описание интерактивного интерфейса - Описание автоматической инициализации - Описание CI/CD команд - Описание управления ролями - Обновлен быстрый старт Преимущества: - Лучшая совместимость с терминалами - Чистый интерфейс whiptail - Обновленная документация - Сохранены цвета в консольном выводе Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
92
Makefile
92
Makefile
@@ -475,13 +475,13 @@ menu-lab: check-whiptail ## Меню управления лабораторие
|
||||
menu-kube: check-whiptail ## Меню управления Kubernetes
|
||||
@CHOICE=$$(whiptail --title "Управление Kubernetes" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"logs" "📝 Просмотр логов" \
|
||||
"exec" "🐚 Выполнить команду" \
|
||||
"logs" "Просмотр логов" \
|
||||
"exec" "Выполнить команду" \
|
||||
"port-forward" "🔗 Проброс портов" \
|
||||
"kiali" "🔍 Kiali Dashboard" \
|
||||
"kiali" "Kiali Dashboard" \
|
||||
"istio" "🌐 Istio Gateway" \
|
||||
"grafana" "📊 Grafana Dashboard" \
|
||||
"prometheus" "📈 Prometheus" \
|
||||
"grafana" "Grafana Dashboard" \
|
||||
"prometheus" "Prometheus" \
|
||||
"back" "⬅️ Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
@@ -545,13 +545,13 @@ menu-kube: check-whiptail ## Меню управления Kubernetes
|
||||
|
||||
.PHONY: menu-preset
|
||||
menu-preset: check-whiptail ## Меню управления пресетами
|
||||
@CHOICE=$$(whiptail --title "📋 Управление пресетами" \
|
||||
@CHOICE=$$(whiptail --title "Управление пресетами" \
|
||||
--menu "Выберите действие:" 15 50 7 \
|
||||
"list" "📋 Список пресетов" \
|
||||
"list" "Список пресетов" \
|
||||
"create" "➕ Создать пресет" \
|
||||
"edit" "✏️ Редактировать пресет" \
|
||||
"test" "🧪 Тестировать пресет" \
|
||||
"copy" "📋 Копировать пресет" \
|
||||
"test" "Тестировать пресет" \
|
||||
"copy" "Копировать пресет" \
|
||||
"back" "⬅️ Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
@@ -560,7 +560,7 @@ menu-preset: check-whiptail ## Меню управления пресетами
|
||||
echo "$(BLUE)📋 Получение списка пресетов...$(RESET)"; \
|
||||
PRESET_LIST=$$(make preset list 2>&1); \
|
||||
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 \
|
||||
whiptail --title "Предупреждение" --msgbox "Пресеты не найдены или недоступны." 8 50; \
|
||||
fi;; \
|
||||
@@ -650,15 +650,15 @@ menu-preset: check-whiptail ## Меню управления пресетами
|
||||
|
||||
.PHONY: menu-role
|
||||
menu-role: check-whiptail ## Меню управления ролями
|
||||
@CHOICE=$$(whiptail --title "🎭 Управление ролями" \
|
||||
@CHOICE=$$(whiptail --title "Управление ролями" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"list" "📋 Список ролей" \
|
||||
"list" "Список ролей" \
|
||||
"create" "➕ Создать роль" \
|
||||
"edit" "✏️ Редактировать роль" \
|
||||
"test" "🧪 Тестировать роль" \
|
||||
"lint" "🔍 Проверка синтаксиса" \
|
||||
"deploy" "🚀 Развертывание ролей" \
|
||||
"playbook" "📝 Управление playbooks" \
|
||||
"test" "Тестировать роль" \
|
||||
"lint" "Проверка синтаксиса" \
|
||||
"deploy" "Развертывание ролей" \
|
||||
"playbook" "Управление playbooks" \
|
||||
"back" "⬅️ Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
@@ -667,7 +667,7 @@ menu-role: check-whiptail ## Меню управления ролями
|
||||
echo "$(BLUE)📋 Получение списка ролей...$(RESET)"; \
|
||||
ROLE_LIST=$$(make role list 2>&1); \
|
||||
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 \
|
||||
whiptail --title "Предупреждение" --msgbox "Роли не найдены или недоступны." 8 50; \
|
||||
fi;; \
|
||||
@@ -794,7 +794,7 @@ menu-role: check-whiptail ## Меню управления ролями
|
||||
if [ $$? -eq 0 ]; then \
|
||||
whiptail --title "Успех" --msgbox "Проверка синтаксиса ролей прошла успешно!" 8 50; \
|
||||
else \
|
||||
echo "$$LINT_OUTPUT" | whiptail --title "❌ Ошибки синтаксиса" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
echo "$$LINT_OUTPUT" | whiptail --title "Ошибки синтаксиса" --scrolltext --textbox /dev/stdin 20 70; \
|
||||
fi;; \
|
||||
"deploy") \
|
||||
echo "$(BLUE)🚀 Развертывание ролей...$(RESET)"; \
|
||||
@@ -824,12 +824,12 @@ menu-role: check-whiptail ## Меню управления ролями
|
||||
|
||||
.PHONY: menu-vault
|
||||
menu-vault: check-whiptail ## Меню управления vault
|
||||
@CHOICE=$$(whiptail --title "🔐 Управление vault" \
|
||||
@CHOICE=$$(whiptail --title "Управление vault" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"view" "👁️ Просмотр секретов" \
|
||||
"create" "➕ Создать секрет" \
|
||||
"edit" "✏️ Редактировать секрет" \
|
||||
"encrypt" "🔒 Зашифровать файл" \
|
||||
"encrypt" "Зашифровать файл" \
|
||||
"decrypt" "🔓 Расшифровать файл" \
|
||||
"back" "⬅️ Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
@@ -847,7 +847,7 @@ menu-report: check-whiptail ## Меню генерации отчетов
|
||||
@CHOICE=$$(whiptail --title "Генерация отчетов" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"html" "📄 HTML отчет" \
|
||||
"json" "📋 JSON отчет" \
|
||||
"json" "JSON отчет" \
|
||||
"health" "🏥 Отчет о здоровье" \
|
||||
"topology" "🗺️ Топология сети" \
|
||||
"back" "⬅️ Назад" \
|
||||
@@ -862,13 +862,13 @@ menu-report: check-whiptail ## Меню генерации отчетов
|
||||
|
||||
.PHONY: menu-lint
|
||||
menu-lint: check-whiptail ## Меню проверки синтаксиса
|
||||
@CHOICE=$$(whiptail --title "🔍 Проверка синтаксиса" \
|
||||
@CHOICE=$$(whiptail --title "Проверка синтаксиса" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"all" "🔍 Проверить все" \
|
||||
"roles" "🎭 Проверить роли" \
|
||||
"playbooks" "📝 Проверить playbooks" \
|
||||
"vault" "🔐 Проверить vault" \
|
||||
"secrets" "🔍 Проверить секреты" \
|
||||
"all" "Проверить все" \
|
||||
"roles" "Проверить роли" \
|
||||
"playbooks" "Проверить playbooks" \
|
||||
"vault" "Проверить vault" \
|
||||
"secrets" "Проверить секреты" \
|
||||
"back" "⬅️ Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
@@ -882,11 +882,11 @@ menu-lint: check-whiptail ## Меню проверки синтаксиса
|
||||
|
||||
.PHONY: menu-snapshot
|
||||
menu-snapshot: check-whiptail ## Меню снимков лаборатории
|
||||
@CHOICE=$$(whiptail --title "📸 Снимки лаборатории" \
|
||||
@CHOICE=$$(whiptail --title "Снимки лаборатории" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"create" "📸 Создать снимок" \
|
||||
"create" "Создать снимок" \
|
||||
"restore" "🔄 Восстановить снимок" \
|
||||
"list" "📋 Список снимков" \
|
||||
"list" "Список снимков" \
|
||||
"back" "⬅️ Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
@@ -898,13 +898,13 @@ menu-snapshot: check-whiptail ## Меню снимков лаборатории
|
||||
|
||||
.PHONY: menu-cleanup
|
||||
menu-cleanup: check-whiptail ## Меню очистки данных
|
||||
@CHOICE=$$(whiptail --title "🧹 Очистка данных" \
|
||||
@CHOICE=$$(whiptail --title "Очистка данных" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"all" "🧹 Очистить все" \
|
||||
"all" "Очистить все" \
|
||||
"containers" "🐳 Очистить контейнеры" \
|
||||
"images" "🖼️ Очистить образы" \
|
||||
"volumes" "💾 Очистить тома" \
|
||||
"reports" "📊 Очистить отчеты" \
|
||||
"reports" "Очистить отчеты" \
|
||||
"back" "⬅️ Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
@@ -918,11 +918,11 @@ menu-cleanup: check-whiptail ## Меню очистки данных
|
||||
|
||||
.PHONY: menu-interactive
|
||||
menu-interactive: check-whiptail ## Меню интерактивных команд
|
||||
@CHOICE=$$(whiptail --title "🎯 Интерактивные команды" \
|
||||
@CHOICE=$$(whiptail --title "Интерактивные команды" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"preset" "📋 Создать пресет" \
|
||||
"role" "🎭 Создать роль" \
|
||||
"playbook" "📝 Создать playbook" \
|
||||
"preset" "Создать пресет" \
|
||||
"role" "Создать роль" \
|
||||
"playbook" "Создать playbook" \
|
||||
"back" "⬅️ Назад" \
|
||||
3>&1 1>&2 2>&3); \
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
@@ -934,12 +934,12 @@ menu-interactive: check-whiptail ## Меню интерактивных кома
|
||||
|
||||
.PHONY: menu-docs
|
||||
menu-docs: check-whiptail ## Меню документации
|
||||
@CHOICE=$$(whiptail --title "📚 Документация" \
|
||||
@CHOICE=$$(whiptail --title "Документация" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"readme" "📖 README" \
|
||||
"lab" "🧪 Универсальная лаборатория" \
|
||||
"presets" "📋 Пресеты" \
|
||||
"roles" "🎭 Роли" \
|
||||
"lab" "Универсальная лаборатория" \
|
||||
"presets" "Пресеты" \
|
||||
"roles" "Роли" \
|
||||
"examples" "💡 Примеры" \
|
||||
"api" "🔧 API Reference" \
|
||||
"back" "⬅️ Назад" \
|
||||
@@ -956,10 +956,10 @@ menu-docs: check-whiptail ## Меню документации
|
||||
|
||||
.PHONY: menu-help
|
||||
menu-help: check-whiptail ## Меню помощи и справки
|
||||
@CHOICE=$$(whiptail --title "❓ Помощь и справка" \
|
||||
@CHOICE=$$(whiptail --title "Помощь и справка" \
|
||||
--menu "Выберите действие:" 15 50 8 \
|
||||
"overview" "📋 Обзор проекта" \
|
||||
"quickstart" "🚀 Быстрый старт" \
|
||||
"overview" "Обзор проекта" \
|
||||
"quickstart" "Быстрый старт" \
|
||||
"commands" "⌨️ Список команд" \
|
||||
"examples" "💡 Примеры использования" \
|
||||
"troubleshooting" "🔧 Решение проблем" \
|
||||
@@ -969,10 +969,10 @@ menu-help: check-whiptail ## Меню помощи и справки
|
||||
if [ $$? -ne 0 ] || [ "$$CHOICE" = "back" ]; then exit 0; fi; \
|
||||
case "$$CHOICE" in \
|
||||
"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;; \
|
||||
"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;; \
|
||||
"commands") \
|
||||
whiptail --title "Список команд" \
|
||||
|
||||
81
README.md
81
README.md
@@ -11,16 +11,18 @@
|
||||
|
||||
### 🎯 Основные возможности
|
||||
|
||||
- **Динамическое создание инфраструктуры** - автоматическое развертывание Docker контейнеров и Kind кластеров
|
||||
- **Поддержка различных ОС** - тестирование ролей на Debian и RHEL-подобных системах
|
||||
- **Docker-in-Docker (DinD)** - изолированные Docker-среды внутри контейнеров
|
||||
- **Docker-outside-of-Docker (DOoD)** - использование Docker-демона хоста из контейнера
|
||||
- **Kubernetes кластеры** - полноценные Kind кластеры с аддонами
|
||||
- **Service Mesh** - Istio с Kiali для визуализации
|
||||
- **Мониторинг** - Prometheus, Grafana, Jaeger для полной наблюдаемости
|
||||
- **21 готовый пресет** - от простых до экстремально сложных сценариев
|
||||
- **HTML отчеты** - красивые отчеты о результатах тестирования
|
||||
- **Снапшоты** - сохранение и восстановление состояния лаборатории
|
||||
- **🎯 Интерактивный интерфейс** - полноценный TUI с whiptail для удобного управления
|
||||
- **🚀 Автоматическая инициализация** - настройка проекта при первом запуске
|
||||
- **🧪 Универсальная лаборатория** - автоматическое развертывание Docker контейнеров и Kind кластеров
|
||||
- **☸️ Kubernetes поддержка** - полноценные Kind кластеры с аддонами
|
||||
- **📋 21 готовый пресет** - от простых до экстремально сложных сценариев
|
||||
- **🎭 Управление ролями** - интерактивное создание и тестирование Ansible ролей
|
||||
- **🔐 Безопасность vault** - автоматическое управление секретами
|
||||
- **📊 Красивые отчеты** - HTML отчеты о результатах тестирования
|
||||
- **🔧 CI/CD команды** - автоматизированное тестирование, линтинг и развертывание
|
||||
- **📸 Снапшоты** - сохранение и восстановление состояния лаборатории
|
||||
- **🌐 Service Mesh** - Istio с Kiali для визуализации
|
||||
- **📈 Мониторинг** - Prometheus, Grafana для полной наблюдаемости
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
@@ -38,14 +40,15 @@
|
||||
git clone https://github.com/your-username/ansible-template.git
|
||||
cd ansible-template
|
||||
|
||||
# Инициализировать проект (интерактивная настройка)
|
||||
make init
|
||||
# Команда запросит настройки проекта в интерактивном режиме:
|
||||
# Запустить проект (автоматическая инициализация)
|
||||
make
|
||||
# При первом запуске автоматически запустится интерактивная настройка:
|
||||
# - Название проекта, версия, автор, сайт
|
||||
# - Настройки Docker (образ, сеть)
|
||||
# - Настройки лаборатории (сценарий, пресет)
|
||||
# - Настройки Kubernetes (контекст, версии Istio/Kind)
|
||||
# - Пути к папкам и файлам
|
||||
# После настройки откроется главное меню
|
||||
|
||||
# Установить pre-commit хуки (опционально)
|
||||
make pre-commit-install
|
||||
@@ -134,6 +137,58 @@ make restore # Восстановить снапшот
|
||||
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 файлов
|
||||
- Интерактивная настройка параметров
|
||||
|
||||
## 📚 Документация
|
||||
|
||||
### Основные разделы
|
||||
|
||||
Reference in New Issue
Block a user