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
|
.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 "$(GREEN)✅ Проект успешно инициализирован!$(RESET)"
|
||||||
@echo "$(YELLOW)📖 Документация: $(SITE)$(RESET)"
|
@echo "$(YELLOW)📖 Документация: $(SITE)$(RESET)"
|
||||||
@echo "$(YELLOW)🚀 Быстрый старт: make lab up$(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
|
.PHONY: setup-env
|
||||||
setup-env: ## Создать .env файл с настройками
|
setup-env: ## Создать .env файл с настройками по умолчанию
|
||||||
@if [ ! -f $(ENV_FILE) ]; then \
|
@if [ ! -f $(ENV_FILE) ]; then \
|
||||||
echo "$(YELLOW)Создание .env файла...$(RESET)"; \
|
echo "$(YELLOW)Создание .env файла...$(RESET)"; \
|
||||||
echo "# Ansible Template Environment" > $(ENV_FILE); \
|
echo "# Ansible Template Environment" > $(ENV_FILE); \
|
||||||
|
|||||||
12
README.md
12
README.md
@@ -38,10 +38,14 @@
|
|||||||
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
|
||||||
|
|
||||||
# Создать необходимые файлы
|
# Инициализировать проект (интерактивная настройка)
|
||||||
echo "your-vault-password" > vault-password.txt
|
make init
|
||||||
mkdir -p roles
|
# Команда запросит настройки проекта в интерактивном режиме:
|
||||||
mkdir -p files/playbooks
|
# - Название проекта, версия, автор, сайт
|
||||||
|
# - Настройки Docker (образ, сеть)
|
||||||
|
# - Настройки лаборатории (сценарий, пресет)
|
||||||
|
# - Настройки Kubernetes (контекст, версии Istio/Kind)
|
||||||
|
# - Пути к папкам и файлам
|
||||||
|
|
||||||
# Установить pre-commit хуки (опционально)
|
# Установить pre-commit хуки (опционально)
|
||||||
make pre-commit-install
|
make pre-commit-install
|
||||||
|
|||||||
Reference in New Issue
Block a user