Puppet (instalace)

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

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]

K archivaci veškerých změn při úpravách manifestů na stroji master je vhodné používat nějaký verzovací systém. Obecně je doporučován git. Pokud je na stroji nainstalován etckeeper, tak by se v podstatě nemuselo nic víc řešit, ale z praktického hlediska je lepší pro adresář /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í:

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

Poznámka
root@master~# wget https://apt.puppetlabs.com/puppetlabs-release-wheezy.deb
...
root@master~# dpkg -i ./puppetlabs-release-wheezy.deb
...
root@master~# apt-get update
...
root@master~# apt-get -t puppetlabs install -y puppetmaster
...
Poznámka 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
Upozornění 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í.
V hlavním konfiguračním souboru /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
Není-li uvedeno jinak, jsou vždy aplikovány výchozí hodnoty.

Ú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.

  1. Je třeba zastavit spuštěné démony (jak pro režim agent, tak i master)
  2. Zkopírovat adresář s SSL certifikáty z /var/lib/puppet do /etc/puppet.
  3. 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
  4. 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..

Poznámka
root@master~# /etc/init.d/puppetmaster start

Nebo spuštěním na příkazovém řádku v režimu master

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

Poznámka
root@master~# /etc/init.d/puppetmaster status
[ ok ] master is running.

..nebo přímo kontrolou spuštěných procesů..

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

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

Poznámka
root@master~# apt-get -d install puppet
root@master~# dpkg-deb --fsys-tarfile /var/cache/apt/archives/puppet_2.6.2-5+squeeze9_all.deb | tar -xf - ./etc/init.d/puppet
root@master~# mv ./etc/init.d/puppet /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


  1. Tento manuál začal vznikat v době vydání verze 2.7.18