feat: Интерактивная инициализация проекта через make init
- Добавлена интерактивная команда setup-env-interactive - make init теперь запрашивает настройки проекта в диалоговом режиме - Обновлена документация в README.md - Убрано упоминание о создании vault-password.txt вручную Интерактивная настройка включает: - Основные настройки: название, версия, автор, сайт - Настройки Docker: образ, сеть - Настройки лаборатории: сценарий, пресет - Настройки Kubernetes: контекст, версии Istio/Kind - Пути к папкам и файлам Преимущества: - Удобная настройка проекта при первом запуске - Все необходимые файлы создаются автоматически - Пользователь может настроить проект под свои нужды - Сохранение настроек в .env файле Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
79
Makefile
79
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); \
|
||||
|
||||
Reference in New Issue
Block a user