Ich verwende puppet, um npcd (theoretisch) zum Starten bei der Installation zu bringen. Unter Ubuntu wird dieser Dienst jedoch mit der Standardeinstellung in / etc / default / npcd von RUN = "no" installiert:
$ cat /etc/default/npcd
# Default settings for the NPCD init script.
# Should NPCD be started? ("yes" to enable)
RUN="no"
# Additional options that are passed to the daemon.
DAEMON_OPTS="-d -f /etc/pnp4nagios/npcd.cfg"
Ich würde denken, dass dieser Block der Marionettenkonfiguration sich um Dinge kümmern würde:
service { "npcd":
enable => true,
ensure => "running",
require => Package["pnp4nagios"],
}
Aber leider nicht, und nachdem ich die Datei in / etc / default neu geschrieben habe, bin ich mir nicht sicher, was ich tun soll. Gibt es eine einfache Möglichkeit, den Dienst zu aktivieren, den ich nicht sehe?
Für die Aufzeichnung verwende ich Ubuntu 12.04.2 und Puppet Version 3.1.0.
/etc/default/npcd
mit einerfile
Ressource umschreiben ? Dasfile
hängt vom abpackage
, und dasservice
hängt vom abfile
. Ich bin immer misstrauisch, Dateien über zu bearbeitensed
oderaugeas
wenn ich es vermeiden kann.Antworten:
Das Aktualisieren dieser Datei und der anschließende Neustart des Dienstes ist die einzige Möglichkeit. Sie können eine neue Datei pushen und dann den Dienst dazu bringen, dies zu erfordern. Auf diese Weise wird der Dienst ordnungsgemäß gestartet, wenn der Inhalt aktualisiert wird.
Wenn Sie die Datei nicht vollständig ersetzen möchten, können Sie das Puppet augeas-Tool verwenden, um nur die einzelne Zeile in der Standarddatei zu ändern.
Es gibt einige Dienste in Debian und seinen Derivaten, die nach der Installation des Pakets nicht automatisch gestartet werden, es sei denn, sie sind in / etc / default aktiviert. Irgendwie nervig.
Bearbeiten: Zu Ihrer Information, das Init-Skript liest tatsächlich die Werte aus dieser Datei (bezieht sie normalerweise nur aus der Quelle).
quelle
update-rc.d
zum Aktivieren / Deaktivieren des Dienstes verwenden, nicht/etc/default
- es ist keine Standardmethode zum Verwalten von Diensten, daher liegt dies außerhalb der Kontrolle von Marionetten.Zum Teufel habe ich ein paar der Standard-Daemons auf meinen 12.04-Maschinen überprüft. Sie müssen die Datei verwalten, um sie zu diesem Zeitpunkt nicht zu umgehen.
snmpd
gesammelt
Marionette
mdadm
Haproxy
quelle
Ich denke, eine der möglichen Möglichkeiten, dies zu tun, ist die Verwendung eines Augeas-Werkzeugs mit einer Marionette, z
Einzelheiten finden Sie im Handbuch
quelle
Ich benutze sed, um die Datei zu ändern. Augeas scheint übertrieben.
Idee von hier übernommen:
http://www.codelord.net/2010/12/19/ using-puppet-to-automatically-configure-new-ec2-instances/
Also, in deinem Fall
quelle
Dies mit dem
augeas
Typ in Puppet zu tun, ist eine Möglichkeit (wie von @DukeLion vorgeschlagen).Eine andere Möglichkeit besteht darin, das
augeasproviders
Modul zusammen mit demshellvar
Anbieter zu verwenden:Dies ist besser, da Augeas vom Ruby-Anbieter sauber verwendet wird. Es wird auch das Zitieren und Kommentieren automatisch verwalten.
quelle