Frage Wie setze ich einige Knoten auf Pause / Hold / Noop?


Gibt es eine Option, einen Knoten auf der Seite des Puppetmasters in die Warteschleife zu setzen (noop)? Ich suche nach einer Einstellung wie im folgenden Beispiel. Jeder Knoten, der eine Variable namens noop hat, die in seiner Definition auf true gesetzt ist, wird nicht aktualisiert.

So wird beispiel1.node.com die test1-Datei nicht nach mehreren Marionetten-Client-Läufen haben, aber example2.node.com wird die Datei haben.

Gibt es eine solche Option? Gibt es einen anderen Ansatz? (Natürlich kann ich einfach einen "_" zum Knotennamen hinzufügen und es wird nicht mehr übereinstimmen. Ich suche nach dem offiziellen Weg.

node "example1.node.com"
{
    $noop = true
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}

node "example2.node.com"
{
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}

5
2018-06-24 23:28


Ursprung


Die Frage wird nicht direkt beantwortet, aber mcollective funktioniert sehr gut, um Puppets zu deaktivieren und Puppet-Runs auf Ihren Knoten zu planen. - robbyt


Antworten:


Ein üblicher Ansatz besteht darin, einen externen Knotenklassifikator zu verwenden, um Klassen und / oder Attribute an Knoten anzufügen, die Ihre eigene Geschäftslogik verwenden. Es ist dokumentiert am http://docs.puppetlabs.com/guides/external_nodes.html

Wenn Sie nichts in Ihrer Datei anwenden möchten, können Sie etwas hinzufügen site.pp:

if $noop == true {
  fail('noop, I don't do anything!')
}

Ein bisschen fortgeschrittener. Wenn Sie möchten, dass die Puppe Ihre Manifeste nicht anwendet, wenn / etc / noop auf dem System existiert, können Sie ein benutzerdefinierte Tatsache:

Facter.add('noop') { setcode { File.exists? '/etc/noop' } }

dann benutze in site.pp:

if $::noop == true {
  fail('noop, I don't do anything!')

2
2017-07-04 00:33





Ich habe keine Möglichkeit gefunden, Noop in der Knotendefinition so festzulegen, dass ich Änderungen auf dem Client sehen würde (wie der Clientagent mit --noop ausgeführt wurde), aber der schnellere Weg für mich, einen Knoten zu deaktivieren, war:

Hinzufügen eines Unterstrichs vor dem Knotennamen, wie _example1.node.com Mit make wird verhindert, dass der Knoten mit fqdn übereinstimmt, daher wird die Standardkonfiguration angewendet, sofern eine existiert (siehe Kommentar von @GargantuChet).

node "_example1.node.com"
{
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}

1
2017-12-02 13:10



Beachten Sie, dass dies ist nicht Aktivieren des Noop-Modus des Agenten; es verhindert die Puppe Server von der Suche nach einer Richtlinie, die auf den Knoten angewendet werden soll (zumindest basierend auf dem Knotennamen). Dies hätte zur Folge, dass der Agent nicht ausgeführt werden kann oder der Server die Standardkonfiguration des Knotens (falls vorhanden) verwendet, um den Katalog zu erstellen. Nichts davon ist notwendigerweise ein Problem, aber als jemand, der Puppet gelernt hat, brauchte ich etwas Zeit, um die Implikationen zu bemerken. - GargantuChet
@GargantuChet hat einen Teil Ihres Kommentars zur Antwort hinzugefügt. Danke dir - c33s