Puppet - Platzhalter-Host in node.pp definieren

10

Gibt es eine Möglichkeit, Wildcard-Hosts in Puppetmasters node.pp zu definieren?

Angenommen, ich möchte, dass alle Hosts in einer Domäne eine Reihe von Klassen erhalten. Kann ich Folgendes tun:

# nodes.pp
#

node basenode {
  include  admina, adminb, admic
  }


node "*.acme.com" {
    include adminc
    }
Lepole
quelle

Antworten:

9

Nicht so. Sie können einen 'Standard'-Knoten erstellen, der für jeden signierten Client gilt.

node "default" {
   include foo
}

Sie können jedoch nur 1 Standard festlegen. Wenn Sie die von Ihnen beschriebene Funktionalität replizieren möchten, können Sie die Klassifizierungsmethode external_nodes verwenden. Grundsätzlich schreiben Sie ein Skript, das gültiges yaml zurückgibt, wenn ein Client eine Verbindung herstellt. Dieses Skript kann es tun, wie Sie wollen, fqdn überprüfen, eine Datenbank abfragen, ldap drücken usw.

Stock
quelle
+1 Stimme zu external_nodes
David Pashley
16

Reguläre Ausdrücke sind jetzt in Puppet 0.25 möglich. Was Sie also wollen, ist möglich:

node /^(foo|bar)\.example\.com$/ {
include blah
}
Pheezy
quelle
3

Bisher wurden nur wenige Distributionen mit 0,25 ausgeliefert. In meinem Centos5 mit 2.24.8 aus dem EPEL-Repo musste ich für meine Worker-Knoten mit Hostnamen wie wn10.example.com Folgendes tun:

node  default {
    $node_type = regsubst($hostname, '^([a-z]+).*$', '\1')
    case $node_type{
        wn: {include worker_node}
        default: {include generic_node}
    }
}

quelle
Schnelles Update - Puppet-2.6.12-1.el5.noarch ist jetzt bei EPEL erhältlich (unterstützt reguläre Ausdrücke in Knotennamen).
Plasmid87