Puppet (augeas)

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

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 lze použít nástroj augtool - u Debianu je v samostatném balíčku augeas-tools. Při správě systému přes Puppet sice není zapotřebí, protože ten provádí veškeré operace prostřednictvím API, rozhodně se však hodí.

Práce s augtool

Je-li augtool spuštěn bez jakýchkoliv příkazů, spustí příkazovou řádku v interaktivní módu 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ů.

Pro výpis potomků na příslušné pozici se používá příkaz ls. To připomíná práci se stromovou strukturou unixových souborových systémů - nejspíš i díky tomu, že se po natažení parseru a odpovídajících konfiguračních souborů do příslušné pozice ve stromové struktuře integrují také cesty k příslušným souborům v rámci systému.

Poznámka
root@stroj:~# augtool -A
augtool> ls /
augeas/ = (none)
files = (none)
Poznámka Pokud spustíme augtool s parametrem -A (alt. --noautoload), který zakáže automatické natažení parsovacích filtrů i souborů

Chceme-li vypsat celý podstrom, je třeba použít příkaz print.

Poznámka
augtool> print /augeas
...
Poznámka Při zadávání pozice 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.

Stromová struktura augeasu

U augeasu je vše součástí jedné stromové struktury. Nejenom obsah zpracovaných textových konfiguračních souborů, ale také informace o souborech a parserech, kterými byly zpracovány.

Parsery konfiguračních souborů - lens

Parsery konfiguračních souborů, které se u augeasu nazývají lens, jsou skripty, které umí z textového konfiguračního souboru vytvořit novou větev stromové struktury augeasu, a tu pak integrovat do stromové struktury augeasu, jako součást větve /files.

Pozice položky konfiguračního souboru v rámci stromové struktury augeasu je pak daná kombinací cesty ke konfiguračnímu souboru v rámci souborového systému a interpretací obsahu parsovacím filtrem.

Parsovací filtry (lens) jsou textové soubory, s příponou .aug, které má Debian uložené v adresáři /usr/share/augeas/lenses/dist/. Většina z nich má v sobě také předdefinováno jaké konfigurační soubory se mají při načtení zpracovat - pokud se v systému vyskytují.

Většina lens se také načítá automaticky[1], je-li augtool spuštěn bez jakýchkoliv omezujících parametrů. Pro manuální načtení parsovacího filtru, nebo aby se aplikovaly změny v konfiguraci již natažených filtrů je třeba použít 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

Poznámka
augtool> ls /augeas/load/Aptsources/
lens = @Aptsources
incl[1] = /etc/apt/sources.list.d/*
incl[2] = /etc/apt/sources.list
excl[1] = /*.augnew
excl[2] = /*.augsave
excl[3] = /*.dpkg-dist
excl[4] = /*.dpkg-bak
excl[5] = /*.dpkg-new
excl[6] = /*.dpkg-old
excl[7] = /*.rpmsave
excl[8] = /*.rpmnew
excl[9] = /*~
lens

Název zavedeného filtru.

Poznámka Automaticky natažené filtry se od manuálně natažených liší tím, že mají před názvem v parametru lens znak @
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.

Obsah konfiguračního souboru ve struktuře augeasu

Jak už bylo zmíněno, to jak vypadá obsah konfiguračního souboru ve stromové struktuře augeasu závisí na aplikovaném parsovacím filtru (lens) - v následujícím příkladu je demonstrován obsah konfiguračního souboru /etc/apt/sources.list

Poznámka
augtool> ls /files/etc/apt/sources.list/
1/ = (none)
augtool> print /files/etc/apt/sources.list/
/files/etc/apt/sources.list
/files/etc/apt/sources.list/1
/files/etc/apt/sources.list/1/type = "deb"
/files/etc/apt/sources.list/1/uri = "http://ftp.cz.debian.org/debian"
/files/etc/apt/sources.list/1/distribution = "wheezy"
/files/etc/apt/sources.list/1/component = "main

Parsovaný obsah tohoto konfiguračního souboru lze vypsat také v XML formátu, a to tak, že na příslušnou pozici /files/etc/apt/sources.list se místo příkazu print aplikuje příkaz dump-xml

Poznámka
<augeas match="/files/etc/apt/sources.list">
  <node label="sources.list" path="/files/etc/apt/sources.list">
    <node label="1">
      <node label="type">
        <value>deb</value>
      </node>
      <node label="uri">
        <value>http://ftp.cz.debian.org/debian</value>
      </node>
      <node label="distribution">
        <value>wheezy</value>
      </node>
      <node label="component">
        <value>main</value>
      </node>
    </node>
  </node>
</augeas>

Informace o zpracovaném konfiguračním souboru

Ve stromové struktuře augeasu 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ě parsovaného konfiguračního souboru (mtime). To vše je součástí větve /augeas/files.

Poznámka
augtool> print /augeas/files/etc/apt/sources.list
/augeas/files/etc/apt/sources.list
/augeas/files/etc/apt/sources.list/path = "/files/etc/apt/sources.list"
/augeas/files/etc/apt/sources.list/mtime = "1367244944"
/augeas/files/etc/apt/sources.list/lens = "@Aptsources"
/augeas/files/etc/apt/sources.list/lens/info = "/usr/share/augeas/lenses/dist/aptsources.aug:22.12-.42:"

Z ukázkového výpisu je vidět, že interpretace obsahu konfiguračního souboru /files/etc/apt/sources.list, je výsledkem automaticky načteného parsovacího filtru aptsources.aug.

Zpracování konfiguračních souborů z jiných lokací

Ve výchozím nastavení zpracovává augeas pouze konfigurační soubory umístěné v adresáři /etc. Přidat do jeho stromové struktury také konfigurační soubory z jiné lokace však není problém.

  1. Nejdřív je třeba přidat cestu k tomuto konfiguračnímu souboru k nastavení odpovídajícího parsovacího filtru.
  2. 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

Poznámka
augtool> set /augeas/load/Aptsources/incl[2] /root/sources.list.temporary
Upozornění Jak si lze povšimnout v ukázkovém výpisu parsovacího filtru který zpracovává zdrojové soubory pro APT, položku s indexem 2 měl výchozí soubor /etc/apt/sources.list. Pokud by tedy byl přidán další soubor ke zpracování takto, tak by pravděpodobně došlo k chybě.

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:

Poznámka
augtool> set /augeas/load/Aptsources/incl[last()+1] /root/sources.list.temporary

Použití jiného parsovacího filtru

  1. Všechny, které mají ve skriptu nastaven autoload