Marionettenfunktion
Puppet unterstützt Funktionen wie jede andere Programmiersprache, da die Basisentwicklungssprache von Puppet Ruby ist. Es unterstützt zwei Arten von Funktionen, die unter dem Namen bekannt sindstatement und rvalue Funktionen.
Statementsstehen für sich und haben keinen Rückgabetyp. Sie werden zum Ausführen eigenständiger Aufgaben wie dem Importieren anderer Puppet-Module in die neue Manifestdatei verwendet.
Rvalue Gibt Werte zurück und kann nur verwendet werden, wenn für die Anweisung ein Wert erforderlich ist, z. B. eine Zuweisung oder eine case-Anweisung.
Der Schlüssel hinter der Ausführung der Funktion in Puppet ist, dass sie nur auf dem Puppet-Master ausgeführt wird und nicht auf dem Client oder dem Puppet-Agenten. Daher haben sie nur Zugriff auf die Befehle und Daten, die auf dem Puppet Master verfügbar sind. Es gibt verschiedene Arten von Funktionen, die bereits vorhanden sind, und sogar der Benutzer hat das Recht, benutzerdefinierte Funktionen gemäß den Anforderungen zu erstellen. Einige eingebaute Funktionen sind unten aufgeführt.
Dateifunktion
Die Dateifunktion der Dateiressource besteht darin, ein Modul in Puppet zu laden und die gewünschte Ausgabe in Form einer Zeichenfolge zurückzugeben. Die gesuchten Argumente sind die Referenz <Modulname> / <Datei>, mit deren Hilfe das Modul aus dem Dateiverzeichnis des Puppet-Moduls geladen werden kann.
Wie script lädt / tesingscript.sh die Dateien aus <Modulname> /script/files/testingscript.sh. Die Funktion kann einen absoluten Pfad lesen und akzeptieren, wodurch die Datei von einer beliebigen Stelle auf der Festplatte geladen werden kann.
Funktion einschließen
In Puppet ist die Include-Funktion der Include-Funktion in jeder anderen Programmiersprache sehr ähnlich. Es wird für die Deklaration einer oder mehrerer Klassen verwendet, wodurch alle in diesen Klassen vorhandenen Ressourcen ausgewertet und schließlich einem Katalog hinzugefügt werden. Die Funktion include akzeptiert einen Klassennamen, eine Liste von Klassen oder eine durch Kommas getrennte Liste von Klassennamen.
Eine Sache, die Sie bei der Verwendung von a beachten sollten includeAussage ist, es kann mehrfach in einer Klasse verwendet werden, hat aber die Einschränkung, eine einzelne Klasse nur einmal einzuschließen. Wenn die eingeschlossene Klasse einen Parameter akzeptiert, sucht die Include-Funktion automatisch nach Werten, wobei <Klassenname> :: <Parametername> als Suchschlüssel verwendet wird.
Die Include-Funktion bewirkt nicht, dass eine Klasse in der Klasse enthalten ist, wenn sie deklariert wird. Dazu müssen wir eine enthaltene Funktion verwenden. Es wird sogar keine Abhängigkeit in der deklarierten Klasse und den sie umgebenden Klassen erstellt.
In der Include-Funktion ist nur der vollständige Name einer Klasse zulässig, relative Namen sind nicht zulässig.
Definierte Funktion
In Puppet hilft die definierte Funktion beim Bestimmen, wo eine bestimmte Klasse oder ein bestimmter Ressourcentyp definiert ist, und gibt einen Booleschen Wert zurück oder nicht. Mit define können Sie auch bestimmen, ob eine bestimmte Ressource definiert ist oder ob die definierte Variable einen Wert hat. Bei der Verwendung der definierten Funktion ist zu beachten, dass diese Funktion mindestens ein Zeichenfolgenargument verwendet. Dies kann ein Klassenname, ein Typname, eine Ressourcenreferenz oder eine Variablenreferenz der Form „$ name“ sein.
Definieren Sie Funktionsprüfungen sowohl für native als auch für definierte Funktionstypen, einschließlich der von Modulen bereitgestellten Typen. Typ und Klasse stimmen mit ihren Namen überein. Die Funktion entspricht der Ressourcenverzögerung unter Verwendung der Ressourcenreferenz.
Funktionsübereinstimmungen definieren
# Matching resource types
defined("file")
defined("customtype")
# Matching defines and classes
defined("testing")
defined("testing::java")
# Matching variables
defined('$name')
# Matching declared resources
defined(File['/tmp/file'])