Логи и коды возврата

Где лежат

Логи пишутся в каталог logs рядом со скриптами. Если писать туда нельзя, используется ~/.era_installer/logs. Каталог можно задать переменной окружения ERA_LOG_DIR.

Каждый прогон оставляет три файла:

Файл Содержимое

<команда>_<дата-время>.log

Ход выполнения: предпроверки, план, каждая команда и её результат.

<команда>_<дата-время>.params

Собранные значения — файл ответов.

<команда>_<дата-время>.cmd

Готовая неинтерактивная команда повтора. Если у мастера перечислены дополнительные серверы, туда же дописаны команды для каждого из них.

Рядом лежит символическая ссылка last.log на последний прогон. Права на все файлы — 0600: в них пароли.

При установке по ssh лог удалённой стороны забирается к вам в logs/remote/<хост>/. Так после сбоя оба лога — ваш и серверный — лежат рядом.

Как читать

Строки помечены уровнем, и метки не переводятся — лог остаётся пригодным для grep независимо от языка интерфейса.

Метка Что означает

INFO

Обычный ход дела.

WARN

Что-то не так, но установка продолжается.

ERROR

Ошибка. Обычно последняя строка перед выходом.

EXEC

Команда, которую установщик собирается выполнить.

SKIP

Команда не выполнена, следом указана причина.

DEBUG

Подробности. Показываются в консоли только с --verbose.

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

Найти, что действительно выполнялось:

grep -A1 '\[EXEC' logs/last.log | grep -v 'not executed'

Найти ошибки:

grep -E '\[(ERROR|WARN)' logs/last.log

Шапка лога содержит версию установщика, ОС, версию bash и командную строку запуска. Пароли в ней уже замаскированы.

Пароли в логах

Значения параметров, помеченных в реестре как секретные, заменяются на •••••• — и в сводке, и в командной строке в шапке, и в напечатанных командах.

Ключ --log-secrets отключает маскировку. Он нужен при разборе сбоя аутентификации и не должен попадать в обычные сценарии.

Коды возврата

Различать их стоит по одному признаку: изменён ли сервер. Коды 2, 3 и 4 означают, что до фазы применения дело не дошло и сервер не тронут. Код 5 означает, что применение началось и оборвалось — сервер изменён частично, и по логу видно, на каком шаге.