Назад | Перейти на главную страницу

Puppet: как запустить exec, только если марионетка внесла изменения

Мы осуществляем базовое управление некоторыми серверами через марионетку - сами серверы работают как часть кластерной системы, которая обрабатывает другие аспекты, такие как учетные записи пользователей и т. Д., И включает сценарий мониторинга, который обнаруживает изменения в файлах ключей (/ etc / passwd и т. Д.). Если марионетка обновляет пакет, она потенциально изменяет эти ключевые файлы, запуская систему мониторинга. (что не случайно)

В системе мониторинга есть команда, которую можно запустить вручную, чтобы очистить состояние, и мы должны делать это каждый раз, когда марионетка применяет какие-либо изменения, когда мы начинаем получать электронные письма!

Мы могли бы определить exec, который запускается в post run_stage для запуска команды, но по умолчанию он будет запускаться каждый раз при запуске марионетки, а затем наши отчеты всегда будут отображаться, когда марионетка внесла изменения, независимо от того, были ли внесены изменения или нет.

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

Если exec ресурс имеет выделенный этап, вы можете реализовать желаемое поведение, подписавшись на все другие этапы, например

exec { "pacify-rkhunter":
    ...
    subscribe   => Stage['pre','main','aux'],
    refreshonly => true,
}