Puppet je nástroj pro správu konfigurace s otevřeným zdrojovým kódem, který vám pomůže spravovat konfigurace stovek klientských systémů z centrálního umístění.
Puppet usnadňuje administrátorům život tím, že zkracuje čas strávený opakovanými úkoly a umožňuje jim soustředit se na jinou práci a také zajišťuje, že nasazená konfigurace je konzistentní v rámci infrastruktury.
Puppet je k dispozici pro Linux, Mac, BSD, Solaris a počítačové systémy založené na Windows, vydaný pod licencí Apache, napsaný v jazyce „Ruby“.
Tato příručka vám pomůže nainstalovat Puppet 6.x na CentOS 7 / RHEL 7.
Architektura
Agent / Master
V této architektuře spravované uzly spouštějí software loutkového agenta jako službu na pozadí. Na druhé straně jeden nebo více serverů provozuje hlavní aplikaci, tj. Loutkový server.
Loutkář pravidelně zasílá fakta loutkáři a požaduje katalog. Master zkompiluje a vrátí katalog daného konkrétního uzlu pomocí zdrojů informací, ke kterým má přístup.
Samostatná architektura
V této architektuře má každý spravovaný uzel svou kopii konfiguračních informací a kompiluje svůj katalog. Spouští aplikaci loutkové aplikace jako úlohu cron.
Životní prostředí
Zde nakonfigurujeme loutku v architektuře Server/agent.
Puppet Master
Název hostitele: server.itzgeek.local
IP adresa: 192.168.1.10
Operační systém: CentOS 7.6
Loutkový klient
Název hostitele: client.itzgeek.local
IP adresa: 192.168.1.20
Operační systém: CentOS 7.6
Předpoklady
Nainstalovat NTP
Časování hlavních a klientských uzlů by mělo být přesně synchronizováno s upstream časovými servery, protože hlavní server Puppet bude fungovat jako certifikační autorita.
(Pokud je čas nesprávný, může omylem vydat certifikáty agentů ze vzdálené minulosti nebo budoucího data, které ostatní uzly budou považovat za prošlé.)
Nainstalujte balíček NTP a proveďte synchronizaci času s upstream servery NTP.
yum -y install ntpdate ntpdate 0.centos.pool.ntp.orgUjistěte se, že všechny uzly jsou ve stejném časovém pásmu pomocí datum příkaz. Pokud se vyskytnou nějaké nesrovnalosti, odpovídajícím způsobem je změňte.
ČTĚTE :Jak změnit časové pásmo v CentOS 7 / RHEL 7
DNS
Agent loutky používá název hostitele ke komunikaci s loutkovým serverem. Zajistěte tedy, aby uzly agentů dokázaly přeložit název hostitele loutkového serveru pomocí /etc/hosts
soubor nebo server DNS.
Nastavení úložiště loutek
Abychom mohli nainstalovat Puppet Server/Agents, museli bychom přidat úložiště loutek na všechny uzly.
Nastavte úložiště Puppet na hlavním i agentském uzlu.rpm -Uvh https://yum.puppet.com/puppet6-release-el-7.noarch.rpm
Instalovat loutkový server
Puppet Server je serverový software, který běží na loutkovém master uzlu. Puppetmaster posílá konfigurace do spravovaných uzlů (puppet-agent).
Nainstalujte server Puppet pomocí níže uvedeného příkazu.
yum install -y puppetserver
Loutkový server je nyní nainstalován, službu loutkového serveru zatím nespouštějte.
Konfigurace loutkového serveru
Přidělení paměti
Ve výchozím nastavení je Puppet Server JVM nakonfigurován tak, aby používal 2 GB paměti. Můžete to změnit v závislosti na tom, kolik paměti je k dispozici na vašem hlavním uzlu; ujistěte se, že to stačí pro správu všech připojených uzlů.
Chcete-li změnit hodnotu přidělení paměti, upravte níže uvedený soubor.
vi /etc/sysconfig/puppetserver
Změňte hodnotu.
Od:
JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
Komu:
Pro 512 MB použijte níže uvedená nastavení.
JAVA_ARGS="-Xms512m -Xmx512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
Vestavěný webový server
Puppet Server používá webový server založený na Jetty zabudovaný do procesu JVM služby. Webový server nemusíte konfigurovat ani povolovat; funguje to po vybalení z krabice. Funguje dobře při zatížení na úrovni produkce.
Nastavení vestavěného webového serveru lze upravit v souboru webserver.conf. Pokud používáte externí CA nebo používáte Puppet Server na nestandardním portu, možná budete muset tento soubor upravit.
Konfigurace loutky
Jednoduché konfigurace
Puppet Server nevyžaduje žádnou konfiguraci. Stačí spustit službu Puppet server. Použije výchozí nastavení.
Výchozí název hostitele Puppet Server (dns_alt_names) je puppet, takže v konfiguračním souboru puppet-agent musíte použít server =puppet.Chcete-li změnit název hostitele hlavního hostitele loutky, postupujte podle níže uvedeného postupu.
Pokročilé konfigurace (volitelné)
Zde upravím nastavení Puppet Master pro naše požadavky.
vi /etc/puppetlabs/puppet/puppet.conf
Umístěte níže uvedené řádky. Upravte jej podle svého prostředí.
[master] dns_alt_names = server.itzgeek.local,server [main] certname = server.itzgeek.local server = server.itzgeek.local environment = production runinterval = 1h
Spustit loutkový server
Vygenerujte kořenovou a přechodnou podepisovací CA pro loutkový server.
puppetserver ca setup
Výstup:
Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/caPokud se vám zobrazí příkaz puppetserver:not found, spusťte zdrojový soubor /etc/profile.d/puppet-agent.sh v terminálu nebo se odhlaste z aktuální relace a přihlaste se zpět.
Spusťte a povolte Puppet Server.
systemctl start puppetserver systemctl enable puppetserver
Firewall
Puppet Master naslouchá na portu 8140, takže nakonfigurujte firewall tak, aby se spravované uzly mohly připojit k master.
firewall-cmd --permanent --add-port=8140/tcp firewall-cmd --reload
Instalovat Puppet Agent
Nainstalujte loutkového agenta na svého klienta pomocí níže uvedeného příkazu.
yum install -y puppet-agent
Puppet agent také používá některá výchozí nastavení pro připojení k hlavnímu uzlu. Musíme však upravit konfigurační soubor loutky a nastavit informace o mistrovi loutky.
Nastavte server hodnotu podle názvu vašeho hlavního uzlu. V mém případě je server server.itzgeek.local a název certifikátu je název hostitele mého klienta (client.itzgeek.local ).vi /etc/puppetlabs/puppet/puppet.conf
Nastavte jako níže.
[main] certname = client.itzgeek.local server = server.itzgeek.local environment = production runinterval = 1h
Hodnotu runinterval můžete změnit závisí na požadavku. Hodnotu můžete nastavit v sekundách (10 nebo 10s), minutách (10m) a hodinách (1h). Toto nastavení řídí, jak dlouho by měl agent čekat mezi dvěma požadavky na katalog.
Spusťte loutkového agenta na uzlu a zajistěte, aby se automaticky spustil při spouštění systému.
puppet resource service puppet ensure=running enable=true
Výstup:
Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', }Pokud dostanete puppet:command not found, spusťte zdrojový /etc/profile.d/puppet-agent.sh v terminálu nebo se odhlaste z aktuální relace a přihlaste se zpět.
Podepsat certifikát uzlu agenta na hlavním serveru
V nasazení agent/master musí správce schválit žádost o certifikát přicházející z každého uzlu, aby mohl načíst konfigurace. Agentní uzly si vyžádají certifikáty poprvé, pokud se pokusí spustit.
Přihlaste se do hlavního serveru loutek a spusťte níže uvedený příkaz pro zobrazení nevyřízených požadavků.
puppetserver ca list
Výstup:
client.itzgeek.local (SHA256) A6:0E:93:51:FF:53:C8:FA:63:70:72:53:B6:1E:1B:A8:49:79:37:7E:57:00:02:AE:32:44:22:BE:97:F5:08:09
Spusťte příkaz puppet cert sign k podepsání požadavku.
puppetserver ca sign --certname client.itzgeek.local
Výstup:
Successfully signed certificate request for client.itzgeek.local
Loutkář nyní může komunikovat s klientským počítačem a ovládat uzel.
Pokud máte od uzlů více požadavků na podpis, můžete všechny požadavky podepsat jedním příkazem.
puppetserver ca sign --all
Někdy může být nutné zrušit certifikát konkrétního uzlu, aby bylo možné je načíst zpět.
Nahraďte
puppetserver ca revoke --certname <AGENT_NAME>
Pomocí níže uvedeného příkazu můžete vypsat všechny podepsané a nepodepsané požadavky.
puppetserver ca list --all
Výstup:
server.itzgeek.local (SHA256) 6E:90:94:6F:31:4F:8C:2A:28:90:D5:C0:6D:71:18:65:5E:86:DE:1C:16:9C:7C:30:8F:BF:DA:87:2D:F7:2C:26 alt names: ["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek.local"] client.itzgeek.local (SHA256) A6:08:36:5C:DB:73:0D:16:BA:5B:0D:72:76:FD:C7:31:DD:87:6F:EC:D4:4F:7A:87:E9:4F:73:70:D0:09:6E:61
Ověřit klienta Puppet
Jakmile Puppet Server podepíše váš klientský certifikát, spusťte na klientském počítači následující příkaz a otestujte jej.
puppet agent --test
Výstup:
Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Retrieving locales Info: Caching catalog for client.itzgeek.local Info: Applying configuration version '1558878523' Notice: Applied catalog in 0.03 seconds
Vytváření našeho prvního manifestu
Manifest je datový soubor, který obsahuje konfiguraci klienta, napsanou v deklarativním jazyce Puppet nebo Ruby DSL. Tato část pokrývá některé základní manifesty pro vytvoření adresáře i souboru na spravovaném uzlu.
Hlavní soubor manifestu loutky se nachází na adrese /etc/puppetlabs/code/environments/production/manifests/site.pp.
vi /etc/puppetlabs/code/environments/production/manifests/site.pp
Nyní přidejte do manifestu následující řádky, abyste vytvořili adresář ve spravovaném uzlu.
Pokud proměnná uzlu není nastavena, bude se tento manifest vztahovat na všechny uzly připojené k loutkové předloze.node 'client.itzgeek.local' { # Applies only to mentioned node; if nothing mentioned, applies to all. file { '/tmp/puppetesttdir': # Resource type file ensure => 'directory', # Create as a diectory owner => 'root', # Ownership group => 'root', # Group Name mode => '0755', # Directory permissions } }
Nyní spusťte následující příkaz na klientském uzlu a načtěte konfigurace.
puppet agent --test
Výstup:
Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for client.itzgeek.local Info: Applying configuration version '1472165498' Notice: /Stage[main]/Main/Node[client.itzgeek.local]/File[/tmp/puppetesttdir]/ensure: created Notice: Applied catalog in 0.03 seconds
Ověřte, že byl na spravovaném uzlu vytvořen adresář.
[root@client ~]# ls -ld /tmp/puppetesttdir drwxr-xr-x. 2 root root 6 May 26 09:57 /tmp/puppetesttdir
Udělejme test ještě jednou tak, že napíšeme manifest pro vytvoření souboru s obsahem.
node 'client.itzgeek.local' { # Applies only to mentioned node; if nothing mentioned, applies to all. file { '/tmp/puppettestfile': # Resource type file ensure => 'present', # Make sure it exists owner => 'root', # Ownership group => 'root', # Group Name mode => '0644', # File permissions content => "This File is created by Puppet Server" } }
Můžete přejít na klientský počítač a načíst katalog, jak je znázorněno v předchozím příkladu, nebo bude agent Puppet pravidelně získávat manifest ze serveru Puppet Server v závislosti na intervalu běhu nastavíte v konfiguračním souboru.
Závěr
Doufám, že jste se naučili, jak nainstalovat Puppet Server a Agent na CentOS 7 / RHEL 7. Také jste se naučili vytvořit jednoduchý soubor manifestu pro vytvoření adresáře na klientském uzlu. Podělte se o svůj názor v sekci komentářů.