Posted on 2024-03-20

Коли один з адмінів в GitLab видалив продакшн базу данних, то його не побили, не звільнили і навіть не принижували морально. І не тому що дикі люди, а навпаки, тому що це не продуктивно.

Висновок, який зробила компанія, — сервери погано інформували про статус і оточення. І треба на продакшен серверах якось червоненьким виділяти що це продакшен, а краще взагалі джунам таких прав не давати.

Висновок який зробив я — якщо так помилився хтось, то так само можу помилитись і я.

Тоді я написав статтю про апдейт ssh config щоб він змінював колір iTerm. Але з того часу пройшло вже багато днів і зараз в iTerm це робити набагато простіше. Та й через ssh майже ніхто вже не ходить.

Нижче розповім як я змінюю колір терміналу в залежності від kubernetes context чи терраформу.

Початок

Для початку треба мати встановлену shell integration для iTerm.

І наступним кроком створити профіль у налаштуваннях айтерму.

Ви маєте мати основний профіль і додаткові — я маю два, перший для продакшену з червоним бекграундом і один для ssh/staging з синім.

Простіше за все зробити дублікат основного профілю з іншою назвою і змінити колір бекграунду у налаштуваннях.

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

terraform

У мене багато Terraform-коду, і іноді, коли експериментую, виконую його не через CI/CD, а локально (через Terraform Cloud, але файли на локальній машині).

Тому кожного разу, коли я в директорії з prod у назві, хочу отримувати повідомлення

Для цього заходимо в налаштування профілю production, і йдемо у вкладу advanced, де додаємо /*prod

Префікс / нам потрібен для того щоб iTerm розумів що мова йде про директорію. А зірочки * — це звичайні вайлдкарди.

kubernetes

З кубернетісом трішечки складніше, тому що автоматичне перемикання профілю можлива тільки для ssh, директорії чи джоби. Але тут нам на допомогу приходять тригери.

Для початку йдемо в дефолтний профіль, заходимо в Advanced налаштування, бачимо Triggers і тицяємо Edit.

В якості тригеру iTerm приймає регулярний вираз. В моєму випадку це \[production\|, оскільки я використовую kubie для зміни контексту і саме це воно пише у термінал. В вашому випадку може бути щось інше.

А дією буде загадкова Report User & Host: kuberoot@

Навіщо це потрібно?

Ми фактично не змінюємо користувача, але айтерму повідомляємо що користувач інший, адже далі ми йдемо у Advanced налаштування нашого production профілю та додаємо правило для автоматичного переключання, якщо користувач kuberoot@

Ось і все. Працює як годинник. Далі за аналогією можна зробити налаштування для інших програм чи ssh підключень, чи докеру чи чого завгодно.