Vladimir
ещё можно отдельный сервис и туда эту чекалку при выключении
пока непонятно как это спасет от SIGKILL в морду
Alexander
ну вот можно сделать service.target и к нему два check-app-service-config.service и app-service.service
Alexander
один за другим (прописать там After= )
Alexander
это как альтернатива ExecStop="conftest && kill"
Alexander
и делать рестарт таргета, а не сервиса
Vladimir
это как альтернатива ExecStop="conftest && kill"
ну ExecStop в таком виде не работает
Vladimir
ну вот можно сделать service.target и к нему два check-app-service-config.service и app-service.service
да вот тут вопрос в том что сделает системд в ситуации когда check-app-service-config сфейлится
Alexander
если в app-service.service написано Requires=check-app-service-config.service , то по идее он не должен запускать его
Alexander
или не Requires а что-то другое, возможно?
Alexander
там что-то такое было, я сильно не вникал
Vladimir
если в app-service.service написано Requires=check-app-service-config.service , то по идее он не должен запускать его
так у меня задача не в том чтоб не запустить, а в том чтоб не ПЕРЕзапустить если конфиг-тест не отработал
Vladimir
@lorddaedra давай представим допустим nginx (пример не очень хороший, потому что там альтернативным способом проблема решается). Ты ставишь новую версию
Vladimir
Чтобы обновить версию нужно делать restart
Alexander
вот эти моменты через systemd криво решаются, да
Vladimir
но ты не хочешь уронить сервис если по какой-то причине конфиг оказался невалидным.
Vladimir
поэтому нужно проверить конфиг и сделать рестарт
Vladimir
но у системд нет PreStop
Vladimir
в nginx это решается через скрипты для апгрейда
Alexander
видимо, это нужно делать скриптом
Vladimir
и делать релоад вместо рестарт
Vladimir
видимо, это нужно делать скриптом
ну сейчас это решается тем что в папете прописан notify на Exec который делает conftest && systemctl restart
Vladimir
что решает не все кейсы, но их большую часть
Alexander
я не знаю, как без скриптов тут гибко настроить systemd, мне бы хотелось, чтобы этот функционал появился в новых версиях
Alexander
у самого нечто подобное было
Vladimir
просто кажется тут даже два сервиса не помогут
Roki
А если конфиг не валидный и рестарта не произошло. Дальше то что? Бинарник обновился уже.
Vladimir
А если конфиг не валидный и рестарта не произошло. Дальше то что? Бинарник обновился уже.
дальше можно увидеть что что-то пошло не так, пойти и посмотреть почему. То что бинарник обновился не значит что сервис перезапустился
Vladimir
сервис со старым конфигом в старой версии продолжает работать
Pavel
ты можешь руками удалить любое правило и добавить новое в любое место таблицы фильтра
Vladimir
А как? Должны быть какие то нотификейшины, процедуры.
чем бы ты это не делал фразы failed to restart + exit code достаточно чтобы это заметить
Pavel
ты можешь руками удалить любое правило и добавить новое в любое место таблицы фильтра
от того, что модно стирать всю таблицу правил и заного все вносить не значит, что такого функционала нет.
Vladimir
как зафейлившийся паппет ран или если кто-то через pssh/salt дергает команды или еще каким образом
Pavel
как зафейлившийся паппет ран или если кто-то через pssh/salt дергает команды или еще каким образом
чисто в теории ничто не мешает это сделать. Но то что это делается как удаление гланд через задницу никто не отменял
Dmitry
Ну инструмент относительно свежий и развивается
Vladimir
Ну инструмент относительно свежий и развивается
нефиг пихать всякое сырое говно в LTS варианты дистрибутивов
Anonymous
ну чисто на практике в системд такого функционала нет
напиши свою задачу в #rhel #fedora канале в телеграмме и irc, тебе напишут
Anonymous
нет, помогут твой старый конфиг преобразовать в то что нужно иниту системд
Vladimir
нет, помогут твой старый конфиг преобразовать в то что нужно иниту системд
ок, спасибо за совет, попробую. Но кажется что в системд нет такого функционала в принципе.
Anonymous
у меня была задача, чтобы если сервис после моих изменений не запускался, он не перезагружался
Anonymous
мне в 2014 помогли это сделать для федора
Anonymous
это делалось в системд ините
Anonymous
но как именно я не помню уже
Anonymous
правда сразу предупрежу, возможно там будет systemd-nspawn служба участвовать
Anonymous
то есть првоерять он будет в нём
Anonymous
и для этого скорее всего придёться править selinux и разрешённые id в системе
Vladimir
так что ничего не придется править
Vladimir
ок, поставил себе напоминаналку
Anonymous
да селинукс давно выпилен
а чем тогда безопасность делаешь?
Anonymous
я вот например составляю дефолт список id, и вне их потом запрещаю запускать
Vladimir
а чем тогда безопасность делаешь?
безопасниками, которые юзают что-то для анализа происходящего.
Anonymous
сколько у вас там народу
Anonymous
ну безопасники, сетевики, железячники
Anonymous
софтовики
Vladimir
ну безопасники, сетевики, железячники
я не считал, технарей больше тысячи
Vladimir
но в технарей почему-то включают еще дизайнеров и копирайтеров
Vladimir
@erzent ты удивишься, но почти любая контора где серверов становится несколько сотен, первым делом вырубает selinux и apparmor потому что их очень дорого поддерживать. И в плане оверхеда по скорости и в плане конкретных кейсов которые они решают
Anonymous
и там selinux работает
Vladimir
ну ок, покка не противоречит тому что я сказал
Anonymous
мне уже эта фича с id помогала 4раза
Anonymous
офисных, когда есть люди которым заставили дать рут пароль
Anonymous
но при том мне нужно было, чтобы они не могли весь сервер переебать
Anonymous
вот в этой конторе оч много где будет стоять selinux из-за того мальчика зама начальника разработки
Vladimir
Anonymous
в каких кейсах?
вон недавно этот клоун залез в AD и добавил gpo из-за которого нам прилетело больше 100 писем
Anonymous
это он типа сделал, чтобы меньше шанс заражения вирусами был
Pavel
хочешь что-то внести - пишешь зачем, кому.
Pavel
если изменения нет - штраф
Pavel
я уж молчу про планы внедрения и ко
Anonymous
ему на планы пока пох