Instalar Puppet Server y Agente en máquinas virtuales con vagrant


En esta practica vamos a Instalar Puppet Server y Agente en máquinas virtuales con vagrant, veremos como firmar los certificados y realizaremos una prueba

oscar Escrito por oscar 13 February 2023 1623 0

Puppet es una herramienta de automatización de infraestructura utilizada para configurar y administrar sistemas a través de un lenguaje de configuración declarativo. Con Puppet, los administradores de sistemas pueden describir la configuración deseada de un sistema en un archivo de configuración y luego ejecutar un agente en el sistema para aplicar automáticamente la configuración. Esto permite una mayor consistencia y precisión en la configuración de sistemas, así como una mayor facilidad de implementación y actualización de cambios. mas información en ¿Qué es puppet? | CodigoElectronica

Entrono de trabajo

Programas

Distribucion de las maquinas

Para este entorno de trabajo y el ejemplo que vamos a ejecutar, trabajaremos con Vagrant y VirtualBox, estos programas nos ayudaran a crear de forma rapida las maquinas virtuales, ademas de poder destruirlas si necesitamos volver a construir todo de nuevo.

En la siguiente imagen podemos ver la distribucion de las maquinas, el nombre y las IP´s de cada una de ellas.

Leyenda

Las maquinas tendrán la distribucion de Ubuntu focal cómo sistema operativo.

Carpeta y archivos de trabajo

Primero crearemos la carpeta de trabajo en donde guardaremos los archivos de Vagrant y donde se crean los temporal que que Vagrant necesita.

Directorio del proyecto

En esta carpeta creamos e archivo vagrantfile.

C:.
    Vagrantfile

Archivo vagrantfile

Procedemos a explicar el contenido del archivo Vagrant file:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Specify Ubuntu 20.04 as the base image
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"

  # Create 2 VMs
  config.vm.define "puppet" do |puppet|
    puppet.vm.hostname = "puppet"
    puppet.vm.network "private_network", ip: "192.168.33.10"
  end

  config.vm.define "node01" do |node01|
    node01.vm.hostname = "node01"
    node01.vm.network "private_network", ip: "192.168.33.11"
  end
end
  1. Estamos usando Ubuntu focal (2004) para crear las maquinas.
  2. Definimos una maquina puppet, la cual tendrá la IP 192.168.33.10 en esta maquina server instalaremos Puppet.
  3. Definimos una maquina node01, la cual tendrá la IP 192.168.33.11 en esta maquina agente instalaremos Puppet.

Muy importante, hemos nombrado los hosts de las maquinas como puppet y node01, estos mismos nombre los vamos a respetar en la siguiente configuración que mencionaremos mas adelante.

Ejecutamos Vagrant

En la carpeta del proyecto, dentro de la consola de comandos ejecutamos:

vagrant up
Vagrant up

Esto creara las máquinas en Vagrant con las caracteristicas descritas en vagrantfile.

Máquinas en vagrant

Puppet server

Procedemos a realizar la configuración del servidor de Puppet, en este caso para la practica, vamos a instalar y configurar todo el servidor de Puppet desde cero y manualmente para que vean como se realiza esta instalación.

Ingresar a la shell de la maquina virtual de Vagrant por ssh.

vagrant ssh puppet

Instalar puppet server

Nos guiaremos en la instalación con la documentación oficial Installing Puppet Server, primero descargamos el paquete de puppet correspondiente a la versión de Ubuntu, que la podemos encontrar en paquetes de puppet.com.

Primero descargaremos el paquete de Puppet 6 para Ubuntu Focal.

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

 Ahora cargamos el paquete a el sistema de paquetes de Linux.

sudo dpkg -i puppet6-release-focal.deb

Actualizamos el listado de paquetes.

sudo apt-get update -yq && sudo apt-get upgrade -yq

 Realizamos la instalación de Puppet server.

sudo apt-get install puppetserver -y

Configuración de los hosts

Procedemos a agregar los hosts de la maquina puppet y de los nodos agentes, editamos el archivo hosts.

sudo nano /etc/hosts

Agregamos las siguientes lineas, que son las IP de las maquinas.

192.168.33.10    puppet puppet.example.com
192.168.33.11    node01 node01.example.com

Muy importante, los nombres de los hosts deben coincidir con el nombre de las maquinas creadas en VirtualBox

puppetserver

En este caso como estamos visualizando el entorno de trabajo, modificamos la siguiente linea del archivo puppetserver para disminuir la memoria que usara Puppet, en producción, este paso no es necesario

Accedemos al archivo puppetserver para hacer los cambios.

sudo nano /etc/default/puppetserver

Buscamos la siguiente linea y cambiamos de 2g a 512m, como se muestra a continuación.

JAVA_ARGS="-Xms512m -Xmx512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

Nota: este cambio lo debemos hacer en la prueba virtual, ya que las maquinas solo tiene 1g de RAM, si lo dejamos sin cambiar Puppet no podra iniciar.

puppet.conf

Realizamos la configuración de Puppet conf.

sudo nano /etc/puppetlabs/puppet/puppet.conf

Añadimos al final del archivo las siguientes lineas, para indicar los nombres de dominio de servidor de puppet.

[main]
ndns_alt_names = puppet,puppet.example.com

Validar e iniciar puppetserver

Por ultimo ejecutamos los siguientes comandos en orden.

Para detener el servidor de Puppet.

sudo systemctl stop puppetserver

Para iniciar el servidor de Puppet.

sudo systemctl start puppetserver

Verificar el estado del servidor de Puppet. 

sudo systemctl status puppetserver

 Habilitamos el servicio de puppet para que inicie el servidor de Puppet cuando inicie Ubuntu.

sudo systemctl enable puppetserver

Puppet agente

Procedemos a realizar la configuración del agente de Puppet, en este caso para la practica, vamos a instalar y configurar todo el agente de Puppet desde cero y manualmente para que vean como se realiza esta instalación.

Para acceder a la maquina del agente, ejecutamos lo siguiente:

vagrant ssh agent

Instalar puppet master

Nos guiaremos en la instalación con la documentación oficial Installing Puppet Server, primero descargamos el paquete de puppet correspondiente a la versión de Ubuntu, que la podemos encontrar en paquetes de puppet.com.

Primero descargaremos el paquete de Puppet 6 para Ubuntu Focal.

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

 Ahora cargamos el paquete a el sistema de paquetes de Linux.

sudo dpkg -i puppet6-release-focal.deb

Actualizamos el listado de paquetes.

sudo apt-get update -yq && sudo apt-get upgrade -yq

 Realizamos la instalación de Puppet agent.

sudo apt install puppet-agent -y

Configuración de los hosts

Procedemos a agregar los hosts de la maquina puppet y de los nodos agentes, editamos el archivo hosts.

sudo nano /etc/hosts
192.168.33.10    puppet puppet.example.com
192.168.33.11    node01 node01.example.com

Muy importante, los nombres de los hosts deben coincidir con el nombre de las maquinas creadas en VirtualBox

puppet.conf

Realizamos la configuración de puppet.

sudo nano /etc/puppetlabs/puppet/puppet.conf

Añadimos al final del archivo las siguientes lineas.

[main]
server=puppet
certname=node01
environment = production
runinterval = 15m

Validar puppet agente

Por ultimo ejecutamos los siguientes comandos en orden.

Para detener el servidor del agente.

sudo systemctl stop puppet

Para iniciar el servidor de agente. 

sudo systemctl start puppet

Para ver el estado del servidor del agente.

sudo systemctl status puppet

Habilitamos el servicio de puppet para que inicie el servidor de Puppet cuando inicie Ubuntu. 

sudo systemctl enable puppet

Generar los certificados

Los agentes cuando se conectan por primera vez al servidor, solicitaran la firma de certificado de puppet. El servidor debe verificar y firmar este certificado.

Despues de validar los certificados el agente buscará los catálogos del maestro y los aplicara a los nodos del agente con regularidad.

Para realizar la configuración de los certificador procedemos con los siguiente pasos.

Desde el nodo agente realizamos el primer llamado al servidor

sudo /opt/puppetlabs/bin/puppet agent --test
Iniciar firma del certificado

En el nodo maestro procedemos a iniciar la firma, con el siguiente comando, aceptamos todas las solicitudes de los agentes.

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

 

Leyenda

Con el siguiente comando, podemos ver los certificados pendientes por firmar.

sudo /opt/puppetlabs/bin/puppetserver ca list
Certificados pendientes

Podemos ver todos los certificados firmados con el sigiente comando.

sudo /opt/puppetlabs/bin/puppetserver ca list --all
Listar todos los certificados

Al revisar el nodo agente con el comando agent --test observamos que a se conecta el agente al servidor para solicitar los cambios a aplicar.

Test nodo agente

Opcional, podemos firmar los certificados manualmente de la siguiente forma.

sudo /opt/puppetlabs/bin/puppetserver ca sign --certname node01

Ejemplo de prueba 

Vamos a crear un ejemplo simple para validar que todo esta correcto.

Nodo servidor

Editamos el siguiente archivo

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

Colocamos lo siguiente

node 'node01' {
    file {'/home/vagrant/test': # Resource type file
        ensure => 'directory', # Create a directory
        owner => 'root', # Ownership
        group => 'root', # Group Name
        mode => '0755', # Directory permissions
    }
}

En el nodo agente ejecutamos 

sudo /opt/puppetlabs/bin/puppet agent --test

Podemos ver que aplica los cambios creados desde el servidor 

Leyenda

Otros comandos

sudo /opt/puppetlabs/bin/puppet apply --modulepath=./modules ./manifests/default.pp

Referencias

Cómo instalar Puppet en Ubuntu 20.04 - ochobitshacenunbyte

Instalación de Puppet Master y agentes en varias máquinas virtuales mediante Vagrant y VirtualBox | Reflexiones programáticas (programmaticponderings.com)

¿Cómo instalar Puppet 6 en Ubuntu 18? (geekflare.com)

Puppet - Facter & Facts (tutorialspoint.com)

Man Page: puppet apply

How to Install Puppet on Ubuntu 22.04 - TecNStuff


Comentario

Debe aceptar antes de enviar