Když přemýšlíte o nástroji pro správu konfigurace, vyskočí vám na mysl Puppet. Puppet je open source nástroj pro správu konfigurace, který vám pomůže nasadit a spravovat konfigurace stovek klientských systémů z centrálního umístění.
Puppet usnadňuje život správcům systému tím, že zkracuje čas strávený opakovanými úkoly a umožňuje jim pracovat na jiných produktivních dílech a také zajišťuje, že veškerá 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 Server na Ubuntu 18.04 / Ubuntu 16.04 a Debian 9.
Architektura
Agent / Master
V této architektuře jeden nebo více serverů spouští loutkovou hlavní aplikaci a aplikace loutkového agenta běží na spravovaných uzlech (klientských serverech), obvykle jako služba na pozadí.
Loutkář odešle fakta loutkáři a vyžádá si katalog v daném intervalu. Loutkář sestaví a vrátí katalog konkrétního uzlu pomocí zdrojů informací, ke kterým má přístup.
Samostatná architektura
V této architektuře klientský uzel spouští aplikaci loutkové aplikace, obvykle jako úlohu cron.
Životní prostředí
Zde nakonfigurujeme loutku v architektuře master/agent a použijeme dva systémy, jak je uvedeno níže.
Puppet Master
Název hostitele: server.itzgeek.local
IP adresa: 192.168.1.10
Loutkový klient
Název hostitele: client.itzgeek.local
IP adresa: 192.168.1.20
Předpoklady
Nainstalovat NTP
Čas musí být na loutkovém mistrovi nastaven přesně, protože bude fungovat jako certifikační autorita pro podepisování certifikátů přicházejících z klientských uzlů. K tomuto účelu použijeme NTP.
Nainstalujte balíček NTP a proveďte synchronizaci času s upstream servery NTP.
sudo apt update sudo apt install -y ntp ntpdate sudo ntpdate -u 0.ubuntu.pool.ntp.org
Časové pásmo
Ujistěte se, že všechny uzly jsou ve stejném časovém pásmu pomocí.
date
Výstup:
Tue Sep 4 22:28:34 EDT 2018
Pokud se vyskytnou nějaké nesrovnalosti, odpovídajícím způsobem je změňte. Seznam dostupných časových pásem.
timedatectl list-timezones
Nastavte časové pásmo pomocí následujícího příkazu.
sudo timedatectl set-timezone America/New_York
DNS
Agent loutky používá název hostitele ke komunikaci s loutkovým serverem. Ujistěte se tedy, že uzel agenta dokáže přeložit název hostitele loutkového serveru. Buď nastavte /etc/hosts
soubor nebo server DNS.
Soubor/etc/hosts:
sudo nano /etc/hosts
Přidejte záznam hostitele podobný následujícímu řádku.
192.168.1.10 server.itzgeek.local server
Nastavení úložiště PuppetLabs
Pro instalaci loutkového mistra/agenta bychom vyžadovali zřízení úložiště loutek na všech uzlech.
### Ubuntu 18.04 ### wget https://apt.puppetlabs.com/puppet6-release-bionic.deb sudo dpkg -i puppet6-release-bionic.deb sudo apt update ### Ubuntu 16.04 ### wget https://apt.puppetlabs.com/puppet6-release-xenial.deb sudo dpkg -i puppet6-release-xenial.deb sudo apt update ### Debian 9 ### wget https://apt.puppetlabs.com/puppet6-release-stretch.deb sudo dpkg -i puppet6-release-stretch.deb sudo apt update
Na Ubuntu 18.04 povolte vesmírné úložiště, které obsahuje balíčky nezbytné pro Puppet Server.
Instalovat loutkový server
Puppet Server je serverový software, který běží na loutkovém master uzlu. Nainstalujte server Puppet pomocí níže uvedeného příkazu.
sudo apt 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 (volitelné)
Ve výchozím nastavení je Puppet Server JVM nakonfigurován tak, aby používal 2 GB RAM. Vždy můžete přizpůsobit využití paměti v závislosti na tom, kolik paměti má váš hlavní uzel; 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.
sudo nano /etc/default/puppetserver
Změňte hodnotu zobrazenou níže.
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"
Konfigurace loutky
Jednoduché konfigurace
Puppet Server nevyžaduje žádnou konfiguraci a můžete jednoduše spustit službu puppetserver. Použije výchozí nastavení.
Například:dns_alt_names (loutka,
Pokročilé konfigurace (volitelné)
Zde upravím nastavení Puppet Server pro naše požadavky.
sudo nano /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 = 15m
Spustit loutkový server
Vygenerujte kořenovou a přechodnou podepisovací CA pro loutkový server.
sudo /opt/puppetlabs/bin/puppetserver ca setup
Výstup:
Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/ca
Spusťte a povolte Puppet Server.
sudo systemctl start puppetserver sudo systemctl enable puppetserver
Instalovat Puppet Agent
Nastavte repozitář Puppet na vašem uzlu agenta, jak je uvedeno výše, a poté nainstalujte loutkového agenta pomocí příkazu níže.
sudo apt 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.
sudo nano /etc/puppetlabs/puppet/puppet.confNastavte server hodnotu podle vašeho hlavního názvu hostitele a názvu certifikátu jako název hostitele vašeho klienta. V mém případě je server server.itzgeek.local a název certifikátu je client.itzgeek.local.
[main] certname = client.itzgeek.local server = server.itzgeek.local environment = production runinterval = 15m
Hodnotu runinterval můžete změnit závisí na požadavku. Toto řídí, jak dlouho by měl agent čekat mezi dvěma požadavky na katalog.
Hodnotu můžete nastavit v sekundách (30s nebo 30) nebo v minutách (30m) nebo v hodinách (1h).Spusťte loutkového agenta na uzlu a zajistěte, aby se automaticky spustil při spouštění systému.
sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
Získáte výstup jako níže.
Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', }
Podepsat certifikát uzlu agenta na hlavním serveru
V nasazení agent/master musí správce schválit žádost o certifikát pro každý uzel agenta, než může tento uzel načíst konfigurace. Agentní uzly si vyžádají certifikáty při prvním pokusu o spuštění.
Přihlaste se do hlavního serveru loutek a spusťte níže uvedený příkaz pro zobrazení nevyřízených požadavků.
sudo /opt/puppetlabs/bin/puppetserver ca list
Výstup:
Requested Certificates: client.itzgeek.local (SHA256) 07:B1:57:5B:DE:AF:9F:4A:DF:4A:D1:CD:C4:2A:F9:9F:D9:76:CD:C5:F1:60:09:9C:B4:BA:76:D6:7B:3C:6F:0D
Spuštěním níže uvedeného příkazu podepište žádost.
sudo /opt/puppetlabs/bin/puppetserver ca sign --certname client.itzgeek.local
Výstup:
Successfully signed certificate request for client.itzgeek.local
Pro podepsání všech požadavků na podpis certifikátu jedním příkazem.
sudo /opt/puppetlabs/bin/puppetserver ca sign --all
V některých případech může být nutné zrušit certifikát konkrétního uzlu, abyste je mohli načíst zpět. Nahraďte
sudo /opt/puppetlabs/bin/puppetserver ca revoke --certname <AGENT_NAME>
Seznam všech podepsaných a nepodepsaných požadavků. Měli byste běžet na hlavním serveru.
sudo /opt/puppetlabs/bin/puppetserver ca list --all
Výstup:
Signed Certificates: server.itzgeek.local (SHA256) E5:A4:93:45:EF:82:3B:FF:6E:36:D2:9A:F0:75:15:67:94:33:06:2F:84:9F:D1:45:CE:C6:1C:86:D4:57:B8:25 alt names: ["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek.local"] client.itzgeek.local (SHA256) AB:3B:F0:D0:62:69:50:DD:50:45:CE:AD:A5:2C:4F:9E:EB:19:D6:C6:9C:34:A3:C5:CD:84:8F:BA:50:04:4A:D0
Ověřte loutkového agenta
Jakmile Puppet master podepíše váš klientský certifikát, spusťte na klientském počítači následující příkaz a otestujte jej.
sudo /opt/puppetlabs/bin/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 '1558888335' Notice: Applied catalog in 0.02 seconds
Vytvořit manifest
Manifest je datový soubor, který obsahuje konfiguraci klienta, napsanou v deklarativním jazyce Puppet nebo Ruby DSL. Tato část pokrývá základní manifest pro vytvoření adresáře i souboru na klientském počítači.
Hlavní soubor manifestu loutky se nachází na adrese /etc/puppetlabs/code/environments/production/manifests adresář. Vytvořte nový soubor manifestu.
sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp
Nyní přidejte do manifestu následující řádky, abyste vytvořili adresář v uzlu klienta.
node 'client.itzgeek.local' { # Applies only to mentioned node. If nothing mentioned, applies to all. file { '/tmp/puppetdir': # Resource type file ensure => 'directory', # Create as a diectory owner => 'root', # Ownership group => 'root', # Group Name mode => '0755', # Directory permissions } }Pokud proměnná uzlu není nastavena, bude se tento manifest vztahovat na všechny uzly připojené k loutkové předloze.
Nyní spusťte následující příkaz na klientském uzlu a načtěte konfigurace.
sudo /opt/puppetlabs/bin/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 '1558888460' Notice: /Stage[main]/Main/Node[client.itzgeek.local]/File[/tmp/puppetdir]/ensure: created Notice: Applied catalog in 0.16 seconds
Ověřte, že byl na klientském uzlu vytvořen adresář.
ls -ld /tmp/puppetdir/
Výstup:
drwxr-xr-x 2 root root 4096 May 26 22:03 /tmp/puppetdir/
Pojďme napsat manifest pro vytvoření souboru s obsahem.
node 'client.itzgeek.local' { # Applies only to mentioned node. If nothing mentioned, applies to all. file { '/tmp/puppetfile': # 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" # Content of the file } }
Můžete přejít na klientský počítač a načíst katalog, jak je uvedeno v předchozím příkladu, nebo počkat 15 minut, než se katalog automaticky použije.
Závěr
Doufám, že vám tento příspěvek pomohl nainstalovat Puppet Server na Ubuntu 18.04 / Ubuntu 16.04 a Debian 9. Podělte se prosím o svůj názor v sekci komentářů.