Puppet (funkce)
Puppet umožňuje při generování manifestů používat také funkce. Kromě integrovaných funkcí lze vytvořit a používat také vlastní funkce.
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:
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
Parametrem funkce file je seznam jednoho a více URL souborů, které se agent postupně pokusí vyhledat. Funkce pak načte obsah prvního platného souboru na který narazí.
$ntp_conf = file('/etc/ntp.conf', '/etc/openntpd/ntpd.conf')
|
Pozor na rozdíl mezi funkcí file, která načítá obsah souboru a typem file, který pracuje se souborem jako s objektem! |
include
inline_template
Vestavěná funkce inline_template umožňuje interpretovat textový řetězec stejným způsobem, jako by šlo o šablonu.
Textový řetězec, který je výsledkem interpretace lze využít při dalším zpracování manifestu.
Následující ukázková funkce kontejner
demonstruje použití funkce inline_template:
Je-li funkce kontejner
aplikována na obsah proměnné $konfigurace_ke_zpracovani
, je tento obsah prohledán funkcí scope.lookupvar
, která ověří zdali se v něm nastavení proměnné s názvem VARIABLE vyskytuje.
Pokud se v předaném obsahu takové nastavení vyskytne, pak scope.lookupvar
vrátí řetězcovou hodnotu jakou má přiřazenou. Tu lze pak dále zpracovávat jako obsah proměnné $promenna_k_zobrazeni
.
Obsah proměnné $promenna_k_zobrazeni
si lze pak přes metaparametr notify pro kontrolu vypsat do logu.
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,",")