Коды возврата
Одинаковы у всех восьми команд.
| Код | Значение | Состояние сервера |
|---|---|---|
|
Успешно |
Изменён, как показано в плане. |
|
Общая ошибка |
Зависит от места сбоя, см. лог. |
|
Ошибка в ключах командной строки |
Не изменён. |
|
Предпроверки не пройдены |
Не изменён. |
|
Отменено оператором |
Не изменён. |
|
Ошибка в фазе применения |
Изменён. В логе видно, какое действие выполнилось последним. |
|
Ошибка связи с удалённым хостом |
Не изменён. |
Главное различие — между 3 и 5. Код 3 означает, что установщик отказался начинать: не хватило прав, не нашёлся образ, ОС не поддерживается. Код 5 означает, что он начал и не смог закончить.
Этим же кодом завершается запуск, в котором платформа сама сообщила об ошибке инициализации. Установщик отработал, контейнер поднялся, но платформа не запустилась — для сценария развёртывания это такой же отказ, и нулевой код скрыл бы его. Отсутствие отчёта за отведённое время остаётся предупреждением: контейнер мог просто медленно подниматься.
И этим же кодом завершается запуск, в котором очередь действий дошла до конца, но форма «что изменилось на сервере» показала [FAIL]: изменение сделано не до конца — скажем, каталог NFS не смонтировался.
Такие шаги намеренно не прерывают установку — форма для того и печатается, чтобы их отказ не остался незамеченным.
Метка [warn] на код возврата не влияет: сервер работает, хотя и не полностью.
См. era_installer/install-local.adoc#era-installer-install-local-changes.
После кода 5 повторный запуск с тем же файлом ответов безопасен: действия идемпотентны и доводят установку до конца. Перед повтором стоит посмотреть в лог и понять причину — иначе повтор упрётся в то же самое.
В сценариях
rc=0
bash era/scripts/install.sh --non-interactive --answers-file=srv.params || rc=$?
case $rc in
0) printf 'установлено\n' ;;
3) printf 'предпроверки не прошли, сервер не тронут\n' ;;
5) printf 'ВНИМАНИЕ: сервер изменён частично, нужен разбор\n' ;;
*) printf 'сбой, код %s\n' "$rc" ;;
esac