68 lines
3.0 KiB
Markdown
68 lines
3.0 KiB
Markdown
---
|
|
title: Разработка Action-скриптов
|
|
description: Разработка атомарных задач автоматизации в рамках общих модулей.
|
|
weight: 30
|
|
---
|
|
|
|
[Action-скрипты](/root/glossary#action) — это атомарные задачи автоматизации. Следуя философии "Stupid Action" («Глупое действие»), они должны оставаться декларативными и полагаться на библиотеку для выполнения сложных операций.
|
|
|
|
## Создание нового Action-скрипта {#create}
|
|
|
|
{{% steps %}}
|
|
|
|
### Шаг 1: Создание файла скрипта
|
|
|
|
Поместите ваш скрипт в `scripts/actions/{group}/{name}`. Не используйте расширения файлов.
|
|
|
|
### Шаг 2: Реализация метаданных
|
|
|
|
Каждый Action-скрипт должен предоставлять описание и список аргументов для системы справки (help system).
|
|
|
|
```bash filename="scripts/actions/utils/my-action"
|
|
action_metadata() {
|
|
cat <<EOF
|
|
description: "Краткое описание задачи."
|
|
args:
|
|
- NODE: "Имя узла"
|
|
- PARAM: "Пользовательский параметр"
|
|
EOF
|
|
}
|
|
```
|
|
|
|
### Шаг 3: Инициализация контекста
|
|
|
|
Используйте вспомогательную функцию `root_require_node` для настройки окружения. Это должно быть первым функциональным шагом в вашем скрипте.
|
|
|
|
```bash filename="scripts/actions/utils/my-action"
|
|
root_require_node "${1:-}"
|
|
shift
|
|
```
|
|
|
|
### Шаг 4: Использование модульных функций
|
|
|
|
Выполняйте операции, используя библиотечные функции `root_*`. Полагайтесь на переменные окружения `ROOT_` для всех путей.
|
|
|
|
```bash filename="scripts/actions/utils/my-action"
|
|
root_log_info "Обработка узла $ROOT_NODE"
|
|
root_sys_restart_service "my-service"
|
|
```
|
|
|
|
{{% /steps %}}
|
|
|
|
## Пространства имен библиотек {#libraries}
|
|
|
|
Action-скрипты имеют доступ к следующим модулям:
|
|
|
|
- `root_core_*`: Логирование и уведомления в Telegram.
|
|
- `root_init_*`: Декларативная инициализация сервисов и управление пакетами.
|
|
- `root_sys_*`: Управление systemd и файлами юнитов.
|
|
- `root_template_*`: Рендеринг на основе envsubst и внедрение конфигураций.
|
|
- `root_validate_*`: Проверка ввода, файлов и ОС.
|
|
|
|
---
|
|
|
|
**См. также:**
|
|
|
|
- [Справочник: Справочник ROOT_ API](/root/reference/root-api)
|
|
- [Концепция: Архитектура инфраструктуры](/root/concepts/architecture)
|