Wie wählt der Puppenserver die Manifeste aus, die auf einem Agenten ausgeführt werden sollen

377
dlsa

Aus der Dokumentation des Puppenservers verstehe ich, dass Sie ein Manifestverzeichnis auf dem Server zum Speichern der Puppenskripte konfigurieren können.

Dann kontaktiert jeder Agent den Server, um seine Konfiguration zu aktualisieren. Wie werden die auszuführenden Skripts auf dem Server ausgewählt?

0

1 Antwort auf die Frage

1
Dominic Cleal

Puppet Manifeste (der übliche Begriff, anstatt Skripte ) werden in der Regel organisiert in ein Modul pro OS - Komponente oder einer Dienstleistung (zB apache, ntp, postgresql), mit einer oder mehreren Klassen, die alles enthalten, benötigt es zu konfigurieren.

Die Puppet - Klasse enthält alle Dateien, Paket- und Serviceressourcendefinitionen für die OS - Komponente. Im einfachsten Fall ist es so etwas wie:

class apache { package { "httpd": ensure => installed, } -> service { "httpd": ensure => running, } } 

Der Agent kontaktiert der Master für den Katalog (Liste der Ressourcen zu konfigurieren) und in diesem Prozess wird der Wirt klassifiziert und eine Liste der Klassen werden enthalten im Katalog.

Im einfachsten Fall können Sie ein Hauptmanifest ( doc ) haben, das Knotenlisten mit ihren Hostnamen enthält und die Klassen enthält, die Sie für sie verwenden möchten:

node foo.example.com { include apache } 

Das Hauptmanifest wird automatisch kompiliert, wenn ein Agent seinen Katalog anfordert, und wenn eine Knotendefinition mit dem Namen eines Agenten übereinstimmt, wird auch der Inhalt dieser Klassen dahingehend ausgewertet. Das Pflegen vieler Knotendefinitionen im Code ist nicht sehr effizient.

Sie können Hiera und hiera_include auch verwenden, um die Liste der Klassen in externen Hiera- Datendateien zu speichern. Ein Hauptmanifest enthält dann hiera_include('classes'). Hiermit wird der Wert classesvon Hiera nachgeschlagen und dann alle diese Klassen einbezogen.

Schließlich kann der Master mit einem External Node Classifier (ENC) konfiguriert werden . Hierbei handelt es sich normalerweise um ein Skript, das aufgerufen wird, wenn der Agent eincheckt. Er erhält den Namen des Agenten und sollte eine Liste von Klassen (und optional, Parametern und der.) Ausgeben Umwelt ). Es könnte eine Datenbank oder jegliche Art von Informationen verwendet werden, die Sie in Ihrer Organisation haben.