Loading [Contrib]/a11y/accessibility-menu.js

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 1849 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
Bash

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
Bash
  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
Bash
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
Bash

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
Bash

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

sudo dpkg -i puppet6-release-focal.deb
Bash

Actualizamos el listado de paquetes.

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

 Realizamos la instalación de Puppet server.

sudo apt-get install puppetserver -y
Bash

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
Bash

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
Bash

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
Bash

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"
Bash

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
Bash

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
Bash

Validar e iniciar puppetserver

Por ultimo ejecutamos los siguientes comandos en orden.

Para detener el servidor de Puppet.

sudo systemctl stop puppetserver
Bash

Para iniciar el servidor de Puppet.

sudo systemctl start puppetserver
Bash

Verificar el estado del servidor de Puppet. 

sudo systemctl status puppetserver
Bash

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

sudo systemctl enable puppetserver
Bash

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
Bash

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
Bash

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

sudo dpkg -i puppet6-release-focal.deb
Bash

Actualizamos el listado de paquetes.

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

 Realizamos la instalación de Puppet agent.

sudo apt install puppet-agent -y
Bash

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
Bash
192.168.33.10    puppet puppet.example.com
192.168.33.11    node01 node01.example.com
Bash

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
Bash

Añadimos al final del archivo las siguientes lineas.

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

Validar puppet agente

Por ultimo ejecutamos los siguientes comandos en orden.

Para detener el servidor del agente.

sudo systemctl stop puppet
Bash

Para iniciar el servidor de agente. 

sudo systemctl start puppet
Bash

Para ver el estado del servidor del agente.

sudo systemctl status puppet
Bash

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

sudo systemctl enable puppet
Bash

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
Bash
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
Bash

 

Leyenda

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

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

Podemos ver todos los certificados firmados con el sigiente comando.

sudo /opt/puppetlabs/bin/puppetserver ca list --all
Bash
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
Bash

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
Bash

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
    }
}
Bash

En el nodo agente ejecutamos 

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

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