Puppet (instalace)
Většinou je u linuxových distribucí Puppet k dispozici v jejich repozitářích a jeho instalaci tak lze provést přes standardní balíčkovací systém. Výchozí konfigurace však nemusí být všude stejná. Může být jiné nastavení cest k adresářům, moduly manifestu, a bůhví co ještě. Postupy a příklady s nimiž se lze tady setkat sice byly zpracované pro Debian, měly by však být použitelné univerzálně i přes to, že se u novějších verzí mohou v něčem lišit, neboť Puppet se stále vyvíjí.[1]
/etc/puppet
udržovat samostatný repozitář, a do něj po každé úpravě provádět uložení aktuálních změn, včetně komentářů. Mně osobně se osvědčilo přidat do tohoto adresáře i úložiště ssl certifikátů.
Jak už bylo zmíněno úvodem, Puppet je aplikace typu server/klient. Do verze 2.6 se používaly samostatné skripty, ale od verze 2.6 se používá jak pro server, tak klienta jeden a ten samý skript, psaný v Ruby, který může běžet v různých režimech, v závislosti na tom, jaký je předán první argument.
Pre-2.6 | Post-2.6 | Popis |
---|---|---|
puppetmasterd | puppet master | Serverový režim pro centralizovanou správu manifestů (server) |
puppetd | puppet agent | Režim agent pracující s centrálně udržovaným manifestem (klient) |
puppet | puppet apply | Režim agent, pracující s lokálním manifestem (klient bez síťové konektivity) |
puppetca | puppet cert | Režim pro práci s certifikáty (server) |
ralsh | puppet resource | Interaktivní agent (klient) |
puppetrun | puppet kick | Režim při kterém bylo možné vyvolat z jiného stroje vyvolat nějakou akci na straně agenta. V současné době je nahrazen samostatným řešením MCollective |
puppetqd | puppet queue | Režim který odesílal provedené změny do centrální databáze. V současné době je nahrazen aplikací PuppetDB |
filebucket | puppet filebucket | Klient pro práci se soubory v centralizovaném, resp. lokálním úložišti Puppetu (klient) |
puppetdoc | puppet doc | Ze souborů manifestu umí vytáhnout vložené dokumentační řetězce (server), jinak funguje jako aktuální dokumentace k Puppetu. |
pi | puppet describe | Pomůcka pro výpis dokumentace typů a metaparametrů na příkazové řádce (server/klient) |
Instalace a konfigurace prostředí stroje master
Chceme-li využívat Puppet pro centralizovanou správu, musíme nejprve nainstalovat stroj co bude fungovat jako server - master, se kterým pak budou komunikovat agenti z klientských nodů. Je dobré od samého počátku počítat s tím, že i tento stroj bude spravován sám sebou a pro tento účel odpovídajícím způsobem pozměnit výchozí konfiguraci.
Pro instalaci serverové části Puppetu je v Debianu balík, který se jmenuje puppetmaster. Od instalačního balíku puppet, který je určen pro klientské nody, se liší především v tom, že obsahuje navíc soubory, které by byly na klientském nodu zbytečné.
Instalace přes standardní balíčkovací systém (APT) je nejrozumnější, neboť se postará o splnění potřebných závislostí:
root@master~# apt-get install puppetmaster
|
Instalace z repozitářů puppetlabs
U Puppetu platí, že master by měl být vždy novější verze než agent. Je-li na stroji master nainstalován a průběžně aktualizován Debian unstable, tak by neměl vzniknout problém. Pro stable verze Debianu je však lepší nainstalovat master ze zdrojů, které udržuje přímo Puppet Labs, Inc.
Instalaci je třeba začít stažením příslušného .deb balíčku z https://apt.puppetlabs.com/ a jeho "manuální instalací". Viz následující příklad demonstruje stažení balíčku a instalaci pro Debian wheezy
Instalační balíček puppetlabs-release-wheezy.deb nainstaluje soubor /etc/apt/sources.list.d/puppetlabs.list který obsahuje záznam pro APT k repozitáři Puppet Labs, Inc., a jejich GPG klíč.
Chcete-li používat stejnou vývojovou verzi Puppetu jako je v unstable, tak před spuštěním aktualizace repozitářů odkomentujte řádky označené jako devel |
Úpravy výchozí konfigurace
Konfigurace Puppetu pro všechny módy je v jednom konfiguračním souboru /etc/puppet/puppet.conf
, kde má každý z nich svou příslušnou sekci.
- main
- Obsahuje společné konfigurační volby
- master
- Obsahuje konfiguraci pro démona v režimu master
- agent
- Obsahuje konfiguraci pro démona v režimu agent
- user
- Obsahuje konfiguraci uživatele
Do verze 3.6 Puppet používal sekce v tomto konfiguračním souboru pro nastavení prostředí (environment). Kdy každá sekce, jejíž název nepatřil mezi systémové konfigurační bloky (main, master, agent, user) byla interpretovaná jako název prostředí. |
/etc/puppet/puppet.conf
lze změnit výchozí hodnoty proměnných i za běhu démona a dynamicky ovlivňovat prostředí Puppetu. Jinak lze měnit hodnoty výchozích proměnných:
- nastavením na příkazovém řádku při spuštění démona (prostřednictvím úprav konfiguračních souborů v
/etc/default
) - jednorázově, formou předaných argumentů při akcích na příkazové řádce
- nebo nastavením proměnných v konfiguračních souborech
Úložiště certifikátů
Ve výchozí konfiguraci Debianu Puppet využívá pro všechny režimy (master i klient) stejné úložiště SSL certifikátů, které je v adresáři /var/lib/puppet/ssl
. Výchozí konfigurace Puppetu však hledá - není-li uvedeno jinak - certifikáty ve výchozím adresáři /etc/puppet/ssl
.
Je-li obsah /etc
udržován přes git(resp. etckeeper), je výhodnější používat výchozí nastavení Puppetu. Navíc se tím vyhnete problémům s kolizí certifikátů je-li master spravován přes agenta sám sebou.
- Je třeba zastavit spuštěné démony (jak pro režim agent, tak i master)
- Zkopírovat adresář s SSL certifikáty z
/var/lib/puppet
do/etc/puppet
. - A před novým spuštěním démona v režimu master zakomentovat řádek v hlavním konfiguračním souboru
/etc/puppet/puppet.conf
s nastavením proměnné $ssldir - Pro jistotu můžete nakopírovat původní nastavení cesty k úložišti certifikátů do sekce agent. Tím zajistíte, že se klientský certifikát nedostane do kolize se serverovým.
Po spuštění démona v režim master otestujte agenta v testovacím režimu, zda-li je vše v pořádku. Teprve je-li vše ok, ho můžete spustit jako démona.
Spouštění démonů
master
Nahození démona v režimu master lze provést buď přes výchozí init skript..
root@master~# /etc/init.d/puppetmaster start
|
Nebo spuštěním na příkazovém řádku v režimu master
root@master~# puppet master
|
Před nahozením však není od věci přesvědčit se, zdali démon v režimu master již neběží. To lze provést buď přímo dotazem přes init skript..
root@master~# /etc/init.d/puppetmaster status
[ ok ] master is running.
|
..nebo přímo kontrolou spuštěných procesů..
root@master~# ps -ef | grep master
puppet 1849 1 0 srp02 ? 00:16:28 /usr/bin/ruby1.8 /usr/bin/puppet master
|
Přímé spouštění přes příkazovou řádku má tu výhodu, že můžeme jeho prostřednictvím změnit výchozí konfigurační volby démona. Viz následující příklad pro spuštění démona v ukecaném režimu:
root@master~# puppet master --verbose --debug
|
Není-li konfigurací určeno jinak, zapisuje démon veškeré zprávy do souboru /var/log/daemons
agent
Pokud chcete stroj, na kterém máte nainstalován Puppet a démona spuštěného v režimu master spravovat přes agenta, tak u Debianu nejspíš narazíte na to, že vám bude chybět init skript pro jeho spouštění. Nezbyde, než ho vytáhnout z instalačního balíku puppet, který je určen pro klienty. Balík lze stáhnout přes APT a pak z něj init skript vytáhnout pomocí dpkg-deb a umístit do adresáře /etc/init.d
V každém případě však potom bude nutné upravit spouštění init skriptů tak, aby byl nejprve spuštěn démon v režimu master a až pak v dalším procesu další instance v režimu agent
- ↑ Tento manuál začal vznikat v době vydání verze 2.7.18