Erstellen einer Datei mit Puppet mit Fakten von mehreren Hosts

Erstellen einer Datei mit Puppet mit Fakten von mehreren Hosts

Ich versuche, mit Puppet eine Konfigurationsdatei zu erstellen, die folgendermaßen aussieht:

[All]
Hosts=apt-dater@puppetmaster;apt-dater@blaster; (etc...)

Grundsätzlich benötigt diese Datei einen Eintrag für jeden Knoten, der die Klasse apt-dater enthält. Ich habe mit exportierten Ressourcen experimentiert, kann sie aber nicht sauber zusammenfügen. Wie erstelle ich diese Datei?

Antwort1

Ich gehe davon aus, dass Sie die Prinzipien des Exportierens und Sammelns einzelner Typressourcen bereits verstehen. Nur nicht, wie Sie diese einzelnen Ressourcen in eine einzelne Datei übersetzen. Puppet bietet hierfür zwei Methoden:

Augeas ist ein sehr cleveres Tool, kann sich aber als komplex erweisen, wenn Sie anfangen müssen, Ihre eigenen Linsen zu schreiben und zu verteilen. Es puppet-concatist jedoch sehr einfach zu verstehen. Ich habe das Folgende nicht auf Syntax getestet, aber es sollte Sie auf den richtigen Weg bringen:

# apt-dater/manifests/server.pp
class apt-dater::server {
    file { "/somepath/apt-dater/hosts.conf": }
    concat::fragment{ "apt-dater_hosts_header":
        content => "[All]\nHosts=",
        order   => 1,
    }
    Apt-dater::Client <<| |>>
}

# apt-dater/manifests/defines/register.pp
define apt-dater::register($order=10) {
    concat::fragment{ "apt-dater_hosts_$name":
        target  => "/somepath/apt-dater/hosts.conf",
        content => "apt-dater@${name};",
    }
}

# apt-dater/manifests/client.pp
class apt-dater::client {
    @apt-dater::register{ "$hostname": }
}

Richten Sie dann die Knoten ein:

# On the central server.
include apt-dater::server

# On each of the client nodes.
include apt-dater::client

verwandte Informationen