bash.im ithappens.me zadolba.li
11377

Норматив КМС по стрельбе в ногу

Есть такая софтина для управления конфигурациями по имени Puppet. Он умеет стягивать конфиги, скрипты, расписания и многое другое с центрального сервера. В общем, удобно — можно управлять кучей серверов из одной точки.

Так вот, этот Паппет запускается у меня по расписанию, раз в N минут. И всё бы хорошо, но иногда клиентский процесс подвисает, и нужно его ручками прибить и запустить заново. Надоело. За минуту написал скрипт-костыль, который делает ps ax | grep puppet | awk '{print $1}' | xargs kill, то есть ищет запущенные процессы, которые содержат puppet в имени, и их убивает в расчёте на то, что если с предыдущего запуска процесс продолжает выполняться, то он висит. Потом этот же скрипт запускает агентский процесс заново.

Проверяю — работает. Отлично. Через тот же Паппет меняю в кроне запуск самого Паппета на запуск этого костыля, он разъезжается по всем серверам — и…

И понимаю, что скрипт я, естественно, назвал puppet_launcher. Он послушно находит себя в списке процессов, так как содержит слово puppet в имени, и убивается, так и не запустив непосредственно агента.

Дальше — руками по всем серверам…