Skip to content

Сценарии ​

Экспериментальная возможность

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

Сценарии

Сценарий — список действий на языке из нескольких команд: завести группу и хосты, поставить 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 … endDocker и 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 на машинах хоста или с размещением по нескольким хостам (экспериментально)

Полная справка с примерами, которые можно скопировать или вставить в редактор, — вкладка «Справка» в самом разделе.

Проверка, сухой прогон, выполнение ​

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

Схема ​

Схема сценария

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