feat: Реорганизация проекта и восстановление ролей
- Восстановлены команды make role в Makefile - Создана папка ci-cd/ для CI/CD конфигурации - Перенесены GitLab файлы в ci-cd/ - Перенесены Dockerfile'ы в ci-cd/dockerfiles/ - Удален корневой requirements.yml - Удалена пустая папка vars/ - Создана документация ci-cd/README.md - Обновлен README.md с информацией о CI/CD Изменения: - Восстановлены команды: make role list|create|edit|test|lint|deploy|info - Создана структура ci-cd/ с GitLab CI/CD - Перенесены Dockerfile'ы для разных ОС - Добавлена документация по CI/CD - Обновлена структура проекта в README.md Новая структура: - ci-cd/ - CI/CD конфигурация - ci-cd/gitlab/ - GitLab Runner - ci-cd/dockerfiles/ - Dockerfile'ы - ci-cd/.gitlab-ci.yml - GitLab CI/CD - ci-cd/README.md - документация CI/CD Преимущества: - Организованная структура проекта - Восстановлена функциональность ролей - Готовые примеры CI/CD - Документация по настройке - Разделение ответственности Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
111
Makefile
111
Makefile
@@ -346,10 +346,115 @@ preset: ## Управление пресетами (list|create|edit|test|copy)
|
||||
esac
|
||||
|
||||
# =============================================================================
|
||||
# УПРАВЛЕНИЕ РОЛЯМИ (УДАЛЕНО)
|
||||
# УПРАВЛЕНИЕ РОЛЯМИ
|
||||
# =============================================================================
|
||||
# Роли Ansible удалены из проекта
|
||||
# Используйте playbooks для развертывания
|
||||
|
||||
.PHONY: role
|
||||
role: ## Управление ролями (list|create|edit|test|lint|deploy)
|
||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
||||
list) \
|
||||
echo "$(CYAN)📋 Доступные роли:$(RESET)"; \
|
||||
if [ -d "$(ROLES_DIR)" ]; then \
|
||||
ls -la $(ROLES_DIR)/ | grep "^d" | awk '{print " " $$9}' | grep -v "^\.$\|^\.\.$"; \
|
||||
else \
|
||||
echo " $(YELLOW)Директория ролей не найдена$(RESET)"; \
|
||||
fi;; \
|
||||
create) \
|
||||
if [ -z "$(NAME)" ]; then \
|
||||
echo "$(RED)❌ Использование: make role create NAME=my-role$(RESET)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "$(YELLOW)📝 Создаем роль: $(NAME)$(RESET)"; \
|
||||
mkdir -p $(ROLES_DIR)/$(NAME)/{tasks,handlers,templates,files,vars,defaults,meta,tests}; \
|
||||
echo "---" > $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo "# Основные задачи роли $(NAME)" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo "- name: $(NAME) placeholder" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " debug:" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " msg: \"Роль $(NAME) готова для настройки\"" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo "- name: Install $(NAME) package" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " package:" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " name: \"{{ $(NAME)_package | default('$(NAME)') }}\"" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " state: present" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo "- name: Start $(NAME) service" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " systemd:" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " name: \"{{ $(NAME)_service | default('$(NAME)') }}\"" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " state: started" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " enabled: true" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo " when: $(NAME)_service is defined" >> $(ROLES_DIR)/$(NAME)/tasks/main.yml; \
|
||||
echo "---" > $(ROLES_DIR)/$(NAME)/defaults/main.yml; \
|
||||
echo "# Переменные по умолчанию для роли $(NAME)" >> $(ROLES_DIR)/$(NAME)/defaults/main.yml; \
|
||||
echo "$(NAME)_enabled: true" >> $(ROLES_DIR)/$(NAME)/defaults/main.yml; \
|
||||
echo "$(NAME)_package: $(NAME)" >> $(ROLES_DIR)/$(NAME)/defaults/main.yml; \
|
||||
echo "$(NAME)_service: $(NAME)" >> $(ROLES_DIR)/$(NAME)/defaults/main.yml; \
|
||||
echo "---" > $(ROLES_DIR)/$(NAME)/meta/main.yml; \
|
||||
echo "galaxy_info:" >> $(ROLES_DIR)/$(NAME)/meta/main.yml; \
|
||||
echo " author: $(AUTHOR)" >> $(ROLES_DIR)/$(NAME)/meta/main.yml; \
|
||||
echo " description: Роль $(NAME)" >> $(ROLES_DIR)/$(NAME)/meta/main.yml; \
|
||||
echo " company: $(SITE)" >> $(ROLES_DIR)/$(NAME)/meta/main.yml; \
|
||||
echo " license: MIT" >> $(ROLES_DIR)/$(NAME)/meta/main.yml; \
|
||||
echo " min_ansible_version: 2.9" >> $(ROLES_DIR)/$(NAME)/meta/main.yml; \
|
||||
echo "dependencies: []" >> $(ROLES_DIR)/$(NAME)/meta/main.yml; \
|
||||
echo "---" > $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "# Роль $(NAME)" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "Описание роли $(NAME)." >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "## Переменные" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "| Переменная | По умолчанию | Описание |" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "|------------|--------------|----------|" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "| \`$(NAME)_enabled\` | \`true\` | Включить роль |" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "| \`$(NAME)_package\` | \`$(NAME)\` | Имя пакета |" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "| \`$(NAME)_service\` | \`$(NAME)\` | Имя сервиса |" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "## Использование" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "\`\`\`yaml" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "- hosts: all" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo " roles:" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo " - role: $(NAME)" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "\`\`\`" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "## Автор" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "$(AUTHOR)" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "Сайт: $(SITE)" >> $(ROLES_DIR)/$(NAME)/README.md; \
|
||||
echo "$(GREEN)✅ Роль $(NAME) создана$(RESET)";; \
|
||||
edit) \
|
||||
if [ -z "$(NAME)" ]; then \
|
||||
echo "$(RED)❌ Использование: make role edit NAME=my-role$(RESET)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "$(BLUE)✏️ Редактируем роль: $(NAME)$(RESET)"; \
|
||||
$${EDITOR:-vim} $(ROLES_DIR)/$(NAME)/tasks/main.yml;; \
|
||||
test) \
|
||||
if [ -z "$(NAME)" ]; then \
|
||||
echo "$(RED)❌ Использование: make role test NAME=my-role$(RESET)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "$(PURPLE)🧪 Тестируем роль: $(NAME)$(RESET)"; \
|
||||
$(MAKE) lab test LAB_SPEC=molecule/presets/minimal.yml;; \
|
||||
lint) \
|
||||
echo "$(YELLOW)🔍 Проверяем роли...$(RESET)"; \
|
||||
docker exec ansible-controller bash -lc 'ansible-lint --config-file /ansible/.ansible-lint $(ROLES_DIR)/*'; \
|
||||
echo "$(GREEN)✅ Проверка завершена$(RESET)";; \
|
||||
deploy) \
|
||||
echo "$(PURPLE)🚀 Развертываем роли...$(RESET)"; \
|
||||
docker exec ansible-controller bash -lc 'ansible-playbook -i /tmp/molecule/inventory/hosts.yml files/playbooks/site.yml'; \
|
||||
echo "$(GREEN)✅ Развертывание завершено$(RESET)";; \
|
||||
info) \
|
||||
if [ -z "$(NAME)" ]; then \
|
||||
echo "$(RED)❌ Использование: make role info NAME=my-role$(RESET)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "$(BLUE)📋 Информация о роли: $(NAME)$(RESET)"; \
|
||||
docker exec ansible-controller bash -lc 'cat /ansible/roles/$(NAME)/README.md';; \
|
||||
*) \
|
||||
echo "$(RED)❌ Неизвестная команда. Доступные: list, create, edit, test, lint, deploy, info$(RESET)";; \
|
||||
esac
|
||||
|
||||
# =============================================================================
|
||||
# УПРАВЛЕНИЕ VAULT
|
||||
|
||||
Reference in New Issue
Block a user