Marionetten-parametrisierte Klassen-und changing-Parameter
Ich versuche zu verstehen, Puppet parametrisierte Klassen. Ich habe eine parametrisierte Klasse auf diese Weise definiert:
class defaults(
$no_samba = 'FALSE'
)
{
if ($no_samba =~ /TRUE/) {
notify { "will not install samba": } ;
} else {
# install samba here
}
# More server install tasks here...
}
Darüber hinaus definiere ich eine basenode wie folgt:
node basenode
{
class {'defaults':
no_samba => 'FALSE',
}
}
dann instanziiere ich einen server:
node myserver1 inherits basenode {
Class['defaults'] { no_samba => 'TRUE' }
}
Jedoch, funktioniert dies nicht. Die meinserver1 Knoten zeigt nicht die notify-Nachricht, die angibt, dass samba nicht installiert werden.
Wer das liest, Jahre später: Puppet unterstützt Boolesche Werte. Keine Notwendigkeit zu überprüfen, strings mit RegEx. Auch die Verständlichkeit ist immer besser, wenn Sie sich mit positiven flags, z.B.
use_samba = true
statt no_samba = false
.InformationsquelleAutor rlandster | 2012-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist meine non-typo Antwort - ich denke, du läufst in http://projects.puppetlabs.com/issues/7890
Hier ist ein Codebeispiel, wo ich tweaked code, um den Effekt zu erhalten, suchen Sie, basierend auf den umgeschrieben Beispiel im ticket:
Wenn ich ausführen, dass mit " puppet apply Probe.pp' mit puppet 2.7.11 auf Ubuntu 12.04, ich bekomme die folgende Ausgabe:
basenode
ist ein Knoten nicht die Klasse. Macht das einen Unterschied zu deiner Antwort?Nein, In meiner Antwort schaltete ich es aus einem Knoten der Klasse, da puppet erlaubt nicht-parametrisierten Knoten.
Da möchte ich
basenode
zu einem Knoten, wie würde ich Ihre Arbeit-in meinem Fall?Ich weiß nicht, aber ich würde empfehlen, gegen die Verwendung von node-basierte Vererbung. Als die Anzahl der Knoten, die Sie verwalten mit Puppe größer wird, können Sie schließlich wollen, zu migrieren, um eine ENC (docs.puppetlabs.com/guides/external_nodes.html), und wenn Sie Knoten sind dabei alles andere als inklusive Klassen, das mache die migration schwieriger. Ich glaube nicht, dass es alles, was Sie tun können, mit der node-basierte Vererbung, kann nicht behandelt werden, indem Sie eine Klasse, die erbt von anderen Klassen.
InformationsquelleAutor pwan
Wurde samba installiert auf meinserver1, und/oder hat einer der anderen server installieren, der Aufgaben ausgelöst werden ? Wenn nur die notify-Nachricht nicht gedruckt, dann kann es wirklich ein problem mit Benachrichtigen geben gegen die Hinweis-Funktion.
Benachrichtigen Aussehen sollte "notify{"ich habe die geschweiften Klammern und einem abschließenden Doppelpunkt":}
Ankündigung heißt wie eine Funktion: Hinweis("ich Klammern")
Versuchen Sie 'Benachrichtigen' zu 'bemerken' und sehen, ob es funktioniert. Sie können auch prüfen wollen, die Marionetten-syntax mit " puppet-parser validieren Standard.pp' (vorausgesetzt, Ihr Standard-Klasse in Verzug ist.pp)
Etwas anderes zu prüfen - während der Instanziierung 'true' übergeben wird, aber die Bedingung Abgleich gegen 'TRUE', so kann es ein Fall unpassende Frage. Wenn das immer noch nicht, überprüfen Sie die puppetmaster-und client-logs nach Fehlermeldungen.
Sorry: das war noch ein Tippfehler (das habe ich jetzt behoben). Ich werde in den logs.
InformationsquelleAutor pwan
Ich glaube, es hat zu tun mit Umfang. Es sieht aus wie Sie beim erstellen der 'default' - Klasse in der Basis-Knoten festlegen und dann eine Standard-Ressource für die "default" - Klasse nach der Tat in etwas, das erbt, basenode.
http://docs.puppetlabs.com/guides/language_guide.html
"Defaults sind nicht global, sondern beziehen sich nur auf den aktuellen Umfang und die Bereiche unterhalb der aktuellen ein."
InformationsquelleAutor Mark Roggenkamp
Hier ist ein einfaches Beispiel:
Oder:
InformationsquelleAutor kenorb