Запуск без вопросов
Любой ответ можно передать ключом. Когда переданы все нужные значения, установщик не спрашивает ничего — это и есть режим для сценариев развёртывания.
Три режима, которые легко перепутать
| Ключ | Что делает |
|---|---|
|
Спрашивает только то, для чего нет значения по умолчанию. Экран подтверждения остаётся. |
|
Не спрашивает ничего. Если значения не хватает, останавливается с кодом 2 и перечисляет недостающие ключи. Экран подтверждения не блокирует. |
|
Проходит весь путь и печатает каждую команду, но не выполняет ни одной. При запуске по ssh относится к целевому хосту: обёртка копирует поставку и запускает установщик по-настоящему, а пробным становится прогон на сервере — план строит он. |
--non-interactive включает и -y.
Комбинация --non-interactive --dry-run — обычный способ проверить команду перед настоящим запуском.
Файл ответов
Самый простой способ получить корректный набор ключей — пройти мастер один раз вручную.
Каждый прогон записывает рядом с логом файл .params со всеми собранными значениями:
logs/install_20260101-120000.params
Этот файл можно передать установщику обратно:
bash era/scripts/install.sh --answers-file=logs/install_20260101-120000.params
Значения из файла подставляются как ответы; всё, чего в нём нет, спрашивается.
На экране подтверждения их можно исправить: пункт «Изменить…» возвращает к выбранному экрану, и на повторном заходе мастер снова задаёт вопросы — в том числе о том, что пришло из файла или командной строки.
Прежние значения подставлены умолчаниями, так что до нужного вопроса достаточно нажимать Enter.
Исправленное отмечается в сводке источником исправлено.
Ключи командной строки сильнее файла — так удобно менять одно-два значения:
bash era/scripts/install.sh --answers-file=srv1.params \
--ipaddress=192.168.0.11 --srvname=srv2 --non-interactive
Файл можно записать и не устанавливая ничего: на экране подтверждения выберите «Сохранить ответы», либо задайте --save-answers=<путь>.
В файле ответов пароли лежат в открытом виде.
Он создаётся с правами 0600. Не кладите его в репозиторий и не копируйте на общие каталоги.
Чтобы держать пароли отдельно, используйте --secrets-file.
|
Готовая команда повтора
Каждый прогон, включая пробный, записывает файл .cmd — неинтерактивную команду со всеми значениями:
logs/install_20260101-120000.cmd
Она же печатается в конце установки, но там пароли скрыты.
В файле они настоящие, права — 0600.
Эта команда — рабочий способ поставить десять одинаковых серверов: возьмите её после первой установки и меняйте адрес и имя.
Если сервера входят в одну систему, менять адрес вручную не нужно: перечислите их на экране 10 при установке мастера, и установщик сам напечатает команду для каждого — с ролью узла, адресом mic и базой мастера.
Эти команды дописываются в тот же файл .cmd.
См. era_installer/install-local.adoc#era-installer-install-local-addservers.
Десять серверов
#!/bin/bash
set -euo pipefail
BASE="--answers-file=./srv-base.params --non-interactive"
while IFS=' ' read -r host ip name; do
printf '=== %s\n' "$host"
bash install_ssh.sh $BASE \
--host="$host" --user=user \
--ipaddress="$ip" --srvname="$name" \
|| printf 'СБОЙ на %s, код %s\n' "$host" "$?"
done <<'HOSTS'
192.168.0.11 192.168.0.11 srv1
192.168.0.12 192.168.0.12 srv2
192.168.0.13 192.168.0.13 srv3
HOSTS
Проверьте сценарий с --dry-run, прежде чем запускать по-настоящему: тогда каждая команда покажет свой план и ничего не изменит.
Коды возврата позволяют отличить причину сбоя — см. era_installer/reference-exit-codes.adoc#era-installer-exit-codes. Код 3 означает, что предпроверки не прошли и сервер не тронут; код 5 — что установка оборвалась на середине и сервер изменён частично.
Пароли отдельно от остальных ответов
bash era/scripts/install.sh --answers-file=srv.params --secrets-file=/root/era.secrets
Формат файла секретов тот же ключ=значение, что и у файла ответов, но в нём только пароли.
Так основной файл ответов можно хранить рядом со сценарием, а пароли брать из места с ограниченным доступом.
/root/era.secrets# Пароли платформы. Права на файл -- 0600.
pgerapwd=S3cret_era_pwd
pgpostgrespwd=S3cret_admin_pwd
# Нужен только при репликации (--usereplic=y).
pgreplicapwd=S3cret_replica_pwd
# Пароль системного пользователя postgres; задаётся, если он вам нужен.
pgospwd=S3cret_os_pwd
Правила разбора — те же, что у файла ответов:
-
по одной паре
ключ=значениев строке; -
ключ — это имя параметра из колонки «Имя» справочника (
pgerapwd), а не ключ командной строки (--pgerapwd); -
строки, начинающиеся с
#, и пустые пропускаются; -
пробелы вокруг
=отбрасываются, значением считается всё после первого=— пароль может содержать=, но не может начинаться или заканчиваться пробелом; -
кавычки не нужны и не снимаются:
pgerapwd="abc"задаст пароль вместе с кавычками.
В файле секретов принимаются только те ключи, что помечены в справочнике как секретные:
| Ключ | Что это за пароль |
|---|---|
|
Пароль пользователя базы, под которым в неё ходит платформа ( |
|
Пароль суперпользователя |
|
Пароль пользователя репликации ( |
|
Пароль системного пользователя |
Остальные ключи установщик не примет и скажет об этом: несекретный параметр в файле секретов — почти наверняка ошибка, и принимать его молча значит её скрыть. Значения из файла секретов имеют тот же вес, что переданные ключом командной строки, и перекрывают файл ответов.
Файл читает только установщик; в лог пароли не попадают — там на их месте ••••••.
Права на файл он не проверяет и не меняет: ставьте 0600 сами.
При установке по ssh секреты передаются на сервер отдельно: они пишутся во временный файл под umask 077 и удаляются после запуска, в том числе если установка оборвалась.
В аргументах командной строки они не появляются — иначе их увидел бы любой, кто посмотрит список процессов.
Что проверить перед массовым запуском
-
--dry-runна одном сервере: план совпадает с ожиданиями. -
Уникальность постфикса, если на сервере уже есть другой инстанс.
-
Адрес
--ipaddressсуществует на целевом сервере. -
Место на диске: предпроверка предупреждает, но не останавливает.
-
Пароли не остались умолчаниями из реестра.