fix: Исправлена команда создания роли
- Создан исправленный скрипт create_role_fixed.sh
- Исправлены проблемы с переменными в шаблонах ролей
- Убраны пустые переменные типа {{ }}
- Исправлены имена переменных с правильным экранированием
- Создана тестовая роль test-role для проверки
Проблемы в старой команде:
- Неправильное экранирование переменных ROLE_NAME
- Пустые переменные в шаблонах
- Неправильные имена переменных в defaults
- Проблемы с заменой плейсхолдеров
Исправления:
- Правильное экранирование переменных
- Корректные переменные в шаблонах
- Правильные имена переменных
- Рабочая замена плейсхолдеров
Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
138
create_role_fixed.sh
Executable file
138
create_role_fixed.sh
Executable file
@@ -0,0 +1,138 @@
|
||||
#!/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}/"
|
||||
Reference in New Issue
Block a user