Puppet (instalace)

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

Většina linuxových distribucí má obě části Puppetu - klienta i server ve svých repozitářích a umožňuje tak provést instalaci přes standardní balíčkovací systém.

Výchozí konfigurace - tj. nastavení cest k adresářům, atp. - však nemusí být všude stejná a může se mírně lišit. Následující postupy a příklady byly realizovány v rámci distribuce Debian wheezy amd64, s aktuální verzí Puppetu 2.7.18.

Poznámka Pro archivaci veškerých změn při úpravách manifestů na serveru je vhodné používat nějaký verzovací systém. Obecně je doporučován git. Pokud je na stroji nainstalován etckeeper, tak v podstatě není třeba nic víc řešit, pouze je třeba po každé úpravě provést uložení aktuálních změn, včetně komentáře a v případě certifikátů přidat odpovídající nově vzniklé soubory do repozitáře.

master

Abychom mohli Puppet používat, musíme mít stroj který bude fungovat jako server - master. S ním pak budou komunikovat agenti z ostatních nodů.

Serverová část Puppetu je v Debianu součástí balíku, který se jmenuje puppetmaster. Nainstalovat ji lze přes APT, který by se měl postarat o splnění potřebných závislostí[1]:

Poznámka
 root@master~# apt-get install puppetmaster

http://www.thingsidoinlinuxwhenbored.info/?p=38

Poznámka U výchozí konfigurace serveru na Debianu je úložiště SSL certifikátů v adresáři /var/lib/puppet/ssl. Puppet však používá - není-li uvedeno jinak - jako výchozí adresář /etc/puppet/ssl.

Je-li obsah /etc udržován přes git a etckeeper, je výhodnější používat výchozí nastavení Puppetu. Řádek s nastavením proměnné ssldir v konfiguračním souboru /etc/puppet/puppet.conf stačí zakomentovat a adresář s ssl certifikáty přesunout.


Spouštění serverové části aplikace

To zda démon puppetmaster opravdu běží můžete ověřit buď přímo dotazem přes init skript

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

nebo tím, že zkontrolujete zda-li proces master běží

Poznámka
 root@master~# ps -ef | grep master
 puppet    1849     1  0 srp02 ?        00:16:28 /usr/bin/ruby1.8 /usr/bin/puppet master

Pokud master neběží, tak se musí předtím, než se začne pracovat s klientem nahodit. A to buď přes init skript

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

nebo manuálně příkazem na řádce[2] - chceme-li mít server spuštěný v ladícím režimu:

Poznámka
 root@master~# puppet master --verbose --debug

agent

Stroje, které chceme spravovat přes Puppet musí mít nainstalovaného agenta, který bude komunikovat se strojem master. V Debianu se balík s agentem jmenuje puppet. I jeho instalaci lze provést jednoduše přes APT:

Poznámka
 root@master~# apt-get install puppet

Agent je nainstalován i na stroji, který v rámci Puppetu funguje jako master, pokud jej chceme rovněž puppetizovat'. Protože na něm běží démon, který pak komunikuje s ostatními agenty, tak jej obvykle začínáme puppetizovat jako první.

Žádost klienta o certifikát

Proces puppetizace začíná tím, že si vystavíme přes agenta SSL certifikát, který se musí na stroji master podepsat. Tímto cesrtifikátem se pak bude šifrovat jejich vzájemná komunikace.

Poznámka
 root@stroj:/etc# puppet agent --noop --test --verbose --server master.felk.cvut.cz
 dnsdomainname: Name or service not known
 info: Creating a new SSL key for stroj.felk.cvut.cz
 info: Caching certificate for ca
 info: Creating a new SSL certificate request for stroj.felk.cvut.cz
 info: Certificate Request fingerprint (md5): 93:44:BC:C1:9F:1D:7E:6D:83:BD:24:E7
 :9A:0A:B3:82
 Exiting; no certificate found and waitforcert is disabled
Upozornění Pokud chceme puppetizovat stroj, který nemá doménový záznam stejný jako aktuální hostname, musí být na klientské stanici - před vydáním žádosti o certifikát pro aktuální hostname - správně uveden záznam v souboru /etc/hosts

Podepsání certifikátu na straně serveru

Výpis seznamu žádostí, čekajících na podepsání na stroji master:

Poznámka
 master (KVM) :~# puppet cert list
   "stroj.felk.cvut.cz" (93:44:BC:C1:9F:1D:7E:6D:83:BD:24:E7:9A:0A:B3:82)

Podepsání čekající žádosti na stroji master:

Poznámka
  
 master (KVM) :~# puppet cert sign stroj.felk.cvut.cz
 notice: Signed certificate request for stroj.felk.cvut.cz
 notice: Removing file Puppet::SSL::CertificateRequest stroj.felk.cvut.cz at '/etc/puppet/ssl/ca/requests/stroj.felk.cvut.cz.pem'

Aby vzájemná komunikace neskončila chybou, musí se po podepsání certifikátu v manifestu vytvořit - nemá-li dosud nakonfigurován výchozí nod default - příslušný nod pro hostname nového klienta.

Poznámka
nod 'stroj' {
        }
Poznámka Pokud se v síti může objevit více nodů se stejným hostname, které se liší pouze doménou, je třeba k tomu aby se manifest neaplikoval na všechny, uvést jméno nodu plným doménovým jménem.

Ověření zda agent komunikuje se strojem master

Upozornění Ve výchozí konfiguraci je automatické spouštění agenta v souboru /etc/default/puppet zakázáno (v proměnné START). Povolte ho, až když budete mít připravený použitelný manifest.

Zrušení žádosti o certifikát

Nahrazení certifikátu novým

  1. Ale nemusí. Nastavení potřebných závislostí je totiž u Debianu záležitostí maintainera balíku, který mohl nějaký balík opomenout.
  2. http://docs.puppetlabs.com/man/master.html - viz manuálová stránka