Puppet, populárně známý nástroj pro správu konfigurace pro systémy založené na Unixu a Windows, který umožňuje správci snadno automatizovat opakující se úlohy správy systému náchylné k chybám – což zahrnuje zřizování, instalaci balíčků/softwaru, konfigurace a správu celé infrastruktury. Puppet přichází ve dvou variantách – Puppet Enterprise a Puppet open source. Jak název napovídá, podniková verze je komerční produkt a verze s otevřeným zdrojovým kódem je ke stažení zdarma. Tento tutoriál se bude zabývat tím, jak nainstalovat a nakonfigurovat open source Puppet (verze 4) na systémech založených na CentOS a Ubuntu.
Než začneme s instalační procedurou, pojďme pochopit architekturu loutky.
Puppet Master/Agent Architecture
Puppet obecně funguje na základě modelu Klient/Server – to je architektura založená na Master/Agent, konkrétně Puppet Master a Puppet Agent. Puppet master řídí informace o konfiguraci a spravované uzly Puppet Agent vyžadují své vlastní konfigurační katalogy. Níže uvedený diagram znázorňuje tok komunikace mezi master a agentními uzly.
Co je katalog?
Katalog je dokument, který obsahuje informace o požadovaném stavu systému. Mistr loutek sestaví katalog a agenti loutek je použijí.
Prostředí instalace loutky
V tomto tutoriálu budu používat dva uzly – puppetmaster.test.in (Puppet Master) a puppetagent.test.in (Puppet Agent) (jsou to virtuální počítače běžící na OpenStacku)
Jak nainstalovat a nakonfigurovat Puppet 4?
Krok 1: Prvním krokem je zkontrolovat viditelnost sítě mezi hlavním uzlem a uzlem agenta. Budete muset zajistit, aby byly tyto domény vyřešeny pomocí DNS nebo ze souboru hostitelů.
V uzlu Puppet Master:
# ping puppetagent PING puppetagent.test.in (10.180.141.126) 56(84) bytes of data. 64 bytes from puppetagent.test.in (10.180.141.126): icmp_seq=1 ttl=64 time=0.347 ms --- puppetagent.test.in ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.347/0.347/0.347/0.000 ms
Na uzlu Puppet Agent:
# ping puppetmaster PING puppetmaster.test.in (10.180.141.125) 56(84) bytes of data. 64 bytes from puppetmaster.test.in (10.180.141.125): icmp_seq=1 ttl=64 time=0.711 ms 64 bytes from puppetmaster.test.in (10.180.141.125): icmp_seq=2 ttl=64 time=0.316 ms --- puppetmaster.test.in ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.316/0.513/0.711/0.198 ms
Krok 2: Nainstalujte NTP
Uzel Puppet Master bude fungovat jako C certifikovat A orgán (CA) a vydávat certifikáty pro uzly agentů. Znamená to, že hlavní uzel se musí synchronizovat se správným časem, aby se předešlo problémům při vydávání certifikátů uzlům agentů. Musíte tedy nainstalovat NTP a synchronizovat jej s časovým serverem dle vašeho výběru.
Zkontrolujte dostupná časová pásma v hlavním uzlu:
# timedatectl list-timezones
Nastavte správné regionální časové pásmo:
# timedatectl set-timezone Asia/Kolkata
Instalovat NTP:
# yum install ntp
Synchronizace s časovým serverem dle vašeho výběru:
# ntpdate pool.ntp.org
Otevřete ntp.conf a přidejte časové servery dle vašeho výběru.
# vim /etc/ntp.conf
Uložte a ukončete.
Spuštění a povolení služby NTP:
# systemctl restart ntpd # systemctl enable ntpd
Poznámka :Můžete také nakonfigurovat NTP na uzlech agenta – Chcete-li to provést, postupujte podle kroku 2 také v uzlech Puppet Agent.
Instalovat loutkový server (na hlavní uzel)
Puppet server je program, který běží na Puppet master node a jak je znázorněno na schématu architektury, tato služba vytvoří katalog a předá konfigurace do uzlů Puppet agentů.
Krok 1: Chcete-li nainstalovat služby Puppet, musíte povolit úložiště kolekce Puppet nebo uvolnit balíčky. Pro operační systémy založené na Yum najdete balíčky na yum.puppetlabs.com a pro systémy založené na Apt na apt.puppetlabs.com .
Na CentOS budu používat loutkové úložiště založené na balíčcích rpm.
# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm puppetlabs-release-pc1-1.0.0-2.el################################# [100%]
V Ubuntu:
# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
# dpkg -i puppetlabs-release-pc1-xenial.deb Selecting previously unselected package puppetlabs-release-pc1. (Reading database ... 205725 files and directories currently installed.) Preparing to unpack puppetlabs-release-pc1-xenial.deb ... Unpacking puppetlabs-release-pc1 (1.0.0-2xenial) ... Setting up puppetlabs-release-pc1 (1.0.0-2xenial) ...
# apt-get update
Instalovat balíček serveru Puppet:
V systému CentOS:
# yum -y install puppetserver
V Ubuntu:
# apt-get install puppetserver
Spustit loutkový server:
# systemctl start puppetserver
(nebo)
# service puppetserver start
Povolte spuštění loutkového serveru během spouštění systému
# systemctl enable puppetserver
(nebo)
# chkconfig puppetserver on
Instalace Puppet Agent (na uzlech Agent)
Nainstalujeme službu Puppet Agent na uzly agentů a toto jsou uzly, které přijímají katalog z hlavního uzlu Puppet a aplikují je.
Povolit úložiště sbírky loutek:
# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
V Ubuntu:
# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
# dpkg -i puppetlabs-release-pc1-xenial.deb Selecting previously unselected package puppetlabs-release-pc1. (Reading database ... 205725 files and directories currently installed.) Preparing to unpack puppetlabs-release-pc1-xenial.deb ... Unpacking puppetlabs-release-pc1 (1.0.0-2xenial) ... Setting up puppetlabs-release-pc1 (1.0.0-2xenial) ...
$ sudo apt-get update
Instalovat Puppet Agent:
V systému CentOS:
# yum -y install puppet-agent
V Ubuntu:
# apt-get install puppet-agent
Spustit Puppet Agent:
Ve výchozím nastavení bude agent odkazovat na hlavní uzel Puppet jako „loutka“. Níže uvedený příkaz také zobrazí název hostitele, který bude agent používat pro připojení k Master.
# /opt/puppetlabs/puppet/bin/puppet agent --configprint server puppet
# /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', }
Poznámka :Vyhledejte server nastavení v puppet.conf změnit název hostitele Puppet Master.
Poznámka :Ve výchozím nastavení bude Puppet nainstalován pod /opt/puppetlabs složka.
Požádejte certifikační autoritu o certifikát pro uzel Agent
Hlavní uzel Puppet bude fungovat jako certifikační autorita, která podepíše certifikát uzlů agentů.
# /opt/puppetlabs/puppet/bin/puppet agent -t Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for puppetagent.test.in Info: Certificate Request fingerprint (SHA256): BF:E9:8B:85:ED:61:B4:D5:61:2E:F2:C4:0B:0A:24:A3:D5:17:B5:E3:B4:54:53:4F:C7:39:7F:FE:49:1B:AF:4A Info: Caching certificate for ca Exiting; no certificate found and waitforcert is disabled
Na uzlu Puppet Master – podepište žádost o certifikát agenta
Seznam aktuálních žádostí o certifikát:
# /opt/puppetlabs/puppet/bin/puppet cert list "puppetagent.test.in" (SHA256) BF:E9:8B:85:ED:61:B4:D5:61:2E:F2:C4:0B:0A:24:A3:D5:17:B5:E3:B4:54:53:4F:C7:39:7F:FE:49:1B:AF:4A
Podepište certifikát:
# /opt/puppetlabs/puppet/bin/puppet cert sign puppetagent.test.in Notice: Signed certificate request for puppetagent.test.in Notice: Removing file Puppet::SSL::CertificateRequest puppetagent.test.in at '/etc/puppetlabs/puppet/ssl/ca/requests/puppetagent.test.in.pem'
Zobrazit všechny podepsané požadavky:
# /opt/puppetlabs/puppet/bin/puppet cert list --all + "puppetagent.test.in" (SHA256) 0F:41:D0:67:78:BB:7B:48:F8:4B:10:10:C4:F9:FD:DD:46:19:34:4B:BE:4D:6F:4B:2F:45:57:86:33:C2:BC:45 + "puppetmaster.test.in" (SHA256) 4A:F3:F7:C0:81:7D:76:49:77:31:81:B1:70:50:AE:EE:F9:49:95:22:B0:24:0C:08:C3:5E:30:E6:29:75:28:07 (alt names: "DNS:puppet", "DNS:puppetmaster.test.in")
A máte hotovo! Vaše první loutková infrastruktura je připravena.
Pojďme otestovat loutku
Puppet používá nástroj zvaný Facter shromažďovat informace (fakta) o loutkových agentech. Ve výchozím nastavení se shromažďují informace, jako je název operačního systému, verze, název hostitele, IP adresa, klíče SSH atd. Ale umožňuje vám také přidávat vlastní fakta, o kterých budu diskutovat v samostatném článku.
Jak jsou fakta užitečná?
Při vytváření konfigurační šablony můžete chtít automaticky načíst fakt (řekněme IP adresu uzlu agenta) a vyplnit na příslušném místě. Podobně můžete chtít přečíst název hostitele uzlu agenta a použít jej v konfigurační šabloně.
Níže uvedený příkaz (spusťte jej na hlavním uzlu) vypíše všechna shromážděná fakta o uzlu Agent.
# /opt/puppetlabs/puppet/bin/facter
Ukázkový výstup:
::::::::::::::::::::::::::::::: partitions => { /dev/vda1 => { filesystem => "xfs", mount => "/", size => "39.99 GiB", size_bytes => 42943138304, uuid => "6c8f1327-a7c0-40a2-8bb3-89ea95a69d82" } } path => /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin processors => { count => 2, isa => "x86_64", models => [ "Intel Core Processor (Haswell, no TSX)", "Intel Core Processor (Haswell, no TSX)" ], physicalcount => 2 } :::::::::::::::::::::::::::::::::::::::::
A je to! Nyní musíte porozumět Manifestům a modulům, abyste mohli Puppet efektivně používat .