#!/bin/bash # Исправленная команда создания роли ROLE_NAME="$1" ROLE_DESC="$2" ROLE_PACKAGE="$3" ROLE_SERVICE="$4" ROLE_TAGS="$5" if [ -z "$ROLE_NAME" ]; then echo "Использование: $0 ROLE_NAME ROLE_DESC ROLE_PACKAGE ROLE_SERVICE ROLE_TAGS" exit 1 fi echo "Создание роли: $ROLE_NAME" mkdir -p ./roles/${ROLE_NAME}/{tasks,handlers,templates,files,vars,defaults,meta,tests,playbooks} # Создаем main.yml cat > ./roles/${ROLE_NAME}/tasks/main.yml << 'MAIN_EOF' --- # Основные задачи роли ROLE_NAME_PLACEHOLDER # Автор: Сергей Антропов # Сайт: https://devops.org.ru - name: Включить задачи для Debian/Ubuntu import_tasks: debian.yml when: ansible_os_family == 'Debian' - name: Включить задачи для RHEL/CentOS import_tasks: redhat.yml when: ansible_os_family == 'RedHat' MAIN_EOF # Создаем debian.yml cat > ./roles/${ROLE_NAME}/tasks/debian.yml << 'DEBIAN_EOF' --- # Задачи для Debian/Ubuntu - name: Обновить кэш пакетов apt: update_cache: yes cache_valid_time: 3600 - name: Установить пакет PACKAGE_PLACEHOLDER apt: name: "{{ ROLE_NAME_PLACEHOLDER_package }}" state: present - name: Запустить и включить сервис SERVICE_PLACEHOLDER systemd: name: "{{ ROLE_NAME_PLACEHOLDER_service }}" enabled: "{{ ROLE_NAME_PLACEHOLDER_enabled }}" state: "{{ 'started' if ROLE_NAME_PLACEHOLDER_started else 'stopped' }}" DEBIAN_EOF # Создаем redhat.yml cat > ./roles/${ROLE_NAME}/tasks/redhat.yml << 'REDHAT_EOF' --- # Задачи для RHEL/CentOS - name: Установить пакет PACKAGE_PLACEHOLDER yum: name: "{{ ROLE_NAME_PLACEHOLDER_package }}" state: present - name: Запустить и включить сервис SERVICE_PLACEHOLDER systemd: name: "{{ ROLE_NAME_PLACEHOLDER_service }}" enabled: "{{ ROLE_NAME_PLACEHOLDER_enabled }}" state: "{{ 'started' if ROLE_NAME_PLACEHOLDER_started else 'stopped' }}" REDHAT_EOF # Создаем defaults/main.yml cat > ./roles/${ROLE_NAME}/defaults/main.yml << 'DEFAULTS_EOF' --- # Переменные по умолчанию для роли ROLE_NAME_PLACEHOLDER # Автор: Сергей Антропов # Сайт: https://devops.org.ru ROLE_NAME_PLACEHOLDER_package: PACKAGE_PLACEHOLDER ROLE_NAME_PLACEHOLDER_service: SERVICE_PLACEHOLDER ROLE_NAME_PLACEHOLDER_enabled: true ROLE_NAME_PLACEHOLDER_started: true DEFAULTS_EOF # Создаем meta/main.yml cat > ./roles/${ROLE_NAME}/meta/main.yml << 'META_EOF' --- galaxy_info: author: Сергей Антропов description: ROLE_DESC_PLACEHOLDER company: https://devops.org.ru license: MIT min_ansible_version: 2.9 platforms: - name: Ubuntu versions: [18.04, 20.04, 22.04] - name: Debian versions: [10, 11, 12] - name: EL versions: [7, 8, 9] galaxy_tags: [TAGS_PLACEHOLDER] dependencies: [] META_EOF # Создаем handlers/main.yml cat > ./roles/${ROLE_NAME}/handlers/main.yml << 'HANDLERS_EOF' --- # Обработчики роли ROLE_NAME_PLACEHOLDER - name: Перезапустить SERVICE_PLACEHOLDER systemd: name: "{{ ROLE_NAME_PLACEHOLDER_service }}" state: restarted HANDLERS_EOF # Заменяем плейсхолдеры sed -i '' "s/ROLE_NAME_PLACEHOLDER/${ROLE_NAME}/g" ./roles/${ROLE_NAME}/tasks/main.yml sed -i '' "s/ROLE_NAME_PLACEHOLDER/${ROLE_NAME}/g" ./roles/${ROLE_NAME}/tasks/debian.yml sed -i '' "s/ROLE_NAME_PLACEHOLDER/${ROLE_NAME}/g" ./roles/${ROLE_NAME}/tasks/redhat.yml sed -i '' "s/ROLE_NAME_PLACEHOLDER/${ROLE_NAME}/g" ./roles/${ROLE_NAME}/defaults/main.yml sed -i '' "s/ROLE_NAME_PLACEHOLDER/${ROLE_NAME}/g" ./roles/${ROLE_NAME}/meta/main.yml sed -i '' "s/ROLE_NAME_PLACEHOLDER/${ROLE_NAME}/g" ./roles/${ROLE_NAME}/handlers/main.yml sed -i '' "s/PACKAGE_PLACEHOLDER/${ROLE_PACKAGE}/g" ./roles/${ROLE_NAME}/tasks/debian.yml sed -i '' "s/PACKAGE_PLACEHOLDER/${ROLE_PACKAGE}/g" ./roles/${ROLE_NAME}/tasks/redhat.yml sed -i '' "s/PACKAGE_PLACEHOLDER/${ROLE_PACKAGE}/g" ./roles/${ROLE_NAME}/defaults/main.yml sed -i '' "s/SERVICE_PLACEHOLDER/${ROLE_SERVICE}/g" ./roles/${ROLE_NAME}/tasks/debian.yml sed -i '' "s/SERVICE_PLACEHOLDER/${ROLE_SERVICE}/g" ./roles/${ROLE_NAME}/tasks/redhat.yml sed -i '' "s/SERVICE_PLACEHOLDER/${ROLE_SERVICE}/g" ./roles/${ROLE_NAME}/handlers/main.yml sed -i '' "s/ROLE_DESC_PLACEHOLDER/${ROLE_DESC}/g" ./roles/${ROLE_NAME}/meta/main.yml sed -i '' "s/TAGS_PLACEHOLDER/${ROLE_TAGS}/g" ./roles/${ROLE_NAME}/meta/main.yml echo "Роль ${ROLE_NAME} создана успешно!" echo "Структура: ./roles/${ROLE_NAME}/"