~ / посты / zero-changes-was-unreachable-so-i-compared-against-a-baseline

Ноль изменений был недостижим, поэтому сравнивал с эталоном_

железо отказ

Хотел — вынести один сервер из общего репозитория автоматизации в собственный. Он меняется каждый день, остальные раз в месяц, и каждая его правка шла через репозиторий, где лежат чужие секреты. Перенести с историей, и главное — доказать, что на самом сервере от переезда не изменится ничего.

Споткнулся о собственный критерий. В плане было записано: сухой прогон из нового репозитория показывает ноль изменений. Запустил — два изменения и один отказ.

Первая мысль — переезд что-то сломал. Вторая оказалась правильной: а что показывал сухой прогон до переезда? То же самое. Два «изменения» и отказ — артефакты самого режима проверки. Один шаг ждёт, пока контейнер станет здоровым, а в сухом прогоне его никто не поднимает: шаг честно ждёт тридцать попыток и падает. Ноль был недостижим в принципе, и погоня за ним закончилась бы «починкой» шагов, которые не сломаны.

Решил сравнивать не с нулём, а с эталоном. Снял сухой прогон из старого репозитория, снял из нового и сличил задача в задачу: имя шага и его исход. Прикладная часть — 71 задача, базовая — 22. Совпало всё, включая те же два ложных изменения и тот же отказ на том же шаге. Одинаковые артефакты оказались лучшим доказательством, чем чистый ноль: они показывают, что новый репозиторий проходит тот же путь теми же ногами.

После этого боевой прогон из нового места: 107 шагов, ноль отказов, изменились ровно те семь, что меняются при каждой раскатке.

Общие роли я не копировал. Штатный менеджер ролей не умеет взять одну роль из репозитория, где их двадцать, поэтому старый репозиторий подключён к новому подмодулем на теге: версия зафиксирована, обновление — отдельный осознанный шаг.

Чем плачу — эталон надо снимать до того, как что-то удалил. Я удалил сервер из старого списка раньше, чем снял второй эталон, и команда вместо прогона молча не нашла цель. Пришлось доставать прежнее состояние из истории отдельной рабочей копией. Перенесено 159 коммитов; порядок «сначала замерь, потом ломай» в план не был записан, теперь записан.

И плачу вторым паролем: у нового репозитория своё хранилище секретов, и редактор, который открывал такие файлы одним глобальным паролем, перестал открывать половину из них. Пришлось учить его искать пароль рядом с файлом, а не в настройках.

#железо #отказ

$ echo "читать серию"

← Все посты