#!/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 " 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"