Puppet dostępny jest w komercyjnej wersji Enterprise i bezpłatnej OpenSource. W artykule tym zajmiemy się instalacją wersji OpenSource w systemie CentOS 7 ale wspomnimy też o wersji Enterprise.
W skład pakietu Puppet (Enterprise) wchodzą komponenty po stronie agenta:
- Puppet agent – klient, który komunikuje się z serwerem.
- Puppet – rdzeń platformy zarządzania konfiguracją. Zawiera specjalny język programowania do opisywania pożądanego stanu systemu.
- Facter – narzędzie profilowania systemu, wykorzystywane do wysyłania do serwera ważnych informacji o systemie.
- Hiera – narzędzie używane do konfiguracji własnych klas.
- MCollective (Marionette Collective) – framework do budowania systemu orkiestracji serwera lub równoległego wykonywania zadań.
oraz komponenty po stronie serwera:
- Puppet Server – aplikacja uruchamiana w JVM, która świadczy usługi agentom (klientom). Agenci pobierają od serwera katalogi z konfiguracją węzłów.
- Puppet Master – aplikacja Ruby, która kompiluje konfiguracje dla węzłów agentów.
- PuppetDB – baza, która zawiera dane generowane przez Puppeta i API do analizowania tych danych.
- R10k – narzędzie zarządzania kodem.
- Razor Server – aplikacja do provisioningu systemów przez PXE.
- PostgreSQL – DBMS używana przez PuppetDB
- ActiveMQ – messsage broker używany przez MCollective.
- Nginx – web serwer używany przez Puppet Enterprise Console.
- Console – interfejs webowy (tylko dla Puppet Enterpise).
Narzędzia klienckie dla wersji Puppet Enterpise:
- Puppet orchestrator – kontrola wdrażanych zmian w infrastrukturze.
- Puppet access – narzędzie do autentykacji użytkowników.
- Code manager – narzędzie do zarządzania kodem i synchronizacji plików.
- PuppetDB CLI – linia komend bazy PuppetDB.
Architektura Agent / Master.
W tej architekturze na zarządzanym węźle uruchamiany jest agent, który co pewien czas wysyła pewne dane do serwera i pobiera z niego tzw. katalog. W katalogu tym znajduje się konfiguracja pożądanego stanu agenta.
Architektura Stand-Alone.
W tej architekturze każdy węzeł ma swoją kopię konfiguracji i sam kompiluje swój katalog. Aplikacja puppet apply uruchamiana jest okresowo przez cron.
Wymagania wstępne.
Ponieważ serwera Puppeta pracuje jako Certificate Authority (CA) czasy na serwerze i klientach powinny być zsynchronizowane. Instalujemy zatem na serwerze i kliencie NTP oraz synchronizujemy czas:
1 2 |
# yum -y install ntpdate # ntpdate 0.centos.pool.ntp.org |
Wszystkie węzły muszą mieć ponadto skonfigurowaną tą samą strefę czasową:
1 |
# timedatectl set-timezone Europe/Warsaw |
Puppet korzysta z nazw domenowych hostów do komunikacji z zarządzanymi hostami dlatego ważne aby wszystkie węzły miały odpowiednie wpisy na serwerze DNS lub ewentualnie w plikach /etc/hostname
na wszystkich węzłach.
Instalacja.
Na serwerze i agentach instalujemy repozytorium PuppetLabs:
1 |
# rpm -Uvh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm |
Instalacja Puppet Serwera.
1 |
# yum install -y puppetserver |
Domyślnie Puppet Server skonfigurowany jest do wykorzystywania 2GB pamięci, co możemy zmienić w pliku:
1 |
# vim /etc/sysconfig/puppetserver |
Aby zmienić użycie 2GB na 512MB, zastępujemy wpis:
1 |
JAVA_ARGS="-Xms2g -Xmx2g" |
wpisem:
1 |
JAVA_ARGS="-Xms512m -Xmx512m" |
Domyślnie Puppet master nie wymaga żadnej dodatkowej konfiguracji, można uruchomić usługę puppetserver. Jeżeli chcemy jednak zmienić nazwę domenową Puppet mastera to robimy to w pliku:
1 2 3 4 5 6 7 8 9 |
# vim /etc/puppetlabs/puppet/puppet.conf [master] dns_alt_names =ppmaster.example.com,server [main] certname = ppmaster.example.com server = ppmaster.example.com environment = production runinterval = 1h |
Uruchomienie i autostart Puppet Server.
1 2 |
# systemctl start puppetserver # systemctl enable puppetserver |
Odblokowanie portu Puppeta na serwerze:
1 2 |
# firewall-cmd --permanent --add-port=8140/tcp # firewall-cmd --reload |
Instalacja Puppet Agenta.
1 |
# yum install -y puppet-agent |
Konfiguracja:
1 2 3 4 5 6 7 |
# vi /etc/puppetlabs/puppet/puppet.conf [main] certname = ppagent1.example.com server = ppserver.example.com environment = production runinterval = 1h |
Zmienna runinterval kontroluje ile agent ma czekać na ponowne pobranie katalogu z konfiguracją z Puppet Servera. Można go zmienić i wartość zapisać także w sekundach jeżeli jest taka potrzeba.
Uruchomienie i autostart Puppet Agenta:
1 |
# /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true |
Wyjście:
1 2 3 4 5 |
Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', } |
Sygnowanie certyfikatu agenta na serwerze.
W architekturze agent/master serwer musi zatwierdzić certyfikat każdego agenta, który się będzie do niego podłączał.
Po stronie serwera wyświetlamy listę certyfikatów oczekujących na zatwierdzenie:
1 2 3 |
# /opt/puppetlabs/bin/puppet cert list "ppagent1.example.com" (SHA256) 63:5C:F8:19:76:AE:16:A6:1C:43:12:FE:34:CE:57:EB:45:37:40:98:FF:3E:CC:FE:05:7E:AF:BF:E4:2C:31:FC |
Można wylistować także zatwierdzone i nie zatwierdzone żądania. Zatwierdzone żądania zaczynają się od znaku “+”:
1 2 3 |
# /opt/puppetlabs/bin/puppet cert list --all "ppagent.example.com" (SHA256) C8:F5:FB:13:BE:80:13:22:F2:20:B6:6B:38:5E:DB:10:BB:DF:B2:3C:9F:60:89:44:D8:1E:24:DE:7C:1B:29:50 + "ppmaster..example.com" (SHA256) E2:A5:94:F8:64:EA:4A:DF:EE:1C:F1:FD:DA:6E:5B:1E:78:1E:2E:95:03:11:0F:C0:0A:84:AA:F9:38:28:CF:BB (alt names: "DNS:puppet", "DNS:ppmaster.example.com") |
Zatwierdzenie certyfikatu:
1 2 3 4 5 6 |
# /opt/puppetlabs/bin/puppet cert sign ppagent1.example.com Signing Certificate Request for: "ppagent1.example.com" (SHA256) 63:5C:F8:19:76:AE:16:A6:1C:43:12:FE:34:CE:57:EB:45:37:40:98:FF:3E:CC:FE:05:7E:AF:BF:E4:2C:31:FC Notice: Signed certificate request for ppagent1.example.com Notice: Removing file Puppet::SSL::CertificateRequest ppagent1.example.com at '/etc/puppetlabs/puppet/ssl/ca/requests/ppagent1.example.com.pem' |
Teraz klient Puppeta może komunikować się z serwerem.
Jeżeli mamy wiele żądań od agentów o zatwierdzenie ich certyfikatów możemy je sygnować jedną komendą:
1 |
# /opt/puppetlabs/bin/puppet cert sign --all |
Certyfikat możemy odwołać w razie potrzeby komendą:
1 |
# /opt/puppetlabs/bin/puppet cert clean ppagent1.example.com |
Po zatwierdzeniu certyfikatu przeprowadzamy test na kliencie:
1 2 3 4 5 6 7 8 9 |
# puppet agent --test Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts Info: Caching catalog for ppagent.netico.pl Info: Applying configuration version '1505237337' Notice: Applied catalog in 0.47 seconds |
http://levitra-20mg-priceof.online/ – levitra-20mg-priceof.online.ankor pricespharmacy-canadian.online.ankor http://buy-amoxicillin-amoxil.online/