Перейти до вмісту

Додала секундну попередню перевірку секретів

Додала попередній плей (preflight), який приблизно за секунду проганяє той самий код, що й converge, на локальних секретах оператора, — після того як продакшн‑запуск обірвався на дев'ятому завданні, застосувавшись лише наполовину, а налаштування swap уже було записано на робочий хост.

  • Airplane takeoff, beautiful plane, on the runway
    Фото: huynhkimdaihuu30051999 / Pixabay
  • Aircraft, airport, runway
    Фото: FrankyFromGermany / Pixabay

запуск у продакшні відрепетирувано приблизно за секунду

Ситуація. Експлуатаційні секрети щойно розділили так, щоб кожен хост мав власний репозиторій резервних копій, парольну фразу й перемикач тривоги. Код репозиторію був правильним. У зашифрованому сховищі секретів оператора досі лежало попереднє значення, розраховане на один хост, і цієї розбіжності ніщо не могло помітити, бо сховище навмисно існує лише на машині оператора й невидиме для власних перевірок якості репозиторію.

Завдання. Збоям такого класу потрібне було місце, де вони обходилися б дешево, бо щойно один такий збій обійшовся дорого.

Дія. Перший прогін converge після зміни під’єднався до живого хоста, виконав вісім завдань і відмовився на дев’ятому — правильно, але посеред прогону, який уже записав на продакшн налаштування свопу. Наполовину застосований converge гірший за відмову, тож написано попередній плей (preflight): він не звертається до жодного хоста, виконується локально, не збирає фактів і проганяє на сховищі оператора ті самі два файли завдань, що й справжній converge. Відповідь він дає приблизно за секунду, і підготовка хоста запускає його першим. Ключове рішення — це той самий код, а не друга реалізація того самого правила, бо перевірка, що переказує правило іншою мовою, рано чи пізно з ним розійдеться, і розійдеться мовчки. Під час написання виявилася пастка, яку він мало не створив: факти, встановлені в межах плею, живуть і після нього, тож об’єднання попередньої перевірки та converge в один виклик передало б справжній ролі парольну фразу, яку попередня перевірка вже отримала, і перевірка пройшла б на сховищі, яке досі було хибним. Цю пастку спершу відтворили й лише потім закрили захистом — в обох файлах завдань.

Результат. Секрет, який не вдається отримати, тепер коштує двосекундної відмови на ноутбуці, а не частково застосованої зміни на живому сервері. Попередню перевірку свідомо не позначено тегом для безумовного виконання і свідомо не серіалізовано, і обидва ці вибори записано як рішення, а не як значення за замовчуванням.

Одна частина довшого переліку — і він увесь на цьому сайті.

Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.

Переглянути весь перелік