web-dev-qa-db-fra.com

marionnette: le redémarrage du service de force après modification de fichier de configuration

comment puis-je vous assurer que si la nouvelle version du fichier de configuration est téléchargée via la marionnette à partir du référentiel principal sur l'un des serveurs gérés Service Le service pertinent est redémarré.

scénario typique - disons qu'il y a une nouvelle configuration Munin ou Apache. Le client de marionnettes le découvre, écrase les fichiers locaux ... et ... - Comment s'assurer que le service est redémarré/rechargé?

merci beaucoup!

21
pQd

Une alternative à notifier est abonner:

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

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

La différence étant que la relation est décrite de l'autre extrémité. Par exemple, vous pouvez rendre Apache S'abonner à /etc/apache/httpd.conf, mais vous créeriez un fichier Vhost notifiant Apache, car votre classe Apache ne saura pas sur chaque Vhost que vous avez.

Une situation double similaire s'applique à l'exigence et auparavant. C'est juste une question qui a plus de sens dans la situation particulière.

En tant que Tchad mentionné, si vous trouvez une marionnette essaie constamment de démarrer votre service, vous devez ajouter un paramètre de modèle, qui est une regex à appliquer dans la liste des processus. Par défaut, la marionnette fera l'arrêt et commencera à redémarrer un service. Si vous ajoutez "hasirstart => true", il utilisera la commande spécifiée dans le paramètre "redémarrer" pour redémarrer le service.

23
David Pashley

il semble que j'ai trouvé quelque chose:

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

service { sshd:
    ensure => running
}

nous verrons comment cela fonctionnera. Quoi qu'il en soit, vos pensées sur le sujet sont les bienvenues.

22
pQd

(Je sais que c'est une superbe question, mais je pensais juste que je mets dans mes deux cents avec un moyen (à mon avis) beaucoup plus facile de le faire)

N'hésitez pas à utiliser la notation de flèche aussi:

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

ou

File['/etc/sshd_config'] ~> Service['sshd']
2
Ethan Brouwer

Cela fonctionne pour Solaris 10 :)

class Sun_cron_root {
    file { "/var/spool/cron/crontabs/root" :
            source => "puppet:///files/cron/Sun/sun_cron_root"
            }

    service {
            "cron":
            provider => "smf",
            ensure => running,
            enable => true,
            hasrestart => true,
            subscribe => File["/var/spool/cron/crontabs/root"]
            }

}
1
CMag