Идет загрузка данных
Идет загрузка данных
ST2Fна 10% скидки. Оплатить можно любой картой мира, как и по счету — если планируете учиться за счет компании. Посмотреть программу →
netplan, хоть и конфируется на YAML не принимает файлы .yml, только .yaml. Кладёшь .yml — получаешь неработающую сеть. — Директория
/etc/if-up.d/, в которую раньше можно было складывать скрипты, запускающиеся про поднятии интерфейса, всё ещё существует, но не работает — скрипты не запускаются. —
netplan try— классная штука, которая пробует новые сетевые настройки, и при обрыве соединения откатывает их назад — не откатывает настройки назад. В 22 убунте откатывала, в 24 — перестала —
systemctlпри неудачной попытке запустить сервис не выдаёт ошибку, а говорит «читайте журнал через journalctl».
journalctlна одно сообщение об ошибке показывает 10 строчек бойлерпдейта, одинакового для всех сервисов. Почему бы сразу не показать мне нужную строчку из
systemctl? Не знаю. И это я ещё не говорю о менее зрелых с точки зрения DevEx инструментах, вроде Wireguard, у которого есть две утилиты, которые парсят один и тот же конфиг, с одинаковым названием и структурой, но в разных форматах:
wgпонимает только простой конфиг, а
wg-quick— расширенный, и если скормить
wgконфиг от
wg-quick,то
wgмолча упадёт, сказав что у него ошибка в конфиге, и ни словом не упомянув о двух форматах. К такому говну мы пришли путём, характерным не только для опенсорса, но и для программистского мышления в целом. Сейчас допью таблетки от Альцгеймера и расскажу историю. Сначала был
ifconfig, который в одну команду конфигурировал сетевой интерфейс. Чтобы сохранять настройки после перезагрузки, его запускали из /etc/rc.local. Кому надо было гарантировать порядок и названия интерфейсов — колдовали с modprobe. Жили так довольно долго: где-то, например во FreeBSD, это писали в
/etc/rc.conf,где-то, например в мини-дистрах для специальных задач, вообще никакого стандарта не было. Потом пришёл кто-то, кому это не нравилось, и изобрёл
/etc/network/interfaces.Сисадмины выучили ещё один DSL (благо в те времена таких языков было немного, и все они были маленькими), а автор с радостью решил несуществующую у реальных юзеров проблему — теперь все настройки сети хранились в одном месте. Правда не совсем удачно — другим программистам было тяжело парсить этот DSL, потому что настройки могли лежать в /etc/network/interfaces.d, скрипты после поднятия интерфейсов запускались непойми откуда, а как сохранять порядок интерфейсов — было вообще непонятно. У юзеров этих проблем не было — у них болело, чтобы radioethernet, который недавно переименовали в WiFi, работал без необходимости вкуривать в wpa_supplicant, который с
/etc/network/interfacesникак не взаимодействовал. Но кто же их спрашивает-то. Здесь бы нам всем остановиться, добавить в стандарт вайфай, и протащить его в другие дистры (или затащить в дебиан стандарт из других дистров). Лет за 10 и пару мажорных апдейтов такую штуку можно было бы довести до рабочего состояния — чтобы и WiFi через GUI конфигурировать, и на серверах было понятно, что куда писать. Но старые абстракции чинить никому не хочется — лучше нагородить новых поверх. Так появился
NetworkManager.У него тоже нашлись несуществующие, но при этом нерешаемые проблемы — и появился
systemd-networkd.На удивление, и у него нашлись нерешаемые проблемы, к тому же
NetworkManagerпочему-то отказался умирать, поэтому пришлось изобретать ещё одну абстракцию поверх их обоих —
netplan.Вероятно, я пропустил пару абстракций, потому что уже лет 10 не слежу за линуксом, но суть ясна — программисты, вместо того, чтобы засучить рукава и чинить то, что сами наговнокодили, предпочитают объявлять это всепрощающим словом «легаси» (и от кого же вы это унаследовали?) и делают поверх абстракцию. Абстракция течёт, превращается в легаси, и поверх неё пишут ещё одну абстракцию. И во всём этом процессе никто не думает про опыт пользователей — главное, это написать всё заново и «чисто».
retired_guys.yml.Или не заполнять каждый раз форму в банке для перевода денег, а найти банк, который не требует такой формы. Последнее — больной пример из жизни: самый большой чеклист в моём в Bear был посвящён тому, как заполнять формы в казахстанском банке ЦентрКредит. Интерфейсы у них были родом из начала 2000-х, и всё это осложнялось тем, что они периодически не работали. Дать доступ кому-то, чтобы делали это за меня, я не смог. Интегрировать их с условной 1c, чтобы она туда всё выгружала — тоже не осилил. Так и сидел с километровым чеклистом. В какой-то момент вся эта кривизна меня настолько достала, что я купил билет в Алмату и поменял ЦентрКредит на Jusan. Вернулся домой и сразу же удалил нафиг тот позорный чеклист, и теперь экономлю по полтора часа в месяц. Кажется, самый главный скилл, связанный с чеклистами — это умение находить у себя повторяющиеся сценарии, которые можно этими чеклистами покрыть. И не стесняться тратить время на них, а ещё лучше — вообще избавляться от таких операций. Это был традиционный #вопрос по понедельникам. Задавайте свои на fborshev@pm.me
SAD10на 10% скидки. Если вы принимаете даже самые маленькие решения по организации кода или взаимодействию систем в организации — ждём вас на курсе. Если хоть чуть-чуть общаетесь с бизнесом — тоже. Джунам на курс рановато. Если сильно верите в себя — берите не выше самостоятельного тарифа.