From eb61afb35a072f6e8ac389db883806d9b7189955 Mon Sep 17 00:00:00 2001 From: Sergey Antropoff Date: Wed, 22 Oct 2025 15:07:13 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=98=D0=BD=D1=82=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D0=B0=D1=8F=20=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20=D1=87=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=20make=20init?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлена интерактивная команда setup-env-interactive - make init теперь запрашивает настройки проекта в диалоговом режиме - Обновлена документация в README.md - Убрано упоминание о создании vault-password.txt вручную Интерактивная настройка включает: - Основные настройки: название, версия, автор, сайт - Настройки Docker: образ, сеть - Настройки лаборатории: сценарий, пресет - Настройки Kubernetes: контекст, версии Istio/Kind - Пути к папкам и файлам Преимущества: - Удобная настройка проекта при первом запуске - Все необходимые файлы создаются автоматически - Пользователь может настроить проект под свои нужды - Сохранение настроек в .env файле Автор: Сергей Антропов Сайт: https://devops.org.ru --- Makefile | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- README.md | 12 ++++++--- 2 files changed, 85 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 5439e55..02fb632 100644 --- a/Makefile +++ b/Makefile @@ -73,13 +73,88 @@ help: ## Показать справку по всем командам # ============================================================================= .PHONY: init -init: setup-env setup-vault setup-roles setup-precommit ## Полная инициализация проекта +init: setup-env-interactive setup-vault setup-roles setup-precommit ## Полная инициализация проекта @echo "$(GREEN)✅ Проект успешно инициализирован!$(RESET)" @echo "$(YELLOW)📖 Документация: $(SITE)$(RESET)" @echo "$(YELLOW)🚀 Быстрый старт: make lab up$(RESET)" +.PHONY: setup-env-interactive +setup-env-interactive: ## Интерактивное создание .env файла + @if [ ! -f $(ENV_FILE) ]; then \ + echo "$(CYAN)🔧 Настройка проекта Ansible Template$(RESET)"; \ + echo "$(YELLOW)📝 Заполните параметры проекта (можно оставить пустыми для значений по умолчанию):$(RESET)"; \ + echo ""; \ + read -p "$(YELLOW)📦 Название проекта [$(PROJECT_NAME)]: $(RESET)" USER_PROJECT_NAME; \ + USER_PROJECT_NAME=$${USER_PROJECT_NAME:-$(PROJECT_NAME)}; \ + read -p "$(YELLOW)📋 Версия проекта [$(VERSION)]: $(RESET)" USER_VERSION; \ + USER_VERSION=$${USER_VERSION:-$(VERSION)}; \ + read -p "$(YELLOW)👤 Автор проекта [Сергей Антропов]: $(RESET)" USER_AUTHOR; \ + USER_AUTHOR=$${USER_AUTHOR:-Сергей Антропов}; \ + read -p "$(YELLOW)🌐 Сайт проекта [https://devops.org.ru]: $(RESET)" USER_SITE; \ + USER_SITE=$${USER_SITE:-https://devops.org.ru}; \ + echo ""; \ + echo "$(BLUE)🐳 Настройки Docker:$(RESET)"; \ + read -p "$(YELLOW)🐳 Docker образ [$(DOCKER_IMAGE)]: $(RESET)" USER_DOCKER_IMAGE; \ + USER_DOCKER_IMAGE=$${USER_DOCKER_IMAGE:-$(DOCKER_IMAGE)}; \ + read -p "$(YELLOW)🌐 Docker сеть [$(DOCKER_NETWORK)]: $(RESET)" USER_DOCKER_NETWORK; \ + USER_DOCKER_NETWORK=$${USER_DOCKER_NETWORK:-$(DOCKER_NETWORK)}; \ + echo ""; \ + echo "$(BLUE)🧪 Настройки лаборатории:$(RESET)"; \ + read -p "$(YELLOW)📋 Сценарий Molecule [$(SCENARIO)]: $(RESET)" USER_SCENARIO; \ + USER_SCENARIO=$${USER_SCENARIO:-$(SCENARIO)}; \ + read -p "$(YELLOW)📄 Пресет лаборатории [$(LAB_SPEC)]: $(RESET)" USER_LAB_SPEC; \ + USER_LAB_SPEC=$${USER_LAB_SPEC:-$(LAB_SPEC)}; \ + echo ""; \ + echo "$(BLUE)☸️ Настройки Kubernetes:$(RESET)"; \ + read -p "$(YELLOW)☸️ Kubernetes контекст [$(KUBE_CONTEXT)]: $(RESET)" USER_KUBE_CONTEXT; \ + USER_KUBE_CONTEXT=$${USER_KUBE_CONTEXT:-$(KUBE_CONTEXT)}; \ + read -p "$(YELLOW)🔗 Версия Istio [$(ISTIO_VERSION)]: $(RESET)" USER_ISTIO_VERSION; \ + USER_ISTIO_VERSION=$${USER_ISTIO_VERSION:-$(ISTIO_VERSION)}; \ + read -p "$(YELLOW)☸️ Версия Kind [$(KIND_VERSION)]: $(RESET)" USER_KIND_VERSION; \ + USER_KIND_VERSION=$${USER_KIND_VERSION:-$(KIND_VERSION)}; \ + echo ""; \ + echo "$(BLUE)📁 Настройки путей:$(RESET)"; \ + read -p "$(YELLOW)📁 Папка ролей [$(ROLES_DIR)]: $(RESET)" USER_ROLES_DIR; \ + USER_ROLES_DIR=$${USER_ROLES_DIR:-$(ROLES_DIR)}; \ + read -p "$(YELLOW)🔐 Файл пароля vault [$(VAULT_PASSWORD_FILE)]: $(RESET)" USER_VAULT_PASSWORD_FILE; \ + USER_VAULT_PASSWORD_FILE=$${USER_VAULT_PASSWORD_FILE:-$(VAULT_PASSWORD_FILE)}; \ + echo ""; \ + echo "$(BLUE)📝 Создание .env файла...$(RESET)"; \ + echo "# Ansible Template Environment" > $(ENV_FILE); \ + echo "# Автор: $(AUTHOR)" >> $(ENV_FILE); \ + echo "# Сайт: $(SITE)" >> $(ENV_FILE); \ + echo "" >> $(ENV_FILE); \ + echo "# Основные настройки" >> $(ENV_FILE); \ + echo "PROJECT_NAME=$$USER_PROJECT_NAME" >> $(ENV_FILE); \ + echo "VERSION=$$USER_VERSION" >> $(ENV_FILE); \ + echo "AUTHOR=$$USER_AUTHOR" >> $(ENV_FILE); \ + echo "SITE=$$USER_SITE" >> $(ENV_FILE); \ + echo "" >> $(ENV_FILE); \ + echo "# Docker settings" >> $(ENV_FILE); \ + echo "DOCKER_IMAGE=$$USER_DOCKER_IMAGE" >> $(ENV_FILE); \ + echo "DOCKER_NETWORK=$$USER_DOCKER_NETWORK" >> $(ENV_FILE); \ + echo "" >> $(ENV_FILE); \ + echo "# Molecule settings" >> $(ENV_FILE); \ + echo "SCENARIO=$$USER_SCENARIO" >> $(ENV_FILE); \ + echo "LAB_SPEC=$$USER_LAB_SPEC" >> $(ENV_FILE); \ + echo "" >> $(ENV_FILE); \ + echo "# Kubernetes settings" >> $(ENV_FILE); \ + echo "KUBE_CONTEXT=$$USER_KUBE_CONTEXT" >> $(ENV_FILE); \ + echo "ISTIO_VERSION=$$USER_ISTIO_VERSION" >> $(ENV_FILE); \ + echo "KIND_VERSION=$$USER_KIND_VERSION" >> $(ENV_FILE); \ + echo "" >> $(ENV_FILE); \ + echo "# Paths" >> $(ENV_FILE); \ + echo "ROLES_DIR=$$USER_ROLES_DIR" >> $(ENV_FILE); \ + echo "VAULT_PASSWORD_FILE=$$USER_VAULT_PASSWORD_FILE" >> $(ENV_FILE); \ + echo "$(GREEN)✅ .env файл создан с вашими настройками$(RESET)"; \ + else \ + echo "$(YELLOW)⚠️ .env файл уже существует$(RESET)"; \ + echo "$(BLUE)📝 Текущие настройки:$(RESET)"; \ + grep -v "^#" $(ENV_FILE) | grep -v "^$$" | head -10; \ + fi + .PHONY: setup-env -setup-env: ## Создать .env файл с настройками +setup-env: ## Создать .env файл с настройками по умолчанию @if [ ! -f $(ENV_FILE) ]; then \ echo "$(YELLOW)Создание .env файла...$(RESET)"; \ echo "# Ansible Template Environment" > $(ENV_FILE); \ diff --git a/README.md b/README.md index 178ac4c..24bafa8 100644 --- a/README.md +++ b/README.md @@ -38,10 +38,14 @@ git clone https://github.com/your-username/ansible-template.git cd ansible-template -# Создать необходимые файлы -echo "your-vault-password" > vault-password.txt -mkdir -p roles -mkdir -p files/playbooks +# Инициализировать проект (интерактивная настройка) +make init +# Команда запросит настройки проекта в интерактивном режиме: +# - Название проекта, версия, автор, сайт +# - Настройки Docker (образ, сеть) +# - Настройки лаборатории (сценарий, пресет) +# - Настройки Kubernetes (контекст, версии Istio/Kind) +# - Пути к папкам и файлам # Установить pre-commit хуки (опционально) make pre-commit-install