Что делать при ошибке

Первое действие всегда одно: посмотреть лог. Путь печатается последней строкой любого прогона, ссылка на последний — logs/last.log.

Предпроверки не прошли (код 3)

Сервер не изменён.

Сообщение Что делать

ОС не поддерживается

Проверьте ID в /etc/os-release. Список семейств — в era_installer/reference-os-matrix.adoc#era-installer-os-matrix.

Версия bash ниже 4.2

Обновить bash. Установщик пользуется ассоциативными массивами, обойти это нельзя.

Не найдены утилиты

Проверка требует tar, grep, sed, awk, find — сообщение называет те из них, которых нет. Поставьте их пакетами своей ОС; полный перечень с пояснениями — в era_installer/requirements.adoc#era-installer-requirements-tools.

ssh и rsync — не найдены / на целевом хосте нет rsync

Эти два нужны только установке по ssh: ssh и rsync на вашей машине и rsync на целевом хосте — им копируется поставка. Ставится обычным пакетом: sudo apt-get install rsync (или dnf install rsync). На только что развёрнутом сервере его обычно нет.

sudo отсутствует

Поставьте sudo или запускайте от root.

Образ платформы не найден

Положите era_*.tar.gz в era/image либо укажите путь ключом --eradockerimagepath.

Не удалось подключиться по ssh

Проверьте адрес, порт и ключ обычным ssh. Если сервер переустанавливали — см. era_installer/preparation.adoc#era-installer-preparation-known-hosts.

Нет доступа к docker

Демон отвечает только root, а sudo требует пароль. В интерактивном режиме пароль спросят; в неинтерактивном нужен root, членство в группе docker или sudo без пароля.

docker не установлен, демон не отвечает

systemctl status docker на целевом хосте.

Ошибка в ключах (код 2)

Установщик останавливается на первом неизвестном ключе и предлагает похожий:

Неизвестный параметр «--masterdomian». Возможно, имелось в виду «--masterdomain»?

Это сделано намеренно: в предыдущей версии опечатка молча игнорировалась, и установка шла с умолчанием вместо заданного значения. Прежнее поведение возвращается ключом --ignore-unknown.

Вторая частая причина кода 2 — --non-interactive без всех обязательных значений. Тогда перечисляются недостающие ключи.

Ошибка при применении (код 5)

Сервер изменён частично. Найдите в логе последнюю строку EXEC без dry-run: not executed — это команда, на которой всё оборвалось.

Признак в логе Причина и что делать

apt-get/yum не смог скачать пакет

Нет доступа в интернет или прокси не задан. См. era_installer/preparation.adoc#era-installer-preparation-proxy. На CentOS 7 — era_installer/reference-os-matrix.adoc#era-installer-os-matrix-centos7.

docker: permission denied

Пользователь не в группе docker и нет sudo.

docker load не нашёл файл

Образ не докопирован. При установке по ssh проверьте, что копирование крупных файлов дошло до конца.

initdb отказался работать

Каталог кластера не пуст. Разрешите очистку (--pgcleardatafolder=y) или укажите другой путь.

pg_ctl не стартует, а SELinux в enforcing

Каталог или порт не размечены. Проверьте, что semanage установлен: era_installer/reference-os-matrix.adoc#era-installer-os-matrix-selinux.

mount не смог смонтировать NFS

Установка продолжится, но каталог помечен файлом nomount.sign. Платформа не примет его за рабочее хранилище. Разберитесь с сервером NFS и повторите запуск.

Не удалось получить права root

sudo требует пароль, а спросить его негде: неинтерактивный режим или запуск по ssh. Проверьте правило так, как описано в era_installer/requirements.adoc#era-installer-requirements-privileges — со сбросом кэша (sudo -k), иначе проверка соврёт.

Повторный запуск с тем же файлом ответов безопасен: действия идемпотентны. Но сначала устраните причину — иначе повтор упрётся в неё же.

Код 5, а команды все отработали

Значит, [FAIL] показала форма «что изменилось на сервере»: очередь дошла до конца, но изменение не подтвердилось проверкой. Строка формы называет, какое именно — несмонтированный каталог, неотвечающий кластер, незапущенный контейнер.

Такие шаги намеренно не прерывают установку: форма для того и печатается, чтобы их отказ не остался незамеченным. Метка [warn] на код возврата не влияет: сервер работает, хотя и не полностью.

Контейнер запустился, но платформа не отвечает

Установщик ждёт от контейнера отчёта об инициализации до минуты. Возможные исходы:

Отчёт получен, результат success

Всё в порядке.

Отчёт получен, результат с ошибкой

Ошибку сообщил сам образ, а не установщик, но запуск завершается кодом 5. Причина в строке отчёта; смотрите docker logs <контейнер>. Частая причина у не-мастера — неверный --micaddress: имя роли берётся из конфигурации платформы (например mic1), а не пишется как mic.

Отчёт не получен за отведённое время

Это предупреждение, а не отказ. Контейнер мог просто медленно подниматься. Проверьте docker ps и docker logs.

Если контейнер работает, а веб-интерфейс недоступен снаружи — почти всегда дело в firewalld. Порты, которые платформа открывает сама, установщик не знает и открыть не может: era_installer/reference-os-matrix.adoc#era-installer-os-matrix-firewall.

Ошибка связи (код 6)

Соединение проверяется до опроса установки, так что код 6 обычно означает, что сервер недоступен или ключ не подошёл.

Проверьте вручную:

ssh -p 22 user@192.168.0.10 'echo ok'

Если ssh работает, а установщик — нет, запустите его с --verbose: в лог попадут точные команды ssh и rsync.

Интерфейс выглядит сломанным

Колонки разъезжаются, вместо букв мусор

Терминал не в UTF-8. Установщик переключится на английский сам и скажет об этом. Задайте локаль UTF-8, если нужен русский: era_installer/requirements.adoc#era-installer-requirements-locale.

Вместо рамок текстовые вопросы

Подходящий инструмент не найден: на Debian-подобных системах это whiptail или dialog, на остальных — только dialog. Это полноценный режим работы. Псевдографику можно потребовать явно: --ui=tui.

На экране param.<что-то>.prompt

Дефект перевода: ключ есть в коде, но его нет в каталоге сообщений. Установка при этом работает. Сообщите разработчику установщика.

Что приложить к обращению

  1. Лог прогона — он самодостаточен: содержит версию, ОС, командную строку и все команды.

  2. Код возврата.

  3. При установке по ssh — оба лога, ваш и забранный с сервера.

Пароли в логе замаскированы, но проверьте это перед отправкой, особенно если запускали с --log-secrets.