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
    }

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.


+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
}

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}
    }
}

Schnelles Update - Puppet-2.6.12-1.el5.noarch ist jetzt bei EPEL erhältlich (unterstützt reguläre Ausdrücke in Knotennamen).
Plasmid87
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.