Puppet (funkce)
Funkce
Puppet umožňuje při generování manifestů používat také funkce. Hodně obecných a často využívaných funkcí je integrováno, ale dají se vytvářet také funkce vlastní, prostřednictvím direktivy define
Funkce je kontejner, co obsahuje kód který může dále zpracovávat předané parametry.
Volání funkce bez parametru
define funkce {
notify { "Do funkce je předán pouze parametr - $name":; }
}
funkce { 'jmeno':; }
|
Výsledkem zavolání této funkce by bylo pouze vypsání textového řetězce 'Do funkce je předán pouze parametr - jmeno' do logu klienta (přes notify). Nicméně k demonstraci výsledku tento jednoduchý příklad stačí.
Je-li místo konkrétního jména předáno pole, nebo proměnná, která pole obsahuje, volá se funkce pro každou položku pole zvlášť, přičemž obsah proměnné $name
bude vždy odpovídat této položce. Více v následujícím příkladu.
Volání funkce s parametrem
Funkci lze volat také s parametrem.
Výsledkem výše uvedeného kódu by byly následující vypsané řetězce:
Praktický příklad
Následující ukázka kódu v manifestu zajistí aktivaci a deaktivaci modulů pro apache2
Moduly které se mají aktivovat jsou v uloženy jako položky pole v proměnné $enable
a ty které se v konfguraci vyskytnout nesmí jsou v proměnné $disable
. Kód sám by byl nejspíš součástí třídy pro konfiguraci serveru apache2.
V uvedeném příkladu je v nadefinované uživatelské funkci kontejner zavolaná vestavěná funkce inline_template, která zajistí, že složený řetězec bude interpretován jako šablona
Je-li pak Do nadefinovaného typu s názvem kontejner
se pošle řetězec obsažený v proměnné $konfigurak_ke_zpracovani
. Ten pak na tento řetězcový obsah aplikuje funkci scope.lookupvar která ověřuje výskyt nastavení proměnné s názvem VARIABLE.
Pokud se v řetězci takové nastavení vyskytne, je tato proměnná interpretována šablonou vytvořenou funkcí inline_template a výsledek zpracování je pak skrze notify zapsán do logu.
Přehled vestavěných funkcí
Toto je pouze úzký výběr námi používaných funkcí. Pro kompletní dokumentaci viz Docs:Type Reference na oficiálních stránkách stránkách http://puppetlabs.com |
file
Funkce se dá použít v podmínkách vložení pravdivostní hodnoty do proměnné, kterou lze následně využít v podmínkách.
$etckeeper = file('/etc/.git')
Vrací True pokud na na straně agenta existuje /etc/.git
.
include
inline_template
Puppet (funkce) inline template
regsubst
require
split
Funkce rozseká obsah proměnné, která je předaná jako první parametr. Jako rozdělovací řetězec použije řetězec, který následuje jako parametr druhý.
$sekana = split($retezec,",")