marioneta: forzar el reinicio del servicio después de modificar el archivo de configuración

marioneta: forzar el reinicio del servicio después de modificar el archivo de configuración

¿Cómo puedo garantizar que si se descarga una nueva versión del archivo de configuración a través de Puppet desde el repositorio principal a uno de los servidores administrados, se reinicie el servicio relevante?

Escenario típico: digamos que hay una nueva configuración de munin o apache. El cliente Puppet lo descubre, sobrescribe los archivos locales... y... - ¿Cómo asegurarse de que el servicio se reinicie/recargue?

¡muchas gracias!

Respuesta1

Una alternativa para notificar es suscribirse:

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

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

La diferencia es que la relación se describe desde el otro extremo. Por ejemplo, puede hacer que Apache se suscriba a /etc/apache/httpd.conf, pero haría que un archivo vhost notifique a Apache, ya que su clase de Apache no sabrá acerca de todos los vhost que tenga.

Una situación similar de doble extremo se aplica a require y before. Es sólo una cuestión de qué tiene más sentido en la situación particular.

Como mencionó Chad, si encuentra que Puppet intenta constantemente iniciar su servicio, entonces necesita agregar un parámetro de patrón, que es una expresión regular para aplicar a la lista de procesos. De forma predeterminada, Puppet detendrá y comenzará a reiniciar un servicio. Si agrega "hasrestart => true", utilizará el comando especificado en el parámetro "restart" para reiniciar el servicio.

Respuesta2

parece que he encontrado algo:

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

service { sshd:
    ensure => running
}

veremos cómo funciona. De todas formas tus opiniones sobre el tema son bienvenidas.

Respuesta3

(Sé que esta es una pregunta muy antigua, pero pensé en aportar mi granito de arena con una forma (en mi opinión) mucho más fácil de hacerlo)

Siéntase libre de utilizar también la notación de flechas:

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

o

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

Respuesta4

Hay varias notaciones equivalentes:

Notificar:

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

service { sshd:
    ensure => running
}

Suscribir:

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

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

Notación de flecha:

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

Encadenamiento de declaraciones

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

Si desea activar reloaden lugar de restart, ajuste la declaración de servicio:

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

información relacionada