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:
58
scripts/auto-add-role.sh
Normal file
58
scripts/auto-add-role.sh
Normal 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"
|
||||
Reference in New Issue
Block a user