Puppet - konfigurační soubory

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

Na serveru i na klienském nodu je hlavní konfigurační soubor puppet.conf, který spuštěný démon průběžně kontroluje a případné změny ihned aplikuje.

Pokud Puppet neběží pod rootem (na unixových systémech), nebo se zvýšenými právy (na Windows), hledá démon tento soubor v podadresáři .puppet, v rámci domovského adresáře uživatele pod kterým je spuštěn. Linuxové distribuce jej však mají obvykle umístěn v adresář /etc/puppet.

Umístění konfigurace však lze přenastavit při spuštění agenta skrze proměnnou $confdir. Pokud nevíte odkud spuštěný démon bere svou konfiguraci můžete použít následující příkaz

user@stroj~$ sudo puppet agent --configprint confdir
Poznámka Stejným způsobem lze zjišťovat i aktuální nastavení jiných proměnných. Je-li místo názvu proměnné uvedeno klíčové slovo all, je na konzoli vypsáno komplet vše, včetně výchozích hodnot proměnných, které v konfiguračních souborech uvedeny nejsou.
Windows 2003
$confdir obsahuje %ALLUSERSPROFILE%\PuppetLabs\puppet\etc, což je expandováno na C:\Documents and Settings\All Users\Application Data\PuppetLabs\puppet\etc
Windows 7, Windows 2008
$confdir obsahuje %PROGRAMDATA%\PuppetLabs\puppet\etc, což je expandováno na C:\ProgramData\PuppetLabs\puppet\etc
Upozornění Na Windows soubor puppet.conf používá konce řádek CRLF, kdežto na unixu pouze LF!


auth.conf

fileserver.conf

Ve výchozím nastavení Puppet automaticky hledá soubory v adresáři files u modulů. To však za určitých okolností nemusí být praktické - kupř. pokud spravujeme moduly Puppetu přes git a nechceme aby součástí jejich repozitářů byly SSH klíče aj. "citlivé" soubory.

V takovém případě lze prostřednictvím tohoto konfiguračního souboru fileserver.conf nakonfigurovat i jiná úložiště..

# Soubory jsou uložené v adresáři /cesta/k/souborum, který se má jevit jako úložiště puppet:///extra_files/
 [extra_files]
     path /cesta/k/souborum
     allow *.felk.cvut.cz
     allow 192.168.33.0/24

Pomocí direktiv allow a deny lze povolit, či naopak zakázat přístup k těmto souborům na základě domény či IP adresy stroje kde běží agent. Pokud mají mít přístup povolen všechny stroje, pak stačí uvést pouze znak * (hvězdička).

Poznámka Cesta ke konfiguračnímu souboru fileserver.config je uložená v proměnné fileserverconfig Pokud bychom chtěli mít soubor s konfigurací úložišť uložen někde jinde, je třeba nastavit k němu cestu v souboru puppet.conf a tím změnit výchozí hodnotu.

puppet.conf

Soubor používá stejnou syntaxi jako INI soubory. Konfigurace je rozdělena do bloků, které definují hlavičky v hranatých závorkách a proměnné se nastavují přiřazením hodnoty. Může-li proměnná obsahovat více hodnot, jsou odděleny čárkou. Ignorovány jsou řádky které mají jako první alafanumerický znak mřížku (#).

Poznámka Tam, kde konfigurace vyžaduje nastavení určitého vlastníka, skupiny či práv, lze uvést tato nastavení za příslušnou hodnotu proměnné do složených závorek.

Od verze 2.7 má Puppet konfiguraci rozdělenou do bloků podle módů v jakých může pracovat

main
Obsahuje obecně platná nastavení
agent
Obsahuje nastavení pro mód, kdy zpracovává stažený manifest
master
Obsahuje nastavení pro mód kdy běží jako server
user
Obsahuje obsahuje nastavení specifická pro uživatele
Upozornění Do verze 3.6 bral master všechny ostatní bloky jako konfigurační nastavení nového prostředí (environment). Pokud tedy bylo tímto způsobem nastavené jiné prostředí než produkční, je třeba provést jeho rekonfiguraci!
Poznámka Do verze 2.6 neměl Puppet konfigurační bloky rozdělené podle módů, ale podle jmen démonů, které s nimi pracovaly. Při aktualizaci staršího prostředí je tedy třeba přesunout konfiguraci proměnných do příslušných bloků podle následujícího klíče:
  • puppetd - agent
  • puppetmasterd - master
  • puppet - user
  • puppetca - master

Výchozí hodnoty proměnných lze také jednorázově přenastavit při spouštění démona. Je-li hodnota proměnné typu true, lze na příkazové řádce předat přímo jako parametr název proměnné, doplněný o dvě pomlčky (--). V případě že je typu false musí být před jméno proměnné doplněna ještě předpona no-

# Ekvivalent k listen = true:
$ puppet agent --listen
# Ekvivalent k listen = false:
$ puppet agent --no-listen

U proměnných, které mají obsahovat nějaký řetězec lze provést přiřazení dvěma způsoby

$ puppet agent --certname magpie.example.com
# Nebo s použitím rovnítka:
$ puppet agent --certname=magpie.example.com

Již výše byl uveden příklad, jak zjistit hodnotu proměnné

$ puppet master --configprint ssldir
/etc/puppet/ssl
$ puppet agent --configprint ssldir
/var/lib/puppet/ssl
# nebo:
$ puppet config print ssldir --section master
/etc/puppet/ssl
$ puppet config print ssldir --section agent
/var/lib/puppet/ssl
Upozornění Režim config je poměrně nová záležitost a u verzí Puppetu starších než 3.4 vůbec k dispozici není. Takže nepřekvapí, že vypisovat proměnné podle sekce v níž se nachází lze takto až od verze 3.5 a místo klíčového slova --section by podle oficiální dokumentace mělo fungovat --mode, tudíž do budoucna nelze vyloučit změnu.

Puppet rovněž nabízí parametr, kterým lze vygenerovat konfigurační soubor, který zajistí, aby byl spuštěn v příslušném módu s takovými parametry, jako když je spuštěn s parametry na příkazové řádce.

$ puppet master --genconfig

Přehled nastavení všech proměnných příslušného módu lze zjistit použití klíčového slova all

$ puppet master --configprint all

tagmail.conf