Puppet (funkce)

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

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.

Funkce je kontejner, definovaný direktivou define, ve kterém je kód, který může dále zpracovávat hodnoty předané přes parametry, nebo na jejich základě modifikovat obsah manifestu. Z hlediska použití se taková funkce chová stejně jako ty integrované.


Volání funkce bez parametru

Poznámka
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.

Poznámka
define funkce($parametr) {
      notify { "Hodnota parametru parametr je u položky $name - $parametr":; }
}
 
funkce { [ "A", "B", "C" ]:
      parametr => "platná"
}
funkce { [ "D", "E", "F" ]:
      parametr => "neplatná"
}

Výsledkem výše uvedeného kódu by byly následující vypsané řetězce:

Poznámka
notice: /Stage[main]//Funkce[C]/Notify[Hodnota parametru parametr je u poloÅky C - platnÃ]/
message: is absent, should be Hodnota parametru parametr je u poloÅky C - platnà (noop)
notice: /Stage[main]//Funkce[F]/Notify[Hodnota parametru parametr je u poloÅky F - neplatná]/
message: is absent, should be Hodnota parametru parametr je u poloÅky F - neplatná (noop)
notice: /Stage[main]//Funkce[A]/Notify[Hodnota parametru parametr je u poloÅky A - platnÃ]/
message: is absent, should be Hodnota parametru parametr je u poloÅky A - platnà (noop)
notice: /Stage[main]//Funkce[D]/Notify[Hodnota parametru parametr je u poloÅky D - neplatná]/
message: is absent, should be Hodnota parametru parametr je u poloÅky D - neplatná (noop)
notice: /Stage[main]//Funkce[B]/Notify[Hodnota parametru parametr je u poloÅky B - platnÃ]/
message: is absent, should be Hodnota parametru parametr je u poloÅky B - platnà (noop)
notice: /Stage[main]//Funkce[E]/Notify[Hodnota parametru parametr je u poloÅky E - neplatná]/
message: is absent, should be Hodnota parametru parametr je u poloÅky E - neplatná (noop)



Přehled vestavěných funkcí

Poznámka 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í.

Poznámka
$ntp_conf = file('/etc/ntp.conf', '/etc/openntpd/ntpd.conf')

U výše uvedeného příkladu načte agent obsah konfiguračního souboru pro NTP démona do proměnné <$ntp_conf/code>, se kterou lze dále pracovat.

Upozornění Pozor na rozdíl mezi funkcí file, která načítá obsah souboru a typem file, který pracuje se souborem jako s objektem!

include

Puppet (funkce) 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:

Poznámka
define kontejner {
      $promenna_k_nalezeni = "VARIABLE";
      $promenna_k_zobrazeni = inline_template("<%= scope.lookupvar($promenna_k_nalezeni) %>")
      notify { "Obsah proměnné ke zobrazení je $promenna_k_zobrazeni":; }
}
 
kontejner { $konfigurace_ke_zpracovani:; }

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

Puppet (funkce) regsubst

require

Puppet (funkce) 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,",")