Ricerca nel sito web

Installa Puppet 7 Server su CentOS 8|RHEL 8|Rocky Linux 8


Oggi esploreremo l'installazione di Puppet Server su CentOS 8 | RHEL 8|Macchina Linux Rocky Linux 8. Verrà pubblicata anche una guida separata sull'installazione e la configurazione di Puppet Agent. Puppet opera in un'architettura agent-master, in cui un nodo master controlla le informazioni di configurazione per una flotta di nodi agent gestiti.

Il Puppet Server svolge il ruolo di nodo master. Puppet Server è un'applicazione Ruby e Clojure che viene eseguita sulla Java Virtual Machine (JVM) e fornisce gli stessi servizi della classica applicazione Puppet master. Lo fa principalmente eseguendo il codice master Puppet esistente in diversi interpreti JRuby, ma sostituisce alcune parti dell'applicazione classica con nuovi servizi scritti in Clojure.

Esistono due edizioni di Puppet:

  • L'impresa dei burattini (PE)
  • Open Source Marionetta

Se stai optando per un'edizione Puppet Enterprise, la sua architettura è quella mostrata di seguito.

La piattaforma Puppet comprende i seguenti componenti:

Installa Puppet 6.x Master su CentOS 8/RHEL 8/Rocky Linux 8

Esistono molti modi per installare Puppet Master sul sistema CentOS 8 Linux. Il metodo comune e più semplice è estrarre i pacchetti richiesti dal repository YUM fornito e gestito da Puppet.

Passaggio 1: aggiorna la macchina CentOS

Assicurati che il tuo computer CentOS 8 sia aggiornato:

sudo dnf -y update
sudo dnf -y install wget curl vim bash-completion

Poiché l'aggiornamento include gli ultimi pacchetti del kernel, valutare la possibilità di riavviare la macchina se non sono in esecuzione applicazioni critiche.

sudo systemctl reboot

Passo 2: Imposta il nome host del sistema e configura Chrony

Imposta un nome host corretto per la tua macchina.

sudo hostnamectl set-hostname puppetmaster.example.com

Assicurati che il nome host abbia un record DNS corretto e aggiorna anche il file /etc/hosts.

$ sudo vim /etc/hosts
192.168.122.12 puppetmaster.example.com puppetmaster

Dove :

  • 192.168.122.12 è l'indirizzo IP di Puppet Server
  • puppetmaster.example.com è l'FQDN di Puppet Server

Esci, quindi accedi nuovamente per confermare il nome host.

$ exit
$ hostname
puppetmaster.example.com

Configura Chrony NTP

sudo dnf -y install chrony
sudo systemctl enable --now chronyd
sudo timedatectl set-timezone Africa/Nairobi --adjust-system-clock
sudo timedatectl set-ntp yes

Conferma che la data e l'ora siano configurate correttamente.

$ timedatectl 
               Local time: Sat 2020-04-18 14:33:26 EAT
           Universal time: Sat 2020-04-18 11:33:26 UTC
                 RTC time: Sat 2020-04-18 11:33:25
                Time zone: Africa/Nairobi (EAT, +0300)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Passaggio 3: aggiungi il repository Puppet Yum

Aggiungi il repository richiesto eseguendo il comando seguente nel tuo terminale.

sudo dnf -y install https://yum.puppet.com/puppet-release-el-8.noarch.rpm

Considera anche l'aggiunta del repository EPEL:

sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf config-manager --set-enabled powertools

Passaggio 4: installa Puppet Master su CentOS 8/RHEL 8/Rocky Linux 8

Con tutti i prerequisiti configurati, puoi iniziare l'installazione di Puppet Master su CentOS 8/RHEL 8/Rocky Linux 8 Linux.

Aggiorna la cache dell'elenco dei pacchetti:

$ sudo dnf makecache
CentOS-8 - AppStream                                                                                                    4.2 kB/s | 4.3 kB     00:01    
CentOS-8 - Base                                                                                                         5.7 kB/s | 3.8 kB     00:00    
CentOS-8 - Extras                                                                                                       1.8 kB/s | 1.5 kB     00:00    
CentOS-8 - PowerTools                                                                                                   7.0 kB/s | 4.3 kB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64                                                                           24 kB/s |  39 kB     00:01    
Puppet Repository el 8 - x86_64                                                                                         3.3 kB/s | 2.5 kB     00:00    
Metadata cache created.

Il repository dei pupazzi dovrebbe essere nell'elenco dei repository disponibili nel sistema.

$ sudo dnf repolist
Last metadata expiration check: 0:00:30 ago on Sat 18 Apr 2020 02:36:49 PM EAT.
repo id                                                repo name                                                                                  status
AppStream                                              CentOS-8 - AppStream                                                                       5,281
BaseOS                                                 CentOS-8 - Base                                                                            2,231
PowerTools                                             CentOS-8 - PowerTools                                                                      1,533
*epel                                                  Extra Packages for Enterprise Linux 8 - x86_64                                             5,315
extras                                                 CentOS-8 - Extras                                                                             15
puppet                                                 Puppet Repository el 8 - x86_64                                                              148

Puoi interrogare un elenco di pacchetti Puppet disponibili nel repository:

$ sudo dnf search puppet
Last metadata expiration check: 0:03:16 ago on Thu 21 Oct 2021 04:40:12 AM EAT.
==================================================================================== Name Exactly Matched: puppet ====================================================================================
puppet.noarch : Network tool for managing many disparate systems
=================================================================================== Name & Summary Matched: puppet ===================================================================================
dmlite-puppet-dpm.noarch : Puppet modules for DPM configuration
puppet-agent.x86_64 : The Puppet Agent package contains all of the elements needed to run puppet, including ruby, facter, and hiera.
puppet-release.noarch : Release packages for the Puppet repository
puppet7-release.noarch : Release packages for the Puppet 7 repository
puppetdb.noarch : Puppet Labs puppetdb
puppetdb-termini.noarch : Termini for puppetdb
puppetserver.noarch : Puppet Labs puppetserver
python3-collectd_puppet.noarch : Collectd plugin to monitor puppet agents
rubygem-puppet-resource_api.noarch : This library provides a simple way to write new native resources for puppet
rubygem-puppet-resource_api-doc.noarch : Documentation for rubygem-puppet-resource_api
rubygem-puppetserver-ca.noarch : A simple CLI tool for interacting with Puppet Server's Certificate Authority
rubygem-puppetserver-ca-doc.noarch : Documentation for rubygem-puppetserver-ca
rubygem-semantic_puppet-doc.noarch : Documentation for rubygem-semantic_puppet
======================================================================================== Name Matched: puppet ========================================================================================
puppet-bolt.x86_64 : Stand alone task runner
rubygem-semantic_puppet.noarch : Useful tools for working with Semantic Versions
====================================================================================== Summary Matched: puppet =======================================================================================
pdk.x86_64 : Puppet Development Kit

Installa i pacchetti Puppet Master su CentOS 8 Linux.

sudo dnf install puppetserver

Puppet Agent verrà installato come dipendenza:

Rocky Linux 8 - PowerTools                                                                                                                                            638 kB/s | 2.3 MB     00:03
Last metadata expiration check: 0:00:02 ago on Thu 21 Oct 2021 04:45:47 AM EAT.
Dependencies resolved.
======================================================================================================================================================================================================
 Package                                                Architecture                      Version                                                          Repository                            Size
======================================================================================================================================================================================================
Installing:
 puppetserver                                           noarch                            7.4.1-1.el8                                                      puppet                                63 M
Installing dependencies:
 copy-jdk-configs                                       noarch                            3.7-4.el8                                                        appstream                             26 k
 java-1.8.0-openjdk-headless                            x86_64                            1:1.8.0.302.b08-0.el8_4                                          appstream                             34 M
 javapackages-filesystem                                noarch                            5.3.0-2.module+el8.3.0+125+5da1ae29                              appstream                             29 k
 libjpeg-turbo                                          x86_64                            1.5.3-10.el8                                                     appstream                            154 k
 lksctp-tools                                           x86_64                            1.0.18-3.el8                                                     baseos                                98 k
 lua                                                    x86_64                            5.3.4-11.el8                                                     appstream                            191 k
 puppet-agent                                           x86_64                            7.12.0-1.el8                                                     puppet                                24 M
 tzdata-java                                            noarch                            2021a-1.el8                                                      appstream                            190 k
Enabling module streams:
 javapackages-runtime                                                                     201801

Transaction Summary
======================================================================================================================================================================================================
Install  9 Packages

Total download size: 122 M
Installed size: 299 M
Is this ok [y/N]: y

Accetta di importare la chiave GPG quando richiesto.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                  22 MB/s | 122 MB     00:05
warning: /var/cache/dnf/puppet-caea408efb9b2853/packages/puppet-agent-7.12.0-1.el8.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 9e61ef26: NOKEY
Puppet Repository el 8 - x86_64                                                                                                                                       1.6 MB/s | 1.6 kB     00:00
Importing GPG key 0xEF8D349F:
 Userid     : "Puppet, Inc. Release Key (Puppet, Inc. Release Key) <[email >"
 Fingerprint: 6F6B 1550 9CF8 E59E 6E46 9F32 7F43 8280 EF8D 349F
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-puppet-release
Is this ok [y/N]: y
Key imported successfully
Puppet Repository el 8 - x86_64                                                                                                                                       3.1 MB/s | 3.1 kB     00:00
Importing GPG key 0x9E61EF26:
 Userid     : "Puppet, Inc. Release Key (Puppet, Inc. Release Key) <[email >"
 Fingerprint: D681 1ED3 ADEE B844 1AF5 AA8F 4528 B6CD 9E61 EF26
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-2025-04-06-puppet-release
Is this ok [y/N]: y

Conferma l'installazione del pacchetto:

$ rpm -qi puppetserver 
Name        : puppetserver
Version     : 7.7.0
Release     : 1.el8
Architecture: noarch
Install Date: Fri May  6 12:42:25 2022
Group       : System Environment/Daemons
Size        : 106546740
License     : ASL 2.0
Signature   : RSA/SHA256, Tue Apr  5 03:09:51 2022, Key ID 4528b6cd9e61ef26
Source RPM  : puppetserver-7.7.0-1.el8.src.rpm
Build Date  : Tue Apr  5 03:06:26 2022
Build Host  : k8s-jenkins-fpm-z70mg
Relocations : /
Packager    : Puppet Labs <[email >
Vendor      : Puppet Labs <[email >
URL         : http://puppet.com
Summary     : Puppet Labs puppetserver
....

Passaggio 4: configurare Puppet Master/Server su CentOS 8/RHEL 8

Una volta completata l'installazione di Puppet Master/Server su CentOS 8, è ora di avviare le configurazioni.

Definire nomi alternativi FQDN e DNS di Puppet Master:

sudo vim /etc/puppetlabs/puppet/puppet.conf

Aggiungi le impostazioni DNS nella sezione [server] .

[server]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code
dns_alt_names=puppetmaster.example.com,puppetmaster,puppetserver

Configura anche la sezione principale come di seguito:

[main]
certname = puppetmaster.example.com
server = puppetmaster.example.com
environment = production
runinterval = 1h

Dove :

  • puppetmaster.example.com è l'FQDN del tuo server Puppet.

Le mie configurazioni appaiono come di seguito dopo l'aggiornamento:

[master]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code
dns_alt_names=puppetmaster.example.com,puppetmaster,puppetserver

[main]
certname = puppetmaster.example.com
server = puppetmaster.example.com
environment = production
runinterval = 1h

Configura l'allocazione della memoria JVM

Il file in cui è possibile impostare la memoria minima e massima per JVM è:

sudo vim /etc/sysconfig/puppetserver

Per impostazione predefinita è impostato su 2 GB. Modificalo in base alle risorse disponibili sul tuo computer.

JAVA_ARGS="-Xms1g -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

Avvia Puppet Server su CentOS 8/RHEL 8/Rocky Linux 8

Dopo la configurazione di base del Puppet Server, avvia il servizio e impostalo per l'avvio all'avvio del sistema.

sudo systemctl enable --now puppetserver

Se lo avevi avviato prima, riavvia dopo le modifiche.

sudo systemctl restart puppetserver

Controlla lo stato del servizio per confermare che sia in esecuzione.

$ systemctl status puppetserver
 puppetserver.service - puppetserver Service
   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-04-18 14:56:58 EAT; 18s ago
  Process: 4068 ExecStart=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver start (code=exited, status=0/SUCCESS)
 Main PID: 4077 (java)
    Tasks: 42 (limit: 4915)
   Memory: 670.5M
   CGroup: /system.slice/puppetserver.service
           └─4077 /usr/bin/java -Xms1g -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger -XX:OnOutOfMemoryError=kill -9 %p -cp />

Apri la porta di servizio sul firewall

Con il servizio avviato, apri la porta sul firewall in modo da poter accedere al server dalla rete.

sudo firewall-cmd --add-service=puppetmaster --permanent
sudo firewall-cmd --reload

Conferma che il server Puppet funziona utilizzando Puppet Client su CentOS 8:

$ sudo /opt/puppetlabs/bin/puppet agent --test --ca_server=puppetmaster.example.com 
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Caching catalog for puppetmaster.example.com
Info: Applying configuration version '1587211455'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
Notice: Applied catalog in 0.01 seconds

Nel Puppet Master Node sono elencati tutti i certificati disponibili:

$ sudo /opt/puppetlabs/bin/puppetserver ca list --all
Signed Certificates:
    puppetmaster.example.com       (SHA256)  82:D0:CB:2D:13:09:DD:66:36:F8:B9:7A:90:3F:28:08:C7:68:F1:73:75:EF:6A:B0:EA:CC:92:16:D5:F7:4B:7A	alt names: ["DNS:puppetmaster.example.com", "DNS:puppetmaster", "DNS:puppetserver", "DNS:puppetmaster.example.com"]	authorization extensions: [pp_cli_auth: true]

Puoi firmare tutti i certificati in sospeso eseguendo il comando:

sudo /opt/puppetlabs/bin/puppetserver ca sign --all

Aggiungi la cartella Puppet Binary a ` PATH

I file binari di Puppet si trovano in /opt/puppetlabs/bin. Per impostazione predefinita, questa directory non è nel tuo ` PATH. Come si può confermare con:

$ ls /opt/puppetlabs/bin/
facter  hiera  puppet  puppetserver

$ which puppet
/usr/bin/which: no puppet in (/home/vagrant/.local/bin:/home/vagrant/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)

Aggiungilo al PERCORSO:

echo 'export PATH=$PATH:/opt/puppetlabs/bin' | tee -a ~/.bashrc
source ~/.bashrc

Verifica se funziona come previsto:

$ which puppet
/opt/puppetlabs/bin/puppet

Avvia il client Puppet

Avviamo il servizio dell'agente fantoccio poiché lo utilizzeremo per alcuni test.

sudo systemctl start puppet
sudo systemctl enable puppet

La nostra prossima guida riguarderà l'installazione di Puppet Agent nelle tue macchine da gestire con Puppet. E come scrivere manifest di base per installare pacchetti, aggiungere utenti, gestire servizi Linux ecc.

Riferimento:

  • Pagine di documentazione delle marionette

Guide simili:

  • Installa Ansible su CentOS/RHEL 8
  • Come installare e configurare Ansible Tower su CentOS 7/RHEL 7/8
  • Come configurare Chef Infra Server su CentOS 8/RHEL 8

Articoli correlati: