Files
DevOpsLab/scripts/auto-add-role.sh
Sergey Antropoff e6287769d6 feat: Упрощена система ролей и добавлена автоматизация
- Создана простая демо роль для тестирования
- Упрощена роль deploy (убраны сложные компоненты)
- Добавлен скрипт auto-add-role.sh для автоматического добавления ролей
- Обновлен Makefile для автоматического добавления новых ролей

Изменения в роли deploy:
- Убраны сложные компоненты (ETCD, Patroni, HAProxy)
- Добавлена демо роль для тестирования
- Упрощены переменные и задачи

Новая демо роль:
- roles/demo/ - простая роль для тестирования
- Устанавливает базовые инструменты (htop, tree, git)
- Создает демо файлы с информацией о хосте
- Легко удаляется без поломки системы

Автоматизация:
- scripts/auto-add-role.sh - автоматическое добавление ролей
- Обновление deploy/tasks/main.yml
- Обновление deploy/defaults/main.yml
- Обновление site.yml
- Автоматическое выполнение при make role create

Преимущества:
- Простота тестирования с демо ролью
- Автоматическое добавление новых ролей
- Универсальность системы
- Легкое удаление без поломки
- Модульная архитектура

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-22 14:25:27 +03:00

59 lines
2.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Автоматическое добавление новой роли в систему
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
set -euo pipefail
ROLE_NAME="$1"
ROLES_DIR="/ansible/roles"
DEPLOY_TASKS="/ansible/roles/deploy/tasks/main.yml"
if [ -z "$ROLE_NAME" ]; then
echo "❌ Использование: $0 <role_name>"
exit 1
fi
echo "🔧 Добавляем роль $ROLE_NAME в систему..."
# Проверяем, что роль существует
if [ ! -d "$ROLES_DIR/$ROLE_NAME" ]; then
echo "❌ Роль $ROLE_NAME не найдена в $ROLES_DIR"
exit 1
fi
# Добавляем роль в deploy/tasks/main.yml
echo "📝 Добавляем роль в deploy/tasks/main.yml..."
# Создаем временный файл с новой задачей
cat > /tmp/add_role_task.yml << EOF
- name: Deploy $ROLE_NAME role
include_role:
name: $ROLE_NAME
when: ${ROLE_NAME}_enabled | default(true)
EOF
# Добавляем задачу в main.yml перед DinD stack
sed -i '/Deploy DinD stack/i\
'"$(cat /tmp/add_role_task.yml)"'
' "$DEPLOY_TASKS"
# Добавляем переменную в defaults/main.yml
echo "📝 Добавляем переменную в deploy/defaults/main.yml..."
echo "" >> "$ROLES_DIR/deploy/defaults/main.yml"
echo "# Настройки роли $ROLE_NAME" >> "$ROLES_DIR/deploy/defaults/main.yml"
echo "${ROLE_NAME}_enabled: true" >> "$ROLES_DIR/deploy/defaults/main.yml"
# Обновляем site.yml
echo "📝 Обновляем site.yml..."
sed -i "/demo_enabled: true/a\\
${ROLE_NAME}_enabled: true" /ansible/files/playbooks/site.yml
echo "✅ Роль $ROLE_NAME успешно добавлена в систему!"
echo "📋 Доступные переменные:"
echo " - ${ROLE_NAME}_enabled: true/false"
echo "📝 Файлы обновлены:"
echo " - $DEPLOY_TASKS"
echo " - $ROLES_DIR/deploy/defaults/main.yml"
echo " - /ansible/files/playbooks/site.yml"