puppet: принудительный перезапуск службы после изменения файла конфигурации

puppet: принудительный перезапуск службы после изменения файла конфигурации

как я могу гарантировать, что если новая версия файла конфигурации загружается через Puppet из главного репозитория на один из управляемых серверов, соответствующая служба перезапускается?

типичный сценарий - предположим, есть новая конфигурация Munin или Apache. Клиент Puppet обнаруживает ее, перезаписывает локальные файлы... и... - как убедиться, что служба перезапущена/перезагружена?

большое спасибо!

решение1

Альтернативой уведомлению является подписка:

file { "/etc/sshd_config":
    source => "....",
}

service { sshd:
    ensure => running,
    subscribe => File["/etc/sshd_config"],
}

Разница в том, что связь описывается с другого конца. Например, вы можете заставить apache подписаться на /etc/apache/httpd.conf, но вы должны заставить файл vhost уведомлять apache, так как ваш класс apache не будет знать о каждом vhost, который у вас есть.

Аналогичная ситуация с двойным окончанием применима к require и before. Вопрос только в том, что имеет больше смысла в конкретной ситуации.

Как упомянул Чад, если вы обнаружили, что puppet постоянно пытается запустить вашу службу, то вам нужно добавить параметр шаблона, который является регулярным выражением для применения к списку процессов. По умолчанию puppet выполнит остановку и запуск для перезапуска службы. Если вы добавите "hasrestart => true", то он будет использовать команду, указанную в параметре "restart", для перезапуска службы.

решение2

кажется, я что-то нашел:

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

посмотрим, как это сработает. В любом случае, ваши мысли по этому поводу приветствуются.

решение3

(Я знаю, что это очень старый вопрос, но я просто подумал, что вставлю свои пять копеек и расскажу о (на мой взгляд) гораздо более простом способе решения этой проблемы)

Вы также можете свободно использовать стрелочные обозначения:

file { "/etc/sshd_config":
  source => "....",
} ~>
service { sshd:
  ensure => running
}

или

File['/etc/sshd_config'] ~> Service['sshd']

решение4

Существует несколько эквивалентных обозначений:

Поставить в известность:

file { '/etc/sshd_config':
    notify => Service[sshd],
}

service { sshd:
    ensure => running
}

Подписаться:

file { '/etc/sshd_config':
   ...
}

service { sshd:
    ensure => running,
    subscribe => File['/etc/sshd_config'],
}

Обозначение стрелок:

File['/etc/sshd_config'] ~> Service['sshd']

Цепочка деклараций

file { '/etc/sshd_config':
   ...
}
~> service { sshd:
    ensure => running,
}

Если вы хотите вызвать reloadвместо этого restart, измените декларацию службы:

service { sshd:
    ensure => running,
    restart => 'pkill -HUP sshd', # if service support such reload
}

Связанный контент