dzz: Dizzy の冬 (Default)
[personal profile] dzz
Флегматично: «Docker-контейнер, в котором нет интерпретатора bash, можно назвать безбашенным»

Сижу и придумываю вменяемое CI/CD для наших серверных продуктов, допускающих однотипное "маленькое" (один инстанс стека) и "большое" (автоконфигурируемое ХЗ-сколько-штук) развёртывание через docker-контейнеры. Ну и автогенерацию-автозапись образов в репозиторий по тегу из гита в качестве промежуточного шага. Продукты - не микросервисы, а такие "полумонолиты", хорошо оптимизированные под свои задачи :)

Ни одно из готовых решений не покрывает всех хотелок, а хочется сделать красиво :)

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

оркестровка

Картинка из Шедеврума.

P.S. За окном дождь с запахом липы. В этом году июнь - особенно липовый месяц, столько одновременно цветущих лип давно не видел.

Date: 2025-06-24 04:31 pm (UTC)
From: [identity profile] jno2004.livejournal.com

В альпиновских по умолчанию sh. Да ещё и из busybox' а.

Date: 2025-06-24 04:33 pm (UTC)
From: [identity profile] dzz.livejournal.com

Ну, я примерно про это и пишу :)

Date: 2025-06-24 05:46 pm (UTC)
vitus_wagner: My photo 2005 (white)
From: [personal profile] vitus_wagner

Так sh из busybox это то ли ash, то ли dash, в общем весьма продвинутый posix shell. По сравнению с оригинальным борновским шеллом, например, из Solaris или hp/ux.

Date: 2025-06-24 04:33 pm (UTC)
From: [identity profile] jno2004.livejournal.com

Был тут пару дней в Липецке - вот где липы...

Date: 2025-06-24 04:36 pm (UTC)
From: [identity profile] dzz.livejournal.com

На то и ЛИПецк :)
Но в Москве их тоже много, у нас около офиса целая аллея.

Edited Date: 2025-06-24 04:36 pm (UTC)

Date: 2025-06-24 04:37 pm (UTC)
From: [identity profile] jno2004.livejournal.com

Там на гербе - липа, да.

Date: 2025-06-24 05:47 pm (UTC)
vitus_wagner: My photo 2005 (white)
From: [personal profile] vitus_wagner

— Вам мед липовый?
— Нет, мне, пожалуйста, настоящий!

Date: 2025-06-25 08:30 am (UTC)
From: [identity profile] dzz.livejournal.com

Липовый мёд — совершенная субстанция, он липовый в любом случае :)

Date: 2025-06-24 06:03 pm (UTC)
From: [identity profile] parakhod.livejournal.com
Ненавижу безбашенные.
Но с sh тоже можно жить поскрипывая зубами конечно.
Более минималистских не встречал (оно возможно вообще, кстати?).

Date: 2025-06-24 06:32 pm (UTC)
From: [identity profile] dzz.livejournal.com

Куда уж минималистичнее sh...

А вот "более развитые" шеллы вызывают у меня когнитивный диссонанс. В Kali по умолчанию zsh, и временами он пугает своей продвинутостью :)

Edited Date: 2025-06-24 06:34 pm (UTC)

Date: 2025-06-24 06:56 pm (UTC)
From: [identity profile] parakhod.livejournal.com
Я на zsh ооочень давно живу, ибо мак.
Ну ещё iterm2 и дофига плагинчиков типа подсветки текущего бранча и его состояния.
Полезноэ.

Date: 2025-06-25 08:32 am (UTC)
From: [identity profile] dzz.livejournal.com

Непривычное и башевские скрипты не все с ним работают, ибо диалект чуть другой.

Date: 2025-06-24 08:30 pm (UTC)
From: [identity profile] jno2004.livejournal.com

Как куда? /bin/true же!

Date: 2025-06-25 08:28 am (UTC)
From: [identity profile] dzz.livejournal.com

Или /bin/false :)


Date: 2025-06-25 08:30 am (UTC)
From: [identity profile] jno2004.livejournal.com

Не, это - запрет логина. Ну, по старому.

Date: 2025-06-25 08:36 am (UTC)
From: [identity profile] dzz.livejournal.com

/bin/false в качестве юзершелла в passwd — это грубо :)
Актуальный запрет логина — это, всё-таки, /usr/sbin/nologin

Date: 2025-06-25 08:38 am (UTC)
From: [identity profile] jno2004.livejournal.com

Этот ваш nologin появился вчера. До него был грубый false.

Date: 2025-06-25 08:39 am (UTC)
From: [identity profile] jno2004.livejournal.com

Короче, минимальный шелл - это, таки, true

Date: 2025-06-25 08:46 am (UTC)
From: [identity profile] dzz.livejournal.com

Ага, поставь его какому-нибудь юзеру в качестве основного :)

Date: 2025-06-25 09:06 am (UTC)
From: [identity profile] jno2004.livejournal.com
Ну, раньше был у всяких служебных...
А прям щаз расклад шеллов такой примерно:
$ cut -d: -f7 /etc/passwd | sort -u
/bin/bash
/bin/false
/bin/sync
/usr/bin/false
/usr/sbin/nologin

Или так:
$ awk -F: '{a[$7]+=1}END{for(x in a)print(x,a[x])}' /etc/passwd 
/bin/false 8
/usr/bin/false 2
/bin/bash 2
/bin/sync 1
/usr/sbin/nologin 42

Edited Date: 2025-06-25 09:11 am (UTC)

Date: 2025-06-25 12:46 pm (UTC)
From: [identity profile] dzz.livejournal.com

Интересно, в чём разница между /bin/false и /usr/bin/false

Date: 2025-06-25 12:48 pm (UTC)
From: [identity profile] jno2004.livejournal.com

Сейчас? Ни в чём — там симлинк или маунт /bin с /usr/bin

Date: 2025-06-25 12:55 pm (UTC)
From: [identity profile] dzz.livejournal.com

У меня в убунте/минте ни то, ни другое — хардлинк.

Date: 2025-06-25 12:56 pm (UTC)
From: [identity profile] jno2004.livejournal.com

Эвер хэв ю син эни факин диференс?

Date: 2025-06-25 01:00 pm (UTC)
From: [identity profile] dzz.livejournal.com

Nope. Байты одинаковые. Хотя, несложно написать разное поведение в зависимости от argv[0];

Date: 2025-06-25 01:04 pm (UTC)
From: [identity profile] jno2004.livejournal.com

да, переписать true — это тема!


на расте, разумеется.


и с изменением поведения от *argv — чтобы мало не казалось...
ЗЫ. чтобы false и true были одним бинарником, и остальные варианты (two, three, four, ...) возвращали соответствующий код завершения, ога.


ЗЗЫ. это вам, блин, не IEFBR14, а современное безопасТное приложение будет!


ЗЗЗЫ. вот гуй к нему придумать — у меня фантазма не хватает...

Edited Date: 2025-06-25 01:09 pm (UTC)

Date: 2025-06-25 01:55 pm (UTC)
From: [identity profile] dzz.livejournal.com

> возвращали соответствующий код завершения

/usr/bin/twohundredfiftyfive :)

> IEFBR14

Ну у тебя и память :)))
Там, помнится, две команды на ассемблере.



Edited Date: 2025-06-25 01:59 pm (UTC)

Date: 2025-06-25 02:01 pm (UTC)
From: [identity profile] jno2004.livejournal.com

по существу — одна: собссно BR 14 (бранч по 14-му регистру, где штатно — адрес возврата после BALR)

Date: 2025-06-25 02:13 pm (UTC)
From: [identity profile] dzz.livejournal.com

А R15 обнулить?

Date: 2025-06-25 02:14 pm (UTC)
From: [identity profile] jno2004.livejournal.com

вот, не помню, был там XR 15 или нет...

Date: 2025-06-25 02:29 pm (UTC)
From: [identity profile] dzz.livejournal.com

Я видел вариант SR 15,15, вроде, каноничный.

Date: 2025-06-25 03:30 pm (UTC)
From: [identity profile] jno2004.livejournal.com

SR — каноничный, но чаще было, таки, XR — чуток быстрее...


Впрочем, там, вроде, 1BFF 07FE — две команды: SR + BCR

Date: 2025-06-25 02:03 pm (UTC)
From: [identity profile] dzz.livejournal.com

> чтобы false и true были одним бинарником

Дык, busybox так и сделан.

Date: 2025-06-25 02:05 pm (UTC)
From: [identity profile] jno2004.livejournal.com

ну, новый бизибокс и будет, но безопасТный, с телеметрией, бэкждеком и прочими атрибутами.


интересно, сможет ли оно парсить имена, начинающиеся с minus? и что будет делать? как там в ржавом с целочисленным переполнением?

Edited Date: 2025-06-25 02:07 pm (UTC)

Date: 2025-06-25 02:27 pm (UTC)
From: [identity profile] dzz.livejournal.com

/bin/blackjack и /bin/whores, ага :)

Я посмотрел на rust, посмотрел, и решил, что пока мне и так не скучно. Парсить-то дело нехитрое, а вот код возврата в линухе — uint8

Date: 2025-06-25 03:09 pm (UTC)
From: [identity profile] jno2004.livejournal.com

об чём и речь :)

Date: 2025-06-24 06:06 pm (UTC)
From: [identity profile] parakhod.livejournal.com
Кста, а зачем изобретать велосипед при живом k8s и ещё стопицотмильоне готовых решений для оркестрации, автоскейлинга и прочей терраформово-террагрунтовой гадости?

Date: 2025-06-24 06:30 pm (UTC)
From: [identity profile] dzz.livejournal.com

Наверное, потому что мне нужно иметь возможность развернуть штатным образом и 1 комплект на сервер, без избыточности k8s и прочей терраформово-террагрунтовой гадости.

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

Date: 2025-06-24 06:37 pm (UTC)
From: [identity profile] parakhod.livejournal.com
Я лет 5 назад занимался похожей задачей. Токма там ещё надо было предусматривать разворачивание что на aws в разных конфигурациях для разных клиентов, что on premises, причём ещё в более разнообразных конфигурациях из-за легальных требований в разных странах. Ибо медицина.

Long story short — k8s.

Ну и мелкие скрипты для гитлаба строить несколько докер-билдов по каждому новому тэгу и кидать их в artifactory корпоративный.

Date: 2025-06-25 07:09 am (UTC)
From: [identity profile] dzz.livejournal.com

Ну, у нас своя специфика. Для облачных развёртываний на 100500 заказчиков k8s хорош, но он не решает задачу "похожим образом накатить обновление на 2 магазина в Усть-Пердюевске, с которым связь на оленях" :)

Поэтому я сейчас в большей степени изучаю, что за последние 10 лет народ наплодил в этой сфере.

Edited Date: 2025-06-25 07:11 am (UTC)

Date: 2025-06-25 09:02 am (UTC)
From: [identity profile] parakhod.livejournal.com

Хорошо когда олени есть. А то в некоторых странах по закону больничные сети должны быть изолированы от этих ваших интернетов от слова совсем.
И необходимо посылать оленей с флешками...

Date: 2025-06-25 09:15 am (UTC)
From: [identity profile] dzz.livejournal.com

И как вы, в итоге, обходились? Деплоили на флешку?

Date: 2025-06-25 09:20 am (UTC)
From: [identity profile] parakhod.livejournal.com

Yup. Были специально обученные олени, которые мотались по европам в основном с флешками и обновляли образы контейнеров (ну и заодно фиксили вечно отваливавшуюся интеграцию со всякими локальными HIS). Ну и чинили базу ручками если очередная миграция её ломала (что случалось чуть чаще чем хотелось бы).

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

Edited Date: 2025-06-25 09:22 am (UTC)

December 2025

S M T W T F S
  12 3456
7 8 9 10 11 1213
14151617181920
21222324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 31st, 2025 09:02 pm
Powered by Dreamwidth Studios