Сценарии
Экспериментальная возможность
Сценарий делает на хостах ровно то, что написано, и без отката. Сначала «Проверить» и «Сухой прогон», обкатывайте на тестовых машинах, проверяйте журнал задания.

Сценарий — список действий на языке из нескольких команд: завести группу и хосты, поставить nkt, пакеты, Docker, стеки, машины. Хаб выполняет его по порядку теми же вызовами, что и кнопки интерфейса, и останавливается на первой ошибке. Одна строка — одно действие; compose-файл или текст файла кладётся блоком до end.
param ADDR "адрес нового сервера"
group prod profile web-base
host web1 ${ADDR} user root password ask group prod
install web1
wait web1 online 5m
on web1 packages install nginx htop
on web1 service nginx enable
on web1 firewall allow 80/tcp
on web1 firewall allow 443/tcp
wait web1 http http://${ADDR}/ 200 1mКоманды
| Команда | Что делает |
|---|---|
set ИМЯ значение, set ИМЯ ask | переменная; ask — спросить при запуске, не хранить |
param ИМЯ "подсказка" | параметр, который спрашивают при запуске — один сценарий для разных стендов |
group ИМЯ [profile ПРОФИЛЬ] | группа на хабе |
host ИМЯ АДРЕС[:ПОРТ] user … (password ask | password "…" | key hub) [group …] | завести хост |
install ХОСТ… | поставить nkt |
wait ХОСТ online | port N | http URL [КОД] | service ИМЯ active | подождать |
on ХОСТ… packages install|remove … | пакеты; в on можно перечислить несколько хостов |
on ХОСТ service ИМЯ start|stop|restart|reload|enable|disable | службы |
on ХОСТ firewall allow|deny ПОРТ [from CIDR] | firewall |
on ХОСТ docker install, on ХОСТ docker stack ПУТЬ up|down … end | Docker и compose-стек |
on ХОСТ vm create ИМЯ image ОБРАЗ [cpu N] [mem МБ] [disk ГБ] [profile …] [install] | машина на хосте |
on ХОСТ apply profile ПРОФИЛЬ | применить профиль |
on ХОСТ file put ПУТЬ … end | записать файл |
on ХОСТ user add ИМЯ [sudo] [key "…"] | учётная запись |
on ХОСТ system hostname|timezone|locale|ntp … | системные настройки |
on ХОСТ cert issue ДОМЕН… | cert renew ДОМЕН | сертификат Let's Encrypt |
on ХОСТ git clone URL /КАТАЛОГ [branch …] [token ask] | клонировать репозиторий |
on ХОСТ k8s create ИМЯ [nodes single|1+N|3+N|"ХОСТ: cp N, w N, host cp|w; …"] [network nat|bridge|wireguard] [cni cilium] [expose] …, on ХОСТ k8s destroy ИМЯ | кластер Kubernetes на машинах хоста или с размещением по нескольким хостам (экспериментально) |
Полная справка с примерами, которые можно скопировать или вставить в редактор, — вкладка «Справка» в самом разделе.
Проверка, сухой прогон, выполнение
- Проверить разбирает текст и сверяет имена хостов, групп и профилей, ничего не меняя.
- Сухой прогон проходит сценарий: у хостов спрашиваются планы (что бы изменилось), остальные шаги пишутся в журнал как «сделал бы»; хосты и машины не создаются.
- Выполнить сохраняет, проверяет, спрашивает пароли, параметры и токены (в текст они не попадают) и запускает задание хаба. После перезапуска хаба задание продолжается с той же строки, уже заведённые хосты не заводятся второй раз.
Схема

Вкладка «Схема» рисует сценарий: группы → хосты → действия, машины внутри хоста, на котором создаются. Редактируется текст; схема нужна, чтобы окинуть сценарий взглядом.