commit -m "better"
3.21K subscribers
1.01K photos
147 videos
3 files
2.36K links
just random thoughts
Download Telegram
Forwarded from Гусь
ChatHRD
😁75
Forwarded from The After Times
😢38💋43🔥2😭1
commit -m "better"
Раз уж я занялся автоматизацией своего home #lab, то расскажите мне за DNS. Вот у меня изначально каждый хост знает свой hostname. Ну потому, что хост - это единственное, что отличает его конфигурацию от всех остальных, и это единственное, что я задаю руками…
В фоне продолжаю заниматься своей home #lab.

Там уже 3 ноды, автоматическая наливка с 0, нормальная сеть между всеми узлами (2.5gb), IaC для выкладки (конечно же, на основе #ix), сервисы сами рассказывают про себя через mdns, и вообще, красота.

Коллеги, а порекомендуйте нормальную очередь задач для распределенного кластера?

Я это вижу примерно так - etcd + какая-то встраиваемая библиотека, которая реализует скучные вещи, типа очередей поверх etcd, какой-нить простой work stealing алгоритм шедулинга, эфемерные ноды для каждого хоста, разгребающего очередь, для того, чтобы задачи с упавших нод прозрачно возвращались в общую очередь, и прочий crud.

Вот, например, как https://github.com/lytics/metafora, только живое, и чтобы звезд побольше?
👍1
Мы живем в обществе


https://gitlab.freedesktop.org/mesa/mesa/-/issues/10803

Спасибо подписчику за ссылку
😁25👍4🤯3😢3
commit -m "better"
В фоне продолжаю заниматься своей home #lab. Там уже 3 ноды, автоматическая наливка с 0, нормальная сеть между всеми узлами (2.5gb), IaC для выкладки (конечно же, на основе #ix), сервисы сами рассказывают про себя через mdns, и вообще, красота. Коллеги,…
Мне тут сказали, что я не смогу запилить херобору, которая бы решала эту задачу, за 5 минут.

Вызов был принят, и вот результат:

Это демон, может быть запущен на нескольких хостах:

pg# cat run.sh
#!/bin/sh

set -xue

while true; do
sleep 1

etcdctl get --keys-only --prefix /tasks/ | grep '/' | while read l; do
etcdctl lock ${l} -- /bin/sh -c "(etcdctl get ${l} | tail -n +2 | /bin/sh) || true; etcdctl del ${l}"
done
done


Это клиент:

etcdctl put /tasks/${RANDOM} 'ls -la'


По ссылке - результат:

https://gist.github.com/pg83/3528e80835386fac13175aec353e5d3a
🔥16👍54❤‍🔥2🤯1🐳1
commit -m "better"
Новости из мира Linux: https://www.phoronix.com/news/Bcachefs-Merged-Linux-6.7 #bcachefs bcachefs вот так взяли, и смержили в 6.7. Видимо, #Kent нашел правильное место, куда надо лизнуть, потому что иначе такой прогресс сложно объяснить. Вышло ядро 6.6…
https://www.phoronix.com/news/Linux-6.9-Bcachefs-Attempt

Классная заруба между Линусом и автором #bcachefs #Kent.

TL;DR - Кент хочет выделить кусок bcachefs в библиотеку, чтобы ей могли воспользоваться разработчики #XFS

Линус тут встает в позицию "пока ты держишь свое говно при себе, оно может быть сделано произвольно всратым образом, но если ты делаешь из этого либу, то она должна быть устроена так-то и так-то". Ну и щедро наваливает комментариев про то, как она должна быть устроена (причем комментариев по существу).

Не знаю.

Мне кажется, что взрослые люди за закрытыми дверями могут делать все, что захотят если Кенту ОК, и XFS тоже ОК, то и ладно. Если этим говнокодом захочет воспользоваться третий участник, хехе, то его еще больше причешут.

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

А Линусу просто не нравится автор bcachefs (и вообще, что это за выскочка?!), вот он и находит причины для rant.
😁8👍4🤔21👎1
commit -m "better"
Мне тут сказали, что я не смогу запилить херобору, которая бы решала эту задачу, за 5 минут. Вызов был принят, и вот результат: Это демон, может быть запущен на нескольких хостах: pg# cat run.sh #!/bin/sh set -xue while true; do sleep 1 etcdctl…
Про пользу #etcd в home #lab.

В качестве роутера я использую коробочку от Xiaomi.

Ну, потому что она мне дает простой в эксплуатации mesh, и потому что, когда-то, дала мне возможность быстро развернуть нормальную сетку в доме за городом.

Нормальную - это значит, что я из любой точки дома получаю заявленный гигабит от провайдера, по воздуху.

Но у этой коробочки есть один небольшой недостаток - она конфигурируется из web gui, и настроек там очень мало.

(openwrt? нет, не хочу, когда руки до этого дойдут, запилю свой роутер, на #stal/ix)

В общем, в форме, которая настраивает port forwarding, можно установить только один адрес на входящий порт.

А я, знаете ли, решил, что в моем home lab будет сколько возможно мало точек отказа.

Поэтому, когда я решил наконец-то настроить edge proxy, который бы занимался тем, что делал ретраи, разбрасывал запросы по бекендам, и делал dispatch по vhost, я приуныл.

Потому что если взгромоздить этот прокси на 1 тачку, то это +1 точка отказа, а если хочется взгромоздить на несколько, то смотри выше пункт про то, что в формочке можно указать только 1 адрес для одного внешнего порта.

У меня в голове закрутились слова IPVS, keepalived, и я, признаться, приуныл еще больше!

Вот, придумал решение, которое мне кажется не очень всратым, решает мою проблему, и не содержит слов ipvs, keepalived, и прочих ноковых приблуд.

У меня на трех хостах крутится скрипт, который в цикле пытается, под etcd lock, запустить прокси. Везунчик, который получил блокировку, вешает на eth0 какой-то заранее известный IP адрес, и запускает на нем proxy. А все остальные, если блокировку взять не удалось, у себя этот IP адрес убирают, чтобы он всегда был только на одном интерфейсе.

В роутере прописываю этот самый IP адрес.

Если хост умирает, то кто-то другой получает блокировку, и цикл повторяется.

Ну, то есть, получился такой автоматический failover, без IP балансировки нагрузки.

У этого решения есть понятные проблемы - что произойдет, если master умер "странно", Ну, вот, блокировку в etcd проебал, а IP адрес с интерфейса снять не получается? Не знаю, расцениваю вероятность этого, как довольно низкую.
😁10🥴7🤔4👌32🐳2
Forwarded from на хуторе please Dick Аньки (Zoibana)
😁42🌭7🤣4🔥2
commit -m "better"
Про пользу #etcd в home #lab. В качестве роутера я использую коробочку от Xiaomi. Ну, потому что она мне дает простой в эксплуатации mesh, и потому что, когда-то, дала мне возможность быстро развернуть нормальную сетку в доме за городом. Нормальную - это…
Рубрика #делай_без_изъебов, #нормально_делай_нормально_будет

Кстати, в качестве edge proxy хочу посоветовать https://github.com/umputun/reproxy

(не на правах рекламы! #lab)

Прелесть этой тулзы в том, что в ней есть примерно все, чтобы сделать проксирование "начального уровня":

* несколько видов discovery endpoint (статика, файлы, и всякие dns - консулы)

* простой load balancer (random, round robin). Причем простой не только в использовании, но и в настройке, я даже сначала не понял, что он там есть.

* интеграция с Let's Encrypt acme certificates. Https из коробки за пару минут.

Ну, то есть, установил 1 файл (приблуда написана на Go, статика, а это всегда приятно), передал пару настроек через command line (даже конфиг не нужен), и все работает.

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

Ну, вот, нужна балансировка получше, поставил рядом sidecar, который умеет это лучше.

Мне пока больше ничего не надо, мои потребности тулза закрыла целиком. То, что заявлено, работет хорошо.

Пожалуй, единственный заметный недостаток - не умеет прикрывать авторизацией отдельный vhost, а только все целиком.
👍12🔥6🤔51👌1
#bootstrap #rant #svg

https://github.com/hyprwm/Hyprland/releases/tag/v0.37.0

Передовицы всех газет пишут про наш вклад в дело open source!

fix libc++/clang build by @pg83 in #4886

На самом деле, в случае hyprland это какой-то сизифов труд, потому что я примерно каждый релиз чиню им чего-нить для собираемости с libc++/clang, но каждый новый релиз все равно сломан в каком-то новом месте.

0.37.1 сломан в https://github.com/hyprwm/hyprcursor/commit/60f9c53cf2e482c4ee9d2ce2f9c6f26af2f76a91 (пофикшено в trunk)

Поэтому получается, что в моем setup собирается только или патченый hyprland, или hyprland из промежуточной ревизии. Школота.

Еще они завязались на librsvg для рендеринга курсоров - https://github.com/hyprwm/hyprcursor/blob/main/libhyprcursor/hyprcursor.cpp#L369 Я им пока напихал за щеку подсунул заглушек, потому что таких курсоров не встречал in the wild. https://github.com/pg83/ix/commit/11d3869d765cdc73c5d40d977f896ec9381c9421#diff-b9e5df4feed50ceee7a2bc09956a9bcae55f1e87c6902686aa073deaf0272c81R15-R38

Да, да, коллеги совершенно перестали стесняться, и изобретают свои форматы для хранения курсоров в svg (https://github.com/hyprwm/hyprcursor?tab=readme-ov-file#why). Вот бы еще server side курсоры прикрутили, было бы совсем хорошо.
🤡10🔥3🤔3❤‍🔥1💩1
это был буквально one day offer
🔥30😁19👍5🤔1
Forwarded from Блог*
😁434🥰2
https://www.opennet.ru/opennews/art.shtml?num=60802

"По данным докладчика последнее время наблюдается активное внедрение GnuCOBOL коммерческими компаниями и банками, которые переводят написанные на COBOL бэкенды на GnuCOBOL с проприетарного компилятора Micro Focus. Отмечается, что переход на GnuCOBOL позволяет добиться повышения производительности и избавиться от привязки к одному поставщику. Например, Министерство финансов Франции недавно заменило мэйнфрейм, на котором использовалась операционная система GCOS, на решение, основанное на GnuCOBOL"

Министерство финансов Франции недавно заменило мэйнфрейм, на котором использовалась операционная система GCOS, на решение, основанное на GnuCOBOL...

Перепись бабкоебов, если вы понимаете, о чем я.
😁8👌4🐳31
Forwarded from The After Times
😁48🥴17🔥7💩5👍1
Forwarded from The After Times
😁20🤬5👍4🔥3😭2🐳1🤣1
Продолжаю тему #suid бинарей - https://xn--r1a.website/itpgchannel/1552, будни #bootstrap

Вот есть такая утилита ping.

Для своего функционирования она требует рутовые права (ну или там какой-то CAP_*, про который никто ничего не знает, да и не надо, от лукавого это все https://xn--r1a.website/itpgchannel/248 #sec_model)

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

Сначала я решал эту проблему скриптом-оберткой, которая просто звала "sudo real_ping_binary". В целом, норм решение, но периодически такие времянки нужно разбирать, и делать более хорошо (оценочное суждение intended).

Из интернетов я узнал (https://unix.stackexchange.com/questions/592911/how-does-ping-work-on-fedora-without-setuid-and-capabilities), что можно явно разрешить каким-то группам и пользователям создавать socket нужного типа:

sysctl net.ipv4.ping_group_range="0 4294967295"

Прямо эта команда у меня не отработала, вот с такой ошибкой:

sysctl: setting key ...: Invalid argument


Помогло заменить 4294967295 на 4294967294 (Как?! А вот так!!)

ping после этого не заработал:

pg# busybox ping ya.ru
PING ya.ru (77.88.55.242): 56 data bytes
ping: permission denied (are you root?)


strace сказал, что ping из busybox обламывается на socket(AF_INET, SOCK_RAW, IPPROTO_ICMP). В целом, ожидаемо, потому что настройка ядра работает для SOCK_DGRAM (чего должно быть достаточно для ping).

Тогда я решил заменить ping из busybox на настоящий ping, из https://github.com/iputils/iputils, как у всех остальных.

Собрал, и вот что он мне написал:

pg# /ix/store/.../ping ya.ru
ping: ya.ru: Invalid flags


Sooka, я уже начал немного нервничать.

После короткой сессии с отладчиком, нашел проблемное место - https://github.com/iputils/iputils/blob/master/ping/ping.c#L351

В общем, когда iputils собираются с libidn, то они начинают использовать какой-то неизвестный науке флаг для getaddrinfo.

Как это работает, я вообще не понимаю. Почему под musl это не ошибка сборки (https://github.com/lluixhi/musl-extras/issues/3)? Кто определил этот макрос? Почему он связан именно с наличием libidn, хотя это свойство libc?

Загадка, покрытая мраком.

Я просто убрал сборку с libidn, и, ВНЕЗАПНО, ping заработал и без sudo, как ему и положено.
🔥25🐳6👍41🫡1
Forwarded from Дидлошная (Alex Beaver)
😁48🔥63
#fork

Меня тут спрашивают, почему я не пишу про переход Redis на несвободную лицензию - https://www.opennet.ru/opennews/art.shtml?num=60820

Потому что я ждал вот это вот - https://www.opennet.ru/opennews/art.shtml?num=60823

Я как-то писал, что за каждым успешным oss проектом стоит очередь тех, кто захочет его перехватить, дай upstream хоть какой-то повод для этого - https://xn--r1a.website/itpgchannel/1296

Вот, снова и снова, люди наступают на те же грабли.

С первого взгляда форк похож на васянский, но пилит его не кто иной, как #ddv

Будет интересно.
👍8🤝5🤔2