Ricerca nel sito web

Come installare Puppet Server e Agent su Debian 11


Su questa pagina

  1. Prerequisito
  2. Impostazione FQDN
  3. Aggiunta del repository dei pupazzi
  4. Installazione di Puppet Server
  5. Configurazione del server Puppet
  6. Installazione e configurazione dell'agente Puppet
  7. Registrazione dell'agente Puppet sul server Puppet
  8. Creazione del primo manifesto del pupazzo
  9. Verifica e applicazione dei manifest dei pupazzi
  10. Conclusione

Puppet è uno strumento centralizzato di gestione e automazione della configurazione. DevOps crea la gestione della configurazione per distribuire server e applicazioni e tutta la configurazione per l'automazione è archiviata sul \Puppet Server\ centrale. Successivamente, i nodi \Agent\ estrarranno una nuova configurazione dal \Puppet Server\ e applicheranno lo stato come definito.

Tutte le connessioni tra i nodi \Puppet Server\ e \Agent\ sono crittografati per impostazione predefinita utilizzando il certificato SSL/TLS. Puppet utilizza Domain Specific Language (DSL) per descrivere la configurazione del sistema ed è simile alla sintassi di Ruby.

In questa guida, installerai e configurerai il server e l'agente Puppet su Debian 11 Bullseye. Installerai il server Puppet sul server hostname Puppet-server e l'agente Puppet sul server con l'agente hostname. Alla fine, creerai i primi manifest del pupazzo per l'installazione dello stack LEMP di base sul nodo dell'agente.

Prerequisito

  • Saranno necessari due diversi server Debian 11.
    • Il server marionetta con indirizzo IP 192.168.5.100 e l'fqdn marionetta-server.localdomainl.lan.
    • Il nodo dell'agente con l'indirizzo IP 192.168.5.150 e l'fqdn agent.localdomain.lan.

    Configurazione FQDN

    Innanzitutto, imposterai il nome di dominio completo (FQDN) e il file /etc/hosts sia sul server pupazzo che sull'agente. Ciò assicurerà che entrambi i server possano comunicare con il nome di dominio locale.

    Per impostare FQDN, esegui il comando hostnamectl di seguito.

    Esegui il seguente comando per configurare fqdn Puppet-server.localdomain.lan sul Puppet-Server.

    hostnamectl set-hostname puppet-server.localdomain.lan

    Eseguire il comando seguente per configurare fqdn agent.localdomain.lan sul nodo agente.

    hostnamectl set-hostname agent.localdomain.lan

    Successivamente, modifica il file /etc/hosts utilizzando l'editor vim come di seguito.

    sudo vim /etc/hosts

    Copia e incolla la seguente configurazione.

    192.168.5.100   puppet-server.localdomain.lan
    192.168.5.150   agent.localdomain.lan

    Salva il file ed esci.

    Infine, esegui il comando ping di seguito per verificare la connessione tra il server pupazzo e l'agente.

    ping puppet-server.localdomain.lan -c3
    ping agent.localdomain.lan -c3

    Se la tua configurazione è corretta, vedrai il seguente output. Il server-fantoccio.dominiolocale.lan viene risolto nel server 192.168.5.100 e l'agente.dominiolocale.lan viene risolto nel nodo dell'agente 192.168.5.150.

    Aggiunta del repository di marionette

    Per impostazione predefinita, Puppelabs fornisce pacchetti di repository per diverse distribuzioni Linux, inclusa l'ultima Debian 11 Bullseye. In questo passaggio, aggiungerai e installerai il repository Puppet sia sul server pupazzo che sull'agente. Al momento della stesura di questo articolo, l'ultima versione di Puppet è la v7.x.

    Scarica il pacchetto del repository utilizzando il comando wget di seguito.

    wget https://apt.puppet.com/puppet7-release-bullseye.deb

    Successivamente, installa il file deb puppet7-release-bullseye.deb utilizzando il comando dpkg di seguito.

    sudo dpkg -i puppet7-release-bullseye.deb

    Al termine dell'installazione, eseguire il comando apt riportato di seguito per aggiornare e rinfrescare l'indice dei pacchetti Debian.

    sudo apt update

    Ora sei pronto per installare i pacchetti Puppet.

    Installazione di Puppet Server

    In questo passaggio, installerai il pacchetto del server Puppet sul server dei pupazzi. Al momento della stesura di questo articolo, l'ultima versione di Puppet è la v7.

    Per installare Puppet Server, eseguire il comando apt di seguito. Questo comando installa automaticamente anche altri pacchetti come Java OpenJDK.

    sudo apt install puppetserver

    Digitare Y per confermare l'installazione.

    Al termine dell'installazione, sarà necessario caricare l'ambiente bash per Puppet Server.

    Per impostazione predefinita, Puppet memorizza il suo file binario nella directory /opt/puppetlabs/bin. Esegui il seguente comando per applicare la nuova variabile di ambiente PATH per Puppet Server.

    source /etc/profile.d/puppet-agent.sh
    echo $PATH

    Facoltativamente, puoi anche applicare la variabile di ambiente PATH eseguendo il seguente comando.

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

    Ora verifica la variabile di ambiente PATH utilizzando il comando seguente. Assicurati che la directory /opt/puppetlabs/bin sia nell'elenco della variabile di ambiente PATH.

    echo $PATH

    Successivamente, puoi eseguire normalmente il comando puppetserver. Di seguito puoi controllare la versione Puppet.

    puppetserver -v

    Dovresti ottenere un output simile allo screenshot qui sotto.

    Successivamente, modifica la configurazione del server Puppet /etc/default/puppetserver utilizzando l'editor vim.

    sudo vim /etc/default/puppetserver

    Modifica l'allocazione di memoria massima per il Puppet Server. Dipende dalla memoria del tuo sistema. In questa guida, abbiamo 2 GB di memoria e assegneremo 1 GB per il server Puppet. E useremo la configurazione di seguito.

    JAVA_ARGS="-Xms1g -Xmx1g"

    Salva il file di configurazione ed esci.

    Successivamente, ricarica il gestore systemd per applicare il nuovo file del servizio Puppet.

    sudo systemctl daemon-reload

    Quindi avvia e abilita il servizio puppetserver utilizzando il comando seguente.

    sudo systemctl start enable --now puppetserver

    Il servizio puppetserver dovrebbe essere attivo e funzionante. Esegui il comando seguente per verificare il puppetserver.

    sudo systemctl status puppetserver

    Dovresti vedere l'output simile allo screenshot qui sotto.

    Inoltre, se utilizzi un firewall UFW sul tuo sistema, assicurati di aprire la porta 8140 che verrà utilizzata dal Puppet Server.

    Esegui il comando seguente per collegare tutte le connessioni in entrata dalla sottorete locale 192.168.5.0/24 al Puppet Server sulla porta 8140.

    sudo ufw allow from 192.168.5.0/24 to any proto tcp port 8140
    sudo ufw status

    Di seguito sono riportate le attuali regole del firewall UFW che dovresti vedere.

    Configurazione del server delle marionette

    In questo passaggio, modificherai la configurazione del Puppet Server. E questo può essere fatto modificando direttamente la configurazione di Puppet o generando la configurazione utilizzando la riga di comando puppet.

    Esegui i comandi del pupazzo di seguito per configurare il Puppet Server. Questo imposterà il nome dominio Puppet Server predefinito e l'intervallo di esecuzione nella sezione principale, e l'ambiente e dns_alt_names nella sezione server.

    puppet config set server puppet-server.localdomain.lan --section main
    puppet config set runinterval 1h --section main

    puppet config set environment production --section server
    puppet config set dns_alt_names puppet-server,puppet-server.localdomain.lan --section server

    Ora controlla la configurazione del Puppet Server /etc/puppetlabs/puppet/puppet.conf usando il comando cat qui sotto.

    cat /etc/puppetlabs/puppet/puppet.conf

    Dovresti vedere la configurazione del server Puppet come di seguito.

    Infine, riavvia il servizio puppetserver per applicare una nuova configurazione eseguendo il comando systemctl di seguito.

    sudo systemctl restart puppetserver

    A questo punto, hai completato l'installazione e la configurazione di Puppet Server.

    Installazione e configurazione di Puppet Agent

    In questo passaggio, installerai e configurerai l'agente Puppet sull'agente del computer client.

    Prima di installare Puppet Agent, assicurati di aver completato la configurazione FQDN e aggiunto il repository Puppet.

    Ora installiamo e configuriamo il Puppet Agent.

    Installa il pacchetto puppet-agent usando il comando apt qui sotto.

    sudo apt install puppet-agent

    Al termine dell'installazione, eseguire il comando seguente per avviare e abilitare il servizio Puppet.

    sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

    Dovresti vedere l'output simile allo screenshot qui sotto.

    Successivamente, imposterai la variabile di ambiente PATH per aggiungere il percorso binario Puppet /opt/puppetlabs/bin/. In questo modo, puoi eseguire il comando puppet direttamente senza il percorso completo del file binario.

    source /etc/profile.d/puppet-agent.sh
    echo $PATH

    Un altro modo per farlo è aggiungere una nuova variabile d'ambiente PATH alla configurazione ~/.bashrc usando il seguente comando.

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

    Ora verifica la configurazione della variabile di ambiente PATH utilizzando il seguente comando.

    echo $PATH

    Dovresti vedere il percorso binario Puppet /opt/puppetlabs/bin aggiunto alla variabile di ambiente PATH.

    Registrazione dell'agente Puppet sul server Puppet

    Dopo aver installato l'agente Puppet, ora configurerai l'agente Puppet per registrarlo sul server Puppet principale.

    Innanzitutto, assicurati che l'fqdn del Puppet Server sia raggiungibile dalla macchina dell'agente. Provalo usando il comando ping qui sotto.

    ping puppet-server.localdomain.lan -c3

    Successivamente, esegui i comandi seguenti per configurare l'agente Puppet. Questo definirà il nome dominio Puppet Server e ca_server nella sezione agente.

    puppet config set server puppet-server.localdomain.lan --section agent
    puppet config set ca_server puppet-server.localdomain.lan --section agent

    Verifica la configurazione Puppet generata nel file /etc/puppetlabs/puppet/puppet.conf.

    cat /etc/puppetlabs/puppet/puppet.conf

    Dovresti vedere l'output simile allo screenshot qui sotto.

    Ora esegui il comando seguente per riavviare il servizio Puppet e applicare le nuove modifiche. Quindi verifica il servizio Puppet e assicurati che sia attivo e funzionante.

    sudo systemctl restart puppet
    sudo systemctl status puppet

    Di seguito è riportato l'output dello stato del servizio Puppet.

    Successivamente, esegui il comando seguente per registrare l'agente Puppet sul server Puppet. Questo comando genererà nuovi certificati TLS e creerà nuove richieste di firma del certificato al server Puppet.

    puppet ssl bootstrap

    Ora passa al terminale Puppet Server ed esegui il comando seguente per controllare le richieste di firma del certificato, quindi verifica la firma del certificato per l'agente Puppet agent.localdomain.lan.

    puppetserver ca list --all
    puppetserver ca sign --certname agent.localdomain.lan

    Dovresti vedere il messaggio Richiesta di certificato firmata con successo.....

    Quindi, esegui il comando seguente per verificare l'elenco dei certificati sul Puppet Server.

    puppetserver ca list-all

    Dovresti vedere due diversi certificati, il certificato per Puppet Server e Puppet Agent.

    Ora passa di nuovo al terminale Puppet Agent e dovresti vedere i messaggi come Avviso: inizializzazione SSL completata, il che significa che le richieste di firma del certificato sono state completate correttamente.

    A questo punto, sei pronto per creare un nuovo primo manifest Puppet.

    Creazione del primo manifesto del pupazzo

    In questo passaggio, creerai un nuovo primo manifest di pupazzo per l'installazione dello stack LEMP (Nginx, MariaDB e PHP-FPM). Tutti i manifest per l'ambiente di produzione devono essere archiviati nella directory Puppet Server /etc/puppetlabs/code/environments/production/.

    Cambia la tua attuale directory di lavoro in /etc/puppetlabs/code/environments/production/.

    cd /etc/puppetlabs/code/environments/production/

    Successivamente, crea una nuova directory di layout manifest per lo stack LEMP nella directory modules.

    mkdir -p modules/lemp/{manifests,files}

    Spostati nella directory modules/lemp e crea un nuovo file manifest Puppet manifests/init.pp utilizzando l'editor vim/nano.

    cd modules/lemp/
    nano manifests/init.pp

    Copia e incolla il seguente linguaggio di sintassi del pupazzo per l'installazione di LEMP Stack, assicurati che ogni servizio LEMP Stack sia attivo e in esecuzione e crea un nuovo file index.html personalizzato.

    class lemp {

        Package { ensure => 'installed' }
        $lemppackages = [ 'nginx', 'mariadb-server', 'php-fpm' ]
        package { $lemppackages: }

        Service { ensure => 'running', enable => 'true'}
        $lempsvc = [ 'nginx', 'mariadb', 'php7.4-fpm' ]
        service { $lempsvc: }

        file { '/var/www/html/index.html':
         ensure  => file,
         content => "<h1><center>Welcome to Nginx - Managed by Puppet</center></h1>",
         mode    => '0644',
       }

    }

    Salva il file ed esci.

    Successivamente, esegui il comando seguente per convalidare il file manifest di Puppet init.pp.

    puppet parser validate init.pp

    Se non hai visto alcun messaggio di output, la configurazione è corretta.

    Ora crea un'altra configurazione manifests/site.pp usando l'editor vim/nano.

    cd /etc/puppetlabs/code/environments/production/
    vim manifests/sites.pp

    Definisci l'host di destinazione su agent.localdomain.lan e applica il nuovo manifest Puppet lemp.

    node 'agent.localdomain.lan' {
        include lemp
    }

    Salva il file ed esci.

    Verifica nuovamente la configurazione del manifesto Puppet utilizzando il seguente comando.

    puppet parser validate site.pp

    Verifica e applicazione dei manifesti dei pupazzi

    Ora hai creato un nuovo primo manifest Puppet per la distribuzione di LEMP Stack. A questo punto, il nodo Puppet Agent sincronizzerà automaticamente tutti i manifest con il Puppet Server e applicherà una nuova configurazione del manifest.

    Ma puoi anche applicare il manifest Puppet manualmente dalla macchina Puppet Agent.

    Torna all'agente del server terminal ed esegui il comando seguente per applicare manualmente i manifesti di Puppet.

    puppet agent -t

    Questo eseguirà il manifest Puppet sulla macchina Puppet Agent e installerà LEMP Stack tramite i manifest Puppet lemp.

    Di seguito è riportato l'output che otterrai.

    Ora esegui il comando seguente per verificare ogni servizio Nginx, MariaDB e PHP-FPM.

    sudo systemctl status nginx
    sudo systemctl status mariadb
    sudo systemctl status php7.4-fpm

    Dovresti vedere che ogni servizio è attivo e in esecuzione.

    Ora apri il tuo browser web e digita l'indirizzo IP del tuo nodo Agent sulla barra degli indirizzi. E dovresti vedere il file index.html personalizzato di seguito.

    Ora hai applicato correttamente la distribuzione dello stack LEMP alla macchina dell'agente utilizzando i manifesti Puppet.

    Conclusione

    Congratulazioni! Ora hai installato correttamente Puppet Server e Agent su Debian 11 Bullseye. Inoltre, hai imparato a creare i primi manifest Puppet per l'installazione di LEMP Stack.

    ONel passaggio successivo, potrebbe essere interessante configurare un altro nodo e creare un manifest Puppet più complesso per le tue distribuzioni.