Puppet: eina per administrar la configuració de clients amb SO semblants

, , , , , , , , ,

QUÈ ÉS PUPPET

Puppet és una eina de gestió de la configuració de codi obert. Està escrit a Ruby i va ser publicat sota la Llicència Pública General de GNU (GPL) fins a la versió 2.7.0 i després sota la llicència Apache 2.0. Puppet Labs i Puppet van ser fundats per Luke Kanies el 2005.

Puppet és una eina dissenyada per administrar la configuració de sistemes similars a Unix i Microsoft Windows de forma declarativa des d’un servidor configurat amb puppetserver a ordinadors clients que tenen instal·lat el puppet-agent. L'usuari descriu els recursos del sistema i els seus estats fent servir el llenguatge declaratiu que proporciona Puppet. Aquesta informació és emmagatzemada en fitxers anomenats manifestos Puppet. el programari descobreix la informació del sistema mitjançant una utilitat anomenada Facter, i compila els manifestos en un catàleg específic del sistema que conté els recursos i la dependència d'aquests recursos. Aquests catàlegs són executats en els sistemes de destinació.

El programa es compon per un llenguatge declaratiu per descriure la configuració del sistema, pot ser aplicat directament al sistema, o compilat en un catàleg i distribuït al sistema de destinació a través de paradigma client-servidor (usant una Interfície de programació d'aplicacions de Transferència d'Estat Representacional (REST API), i l'agent utilitza proveïdors específics del sistema per aplicar el recurs especificat als «manifests». La capa d'abstracció de recursos permet als administradors descriure la configuració en termes d'alt nivell, com ara usuaris, serveis i paquets sense necessitat d'especificar les ordres específiques del sistema operatiu (com rpm, yum, apt).

Puppet esta dissenyat per ser multiplataforma, el programa funciona en les distribucions de Linux, incloses Red Hat Enterprise Linux (i els seus clons com CentOS i Oracle Linux), Fedora, Debian, Mandriva, Ubuntu, i SUSE, així com en altres múltiples sistemes Unix (Solaris, BSD, Mac OS X, AIX, HP-UX), i també té suport per a Microsoft Windows.

VERSIONS LINUX SUPORTADES PER PUPPET

Puppet ofereix paquets oficials que instal·len Puppet Server i tots els seus requisits previs per a les plataformes següents:

Podem veure versions disponibles de puppetserver per als diferents SO: https://apt.puppetlabs.com/

INSTAL·LACIÓ DE PUPPET AL SERVIDOR UBUNTU JAMMY 22.04

#descarreguem de repositori el deb per aconseguir la última versió de puppet per a Debian Bullseye i que serà compatible amb Ubuntu 22.04

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

#executem l'eina dpkg en mode d'instal·lació per al paquet deb anterior

 sudo dpkg -i puppet-release-bullseye.deb 

#actualitzem les llistes de paquets de apt

 apt-get update 

#instal·lem puppetserver, l’agent servidor del puppet

 apt-get install puppetserver 

#Per defecte, Puppet Server està configurat per utilitzar 2 GB de RAM. Tanmateix, si voleu experimentar amb Puppet Server en una màquina virtual, podeu assignar amb seguretat només 512 MB de memòria. Per canviar l'assignació de memòria del servidor Puppet, podeu editar el fitxer de configuració init. ##Obriu el fitxer corresponent de Ubuntu:

 /etc/default/puppetserver

Actualitzeu la línia següent per mostrar la quantitat de memòria que voleu assignar al servidor Puppet: # Modificar aquesta línia per canviar la memòria destinada a puppetserver de 2G a 512mb:

JAVA_ARGS="-Xms2g -Xmx2g" 
JAVA_ARGS="-Xms512m -Xmx512m" 

#iniciem puppetserver

systemctl start puppetserver

#per comprovar estat del servei puppetserver

 systemctl status puppetserver 

INSTAL·LACIÓ DE PUPPET AL CLIENT FOCAL 20.04

Primer de tot, el primer pas, ja que no tinc configurat un servidor DNS intern, utilitzarem el fitxer /etc/hosts, per definir les IP i els seus noms. És molt important aquesta part, si volem que tot funcioni correctament. En el meu cas, quedaria així:

#descarreguem de repositori el deb que serà compatible amb Ubuntu 20.04

wget https://apt.puppetlabs.com/puppet-release-focal.deb

#executem l'eina dpkg en mode d'instal·lació per al paquet deb anterior

sudo dpkg -i puppet-release-focal.deb

#actualitzem les llistes de paquets de apt

apt-get update 

#instal·lem puppetserver, l’agent servidor del puppet

apt-get install puppet-agent

#engeguem el servei puppet

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

#Podeu obtenir un script que instal·li l'agent de Puppet. Executeu l'ordre següent:

source /etc/profile.d/puppet-agent.sh

Per afegir el directori bin al vostre PATH a *nix, executeu:

export PATH=/opt/puppetlabs/bin:$PATH

CLIENT ⇒ Tu pots afegir configuracions del server utilitzant la comanda puppet config set subcomanda, la qual edita puppet.conf automàticament, o editant /etc/puppetlabs/puppet/puppet.conf directament. Executa al client:

puppet config set server ubuntu-jammy --section main 

Resultat: Aquesta comanda afegeix la següent configuració a la secció [main] del fitxer /etc/puppetlabs/puppet.conf

server = ubuntu-jammy

A més a més, en aquest fitxer has d’afegir:

dns_alt_names = ubuntu-jammy
certname = ubuntu-focal 

Per connectar el client amb el servidor, executar al client (deixar-lo una estona fins que pugui enviar!):

puppet ssl bootstrap

Per signar el certificat del client al servidor:

/opt/puppetlabs/server/bin/puppetserver ca sign --certname <name> 

Un cop el servidor ha signat el certificat del client, tornar a executar al client:

puppet ssl bootstrap

CREAR MANIFESTS I EXECUTAR-LOS AL CLIENT

I ara ja podem crear manifests al servidor per a que s’executin al client. Concretament hem de crear el fitxer site.pp i allí dintre posar el codi a executar als clients. Aquest fitxer ha d’estar guardat a la següent ubicació:

/etc/puppetlabs/code/environament/production/manifests

Exemple de codi que pot contenir un manifest (site.pp) per a que s'executi als clients i instal·li el programa unrar. Dintre de la carpeta manifests crea el fitxer site.pp i afegeix el següent codi:

package {"unrar":
        ensure => installed
    }

Per provocar l’execució al client, executar la comanda:

puppet agent –test

Per tenir exemples d’instruccions puppet https://www.puppetcookbook.com/