@pro_enterpriseЭта группа больше не существует

Страница 1311 из 1317
Vladimir
21.07.2017
15:45:53
и системд нужно будет натравить на этот пид

если демон и пид не пишет то релоад сделать нельзя будет

Vladislav
21.07.2017
15:46:59
если демон пид не пишет, тоже не проблема, с однострочной оберткой на баше

Vladimir
21.07.2017
15:47:23
или авторы могли бы сделать PreStop action

Google
Vladimir
21.07.2017
15:47:56
если демон пид не пишет, тоже не проблема, с однострочной оберткой на баше
и тут беда еще в том что если у демона есть рестарт и релоад )

и они должны быть разные

тогда ты должен будешь пожертвовать одним из двух вещей

Vladislav
21.07.2017
15:48:44
тут не в курсе. разные - всмысле отличаться строками в сервис файле?

Vladimir
21.07.2017
15:48:57
тут не в курсе. разные - всмысле отличаться строками в сервис файле?
ну в смысле у тебя рестарт при апгрейде демона, релоад при изменении конфига

Vladislav
21.07.2017
15:49:14
а. логически

Vladimir
21.07.2017
15:49:18
тебе нужно чтобы рестарт не убивал демон если новая версия не будет работать с этим конфигом

но в системд ты не можешь

тебе нужно что-то внешнее что проверит можно ли делать рестарт

Vladislav
21.07.2017
15:49:57
фишка в том что рестат в семантике systemd это stop -> poststop -> prestart -> start
дак это, бэкапить конфиг в успешном постстарте

а дальше его ревертить какнибудь, если не удалось рестартнуться

Vladimir
21.07.2017
15:50:24
дак это, бэкапить конфиг в успешном постстарте
ну так пример из жизни был выше - недотестировали все роли и выкатили демон и он на одной из ролей не смог рестартануть после апгрейда

ну бывает когда он катится на 100 ролей

Google
Vladislav
21.07.2017
15:50:34
onFailure есть же

Vladimir
21.07.2017
15:50:46
onFailure есть же
ну ты не можешь пакет отревертить там )

Vladislav
21.07.2017
15:51:07
пакет явно нет :)

Vladimir
21.07.2017
15:51:24
@themiron ну я предлагаю тебе просто реализовать такой функционал для демона

и потом показать решение которое работает

Vladislav
21.07.2017
15:51:34
думаю, костылями и палками, при условии константности пакета, можно то, что ты хочешь сделать

PreStart конечно был бы полезен тут

Vladimir
21.07.2017
15:51:57
думаю, костылями и палками, при условии константности пакета, можно то, что ты хочешь сделать
ну я не смог, на уровне puppet'а костыльнул конечно, но это выглядит ужасно мягко говоря

PreStart конечно был бы полезен тут
он есть, но престарт отработает после остановки

Vladislav
21.07.2017
15:52:22
ну я не смог, на уровне puppet'а костыльнул конечно, но это выглядит ужасно мягко говоря
у меня в голове костыли на скриптах. ничем не прекраснее )

Vladimir
21.07.2017
15:52:42
у меня в голове костыли на скриптах. ничем не прекраснее )
в рамках скриптов такие костыли нормальны и реализуются просто

а главное работают предсказуемо

ExecStartPre, ExecStartPost, ExecStopPost

Vladislav
21.07.2017
15:54:36
ну, собственно тогда никто не запретит ExecStartPre=/path/to/bicycle.sh prestart ExecStart=/path/to/bicycle.sh start ...

и там любой велосипедизм

Vladimir
21.07.2017
15:55:04
@themiron мы начинаем уже по третьему кругу одно и то же мусолить

Vladislav
21.07.2017
15:55:29
ладно. я не вник в тему, ок

Vladimir
21.07.2017
15:55:30
я настойчиво предлагаю реализовать юнит который делает описанный мною кейс

Google
Vladimir
21.07.2017
15:56:15
@themiron 'systemctl restart' делает строго ExecStop -> ExecStopPost -> ExecStartPre -> ExecStart -> ExecStartPost

всегда

это не меняется

ExecStop если не отработал за таймаут - шлет SIGKILL

вопрос - как в таких условиях сделать так чтобы рестарт фейлился если конфиг битый?

релоад трогать нельзя, он уже заюзан

Vladislav
21.07.2017
15:57:57
ок, велосипед - пусть шлет отдельному pid-у вне группы, который будет проверяться вачдогом и перезапускаться. сам это фейковый демон будет дальше контролировать, валидный ли конфиг или нет, со всеми вытекающими

Vladislav
21.07.2017
15:58:22
ага

Vladimir
21.07.2017
15:58:34
тут вот даже решение с чеком через папет элегантнее

Evgeny
21.07.2017
15:59:21
Вакансия: специалист техподдержки пользователей в международную компанию. Место: СПб, офис в 50 метрах от метро «Обводный канал». Требования: знания на уровне молодого Windows администратора (классика: AD, DNS и т. п.); Английский (хотя бы мало-мало разговорный, т.к. иногда говорить придется). ЗП: со всеми бонусами в районе 60 График: Пятидневка с 9 до 18 (на самом деле до 17) Подробности по ссылке https://spb.hh.ru/vacancy/21688425 . Если нужна ещё какая-то информация, можно спросить всё что интересно у @hitriy

Vladimir
21.07.2017
15:59:21
и при этом инит в этом плане элегантнее и лучше

Evgeny
21.07.2017
15:59:33
Мы тоже ищем хорошего коллегу

Vladislav
21.07.2017
16:00:19
еще вариант - по стопу запускать с некоторым таймаутом внутренний рестарт, тем же скриптом. далее в престарте чекать конфиг и гасить таймер рестарта, если всё плохо, возвращая ошибку

т.е рестарт сфейлится, сервис как работал так и будет работать

Vladimir
21.07.2017
16:01:35
таймаут задается в юните

пока он не сработает или все пиды не сдохнут, системд не перейдет к StartPre

Vladislav
21.07.2017
16:02:18
пид не проблема, PIDFile есть

Vladimir
21.07.2017
16:02:25
пид не проблема, PIDFile есть
ну системд его убьет

Google
Vladimir
21.07.2017
16:02:30
а мы хотели этого избежать

рестарт так и так сфейлится так как старт не отработает или престарт

но демон сдохнет

задача же в том чтобы если демон не сможет сделать старт его не стопать

Vladislav
21.07.2017
16:03:06
в туда можно записать левый пид, или просто с Type пошаманить, пид не потребуется (тут не уверен)

Vladimir
21.07.2017
16:03:21
системд при запуске демона зафигачит в цгруппу

и все дети его будут в этой группе

Vladislav
21.07.2017
16:03:39
да с чего группа то умрет, если они с пидом не связана?

откуда systemd знать о группе

Vladimir
21.07.2017
16:03:48
откуда systemd знать о группе
он их сам туда поместит

Vladislav
21.07.2017
16:03:54
всем процессам? )

Vladimir
21.07.2017
16:04:00
@themiron всем процессам группы

dk
21.07.2017
16:04:08
Системд - самыйлучий

Vladislav
21.07.2017
16:04:12
группа определяется по главному пиду

если он левый, то и группа мимо

Vladimir
21.07.2017
16:04:25
ну и в таком случаи ты получишь то же поведение как отключение отправки килла

Vladislav
21.07.2017
16:04:39
насколько я знаю - точно да (про posix kill)

Google
Vladimir
21.07.2017
16:04:51
системд перестанет контролировать демон

значит статус не будет работать

Vladislav
21.07.2017
16:05:00
ну и в таком случаи ты получишь то же поведение как отключение отправки килла
ну. и делай что хочешь, нужно - сам отправишь группе, если надо

Vladimir
21.07.2017
16:05:06
значит он будет его пытаться оживить

@themiron это еще больший пиздец чем с фейковым демоном

потому что фактически тебе придется сделать еще больше работы

чтобы оно работало

Vladislav
21.07.2017
16:06:28
поведение рестрата контролируется с помощью Restart, в т.ч. по таймауту

пид в этом случае не нужен

чтобы оно работало
дык я думал задача навелосипедить, чтобы работало, нет? )

Vladimir
21.07.2017
16:07:11
если заработает твой велосипед

Vladislav
21.07.2017
16:08:05
давай проверим исходные. есть демон, который в случае кривого нового конфига должен при рестарте остаться рабочим, а сам рестарт - сфейлится. все верно?

Vladimir
21.07.2017
16:08:27
когда он работает

то есть когда ты все починил restart должен отработать нормально как и планировалось

Vladislav
21.07.2017
16:08:45
то есть, по статусу должен считать что все ок

Vladimir
21.07.2017
16:08:47
то есть убить старый и запустить новый

то есть, по статусу должен считать что все ок
может считать что и сдохший, если по рестарту старый умрет

Vladislav
21.07.2017
16:09:18
мм. а как нужно по условиям задачи то?

Vladimir
21.07.2017
16:09:34
мм. а как нужно по условиям задачи то?
ну пусть статус думает что все ок

Страница 1311 из 1317

Эта группа больше не существует Эта группа больше не существует