Требования к серверу

Операционные системы

Семейство Дистрибутивы Пакетный менеджер

deb

Debian, Ubuntu, Linux Mint

apt-get

astra

Astra Linux

apt-get

alt

ALT Linux

apt-get поверх rpm

rhel

CentOS и CentOS Stream, RedOS, AlmaLinux, Rocky

dnf, на CentOS 7 — yum

Семейство определяется по ID из /etc/os-release, при необходимости уточняется по ID_LIKE — так распознаётся Linux Mint. Что именно ставится на каждом семействе, описано в era_installer/reference-os-matrix.adoc#era-installer-os-matrix.

Если ОС не распознана, установщик останавливается на предпроверках и ничего не меняет.

bash

Нужен bash версии 4.2 или новее. Нижняя граница выбрана по CentOS 7, где стоит 4.2.46. Всё, что поддерживается из списка выше, этому требованию удовлетворяет.

Права

Установщику нужен root: он ставит пакеты, пишет в /etc и работает с docker. Запускать можно двумя способами:

  • от root — тогда ничего дополнительно не нужно;

  • от обычного пользователя, у которого есть sudo.

Во втором случае установщик проверяет права командой sudo -n true. Если она проходит — sudo настроен без пароля, — ничего не спрашивается. Если не проходит, пароль спрашивается один раз в начале фазы применения, до того как вывод команд начнёт заполнять экран; в неинтерактивном режиме спросить его негде, и запуск останавливается. Если sudo не установлен, а вы не root, предпроверки остановят запуск.

Правило sudo без пароля должно действовать именно для этого пользователя, и проверять его нужно так:

sudo -k          # сбросить кэш пароля, иначе проверка соврёт
sudo -n true && echo "ок"

При разборе sudoers побеждает последнее совпавшее правило. Поэтому строка NOPASSWD в /etc/sudoers.d/ не действует, если ниже — например, после @includedir — есть обычное правило про того же пользователя.

Сеть и адреса

Платформе нужен статический адрес, существующий на интерфейсе сервера. Он задаётся ключом --ipaddress и попадает в конфигурацию платформы.

При установке по ssh адрес подключения и адрес платформы — это разные вещи. --host говорит, куда подключиться; --ipaddress — на каком интерфейсе будет работать платформа. Они совпадают чаще всего, но не обязаны.

Если указанного адреса нет ни на одном интерфейсе, установщик предупредит об этом на экране подтверждения, но не откажется работать: адрес может появиться позже.

Порты

Установщик открывает в firewalld только те порты, которые знает наверняка:

  • порт PostgreSQL (--pgport, по умолчанию 5441) — если база ставится на этом сервере и доступна снаружи;

  • порты платформы, если вы задали их ключами --erawshttpport, --erawshttpsport, --eraerlepmdport, --eradistports, --eranodesports;

  • службы nfs, mountd, rpc-bind — если сервер отдаёт общие каталоги.

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

Место на диске

Предпроверки смотрят свободное место в каталоге данных и предупреждают, если его меньше 10 ГиБ. Ориентир для планирования:

  • образ платформы — порядка 1—​2 ГиБ в архиве и столько же после загрузки в docker;

  • данные платформы растут со временем и зависят от нагрузки;

  • кластер PostgreSQL, если он на этом же сервере.

Утилиты

Обязательны на том хосте, где идёт установка: tar, grep, sed, awk, find. Их отсутствие останавливает запуск.

Отдельно для установки по ssh нужны ssh и rsync — на вашей машине, и rsync ещё и на целевом хосте: им копируется поставка. Проверяются они отдельной предпроверкой обёртки, а не общей: на самом сервере установка не должна отказываться из-за инструмента, которым не собиралась пользоваться — на чистом Debian rsync не стоит.

Необязательны, но полезны:

whiptail или dialog

включают псевдографический режим. На Debian, Ubuntu, Linux Mint, Astra Linux и других производных Debian используется whiptail, на остальных системах — dialog: причина в том, как из окна выйти, см. era_installer/install-ssh.adoc#era-installer-install-ssh-keys. Без подходящего инструмента установщик работает в текстовом режиме — это полноценный режим, а не аварийный.

curl

нужен при установке пакетов из интернета. При --useapt=n не требуется.

python3

нужен только команде era/scripts/gen_container_cmd.sh.

Локаль терминала

Русский и португальский интерфейсы требуют локали UTF-8. Если её нет, установщик сам переключается на английский и сообщает об этом.

Причина не только в буквах: в локали без UTF-8 bash считает длину строки в байтах, и колонки экрана подтверждения разъезжаются. Английский состоит из ASCII и читается в любой кодировке.

На CentOS 7 локали C.UTF-8 нет вовсе — это не ошибка настройки, а особенность системы. Задайте LANG=en_US.UTF-8 или работайте на английском.