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
This commit is contained in:
2025-10-22 14:25:27 +03:00
parent 51c76fb859
commit e6287769d6
10 changed files with 209 additions and 30 deletions

58
scripts/auto-add-role.sh Normal file
View File

@@ -0,0 +1,58 @@
#!/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"