- Создана простая демо роль для тестирования - Упрощена роль 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
59 lines
2.0 KiB
Bash
59 lines
2.0 KiB
Bash
#!/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"
|