Puppet (augeas)
Augeas je konfigurační nástroj, který umí zpracovat nativní formát konfiguračních souborů v systému do editovatelné stromové struktury a její modifikovaný obsah ukládat zpět tam kam patří.
Pro lokální administraci na příkazovém řádku se používá nástroj augtool (u Debianu je součást balíčku augeas-tools
), ale Puppet pracuje s augeasem přímo přes jeho API, takže přítomnost tohoto nástroje není nutná.
Práce s augtool
I když nástroj augtool není pro použití typu augeas nezbytný, hodí se k testování kontextu. Proto je dobré vědět jak se s ním pracuje.
Je-li spuštěn bez jakýchkoliv příkazů, nabídne interaktivní módu příkazovou řádku, na které lze dále pracovat. Jako vůbec první příkaz je vhodné spustit help, který vypíše stručný přehled základních příkazů.
Následující příklady nepředstavují referenční příručku, takže zde rozhodně nebudou prezentovány všechny možnosti augeasu. |
Stromová struktura augeasu
Pro výpis stromové struktury augeasu se používá příkaz ls, což připomíná výpis stromové struktury unixových souborových systémů. Je to i díky tomu, že se do ní po natažení integrovují cesty k souborům.
Pokud spustíme augtool s parametrem -A (alt. --noautoload), který zakáže automatické natažení parsovacích filtrů i souborů, vypadá tato struktura takto:
root@stroj:~# augtool -A
augtool> ls /
augeas/ = (none)
files = (none) |
Příkaz ls provádí pouze výpis potomků předané cesty. Celý podstrom, včetně hodnot parametrů, lze vypsat příkazem print.
augtool> print /augeas
... |
Při zadávání cesty lze s výhodou používat automatické doplňování s pomocí tabulátoru. Pěkné je, že nástroj augtool má k dispozici také vlastní historii. |
Parsery konfiguračních souborů - lens
Pod jménem lens se u augeasu rozumí parsery konfiguračních souborů.
Jsou to skripty, u Debianu uložené v adresáři /usr/share/augeas/lenses/dist/
, s příponou .aug
, které většinou mají předdefinovány parametry pro identifikaci konfiguračních souborů, které rozparsují při svém automatickém načtení.
Toto načtení parsovacích filtrů (lenses) a parsování konfiguračních souborů, které rozpoznají, se provádí automaticky, je-li augtool spuštěn bez jakýchkoliv omezujících parametrů. Pro natažení manuální se používá příkaz load
Informace o zavedených filtrech
Informace o zavedených filtrech jsou součástí větve /augeas/load
. Viz ukázkový výpis parsovacího filtru pro zpracování konfigurace zdrojů pro APT
incl
Z názvu, který je obsahem parametru lens je zřejmé, že jde o automaticky načtený filtr, který zpracovává obsahy souborů identifikovaných jako parametry incl, tj. soubory v adresáři /etc/apt/sources.list.d
a obsah souboru /etc/apt/sources.list
.
excl
Prostřednictvím nastavení parametrů excl je naopak určeno, které soubory má parser ignorovat.
Parsovaný konfigurační soubor ve struktuře augeasu
Obsah konfiguračního souboru, zpracovaného přes parsovací filtr, je součástí větve /files
:
Jak vidět z ukázkového výpisu, je parsovaný soubor /etc/apt/sources.list
, včetně absolutní cesty, integrován do stromové struktury augeasu.
To, jak je interpretován jeho obsah závisí na použitém filtru (lens) - tomto konkrétním případě byl aplikován obsah skriptu aptsources.aug
.
Parsovaný obsah konfiguračního souboru lze vypsat také v XML formátu, a to tak, že na příslušný nod /files/etc/apt/sources.list
je aplikován místo příkazu print příkaz dump-xml
Ve stromové struktuře augeasu ale není udržován pouze obsah parsovaného souboru, ale také informace o tom, jaký parser byl na soubor aplikován a kdy došlo k poslední úpravě (mtime). To vše je součástí větve /augeas/files
Konfigurační soubory v jiných lokacích
Ve výchozím nastavení zpracovává augeas pouze konfigurační soubory umístěné v adresáři /etc
. Umožňuje ale přidat poměrně jednoduše do své stromové struktury také konfigurační soubory z jiné lokace.
- Nejdřív je třeba přidat cestu k tomuto konfiguračnímu souboru k nastavení odpovídajícího parsovacího filtru.
- A pak aplikovat příkaz load
Následující ukázkový příkaz demonstruje jak lze přidat do stromové struktury augeasu přidat ke zpracování testovací soubor se zdroji pro APT /root/sources.list.temporary
augtool> set /augeas/load/Aptsources/incl[2] /root/sources.list.temporary
|
Hodnota indexu by tedy měla být přinejhorším větší, než než je počet aktuálně nastavených parametrů incl - augtool v takovém případě použije automaticky funkci last()+1. Vhodnější je použít tuto funci rovnou:
augtool> set /augeas/load/Aptsources/incl[last()+1] /root/sources.list.temporary
|