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
- Microsoft Windows [Versión 10.0.19044.2728]
- VirtualBox Versión 6.1.40 r154048 (Qt5.6.2)
- Vagrant 2.2.19, Instalar configurar vagrant virtualbox
- Ubuntu focal 20.04
- Puppet 6
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.
En esta carpeta creamos e archivo vagrantfile.
C:.
Vagrantfile
Archivo vagrantfile
Procedemos a explicar el contenido del archivo Vagrant file:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
config.vm.hostname = "puppet"
config.vm.network "private_network", ip: "192.168.50.4"
end
- Estamos usando Ubuntu focal (2004) para crear las maquinas.
- Definimos una maquina puppet, la cual tendrá la IP 192.168.50.4 en esta maquina server 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
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
Instalar puppet agent
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.50.4 puppet puppet.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]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/run/puppet
factpath=$vardir/lib/facter
[agent]
server=puppet.example.com
certname=puppet
runinterval=30m
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
Ejemplo de prueba
Vamos a crear un ejemplo simple para validar que todo esta correcto, primero crearemos la carpeta de manifests (manifiestos de puppet) para crear los archivos .pp
sudo mkdir /etc/puppetlabs/puppet/manifests
Luego creamos el archivo sites.pp
sudo nano /etc/puppetlabs/puppet/manifests/sites.pp
En este archivo agregamos el siguiente código.
node default {
file {'/home/vagrant/test': # Resource type file
ensure => 'directory', # Create a directory
owner => 'root', # Ownership
group => 'root', # Group Name
mode => '0755', # Directory permissions
}
}
Este código de Puppet define un recurso de archivo (file
) que crea un directorio en la ruta /home/vagrant/test
en un nodo (host) específico.
El nodo se especifica como default
al principio del código, lo que significa que estas configuraciones se aplicarán a todos los nodos que no tengan una definición específica en el código.
Los parámetros del recurso son los siguientes:
ensure => 'directory'
: Esto indica que el recurso debe ser un directorio. Si el directorio no existe, se creará. Si ya existe, no se realizarán cambios.owner => 'root'
: Esto establece el propietario del directorio enroot
.group => 'root'
: Esto establece el grupo del directorio enroot
.mode => '0755'
: Esto establece los permisos del directorio en0755
. Los permisos se establecen utilizando el número octal 0755, lo que significa que el propietario tiene permiso para leer, escribir y ejecutar, y que los usuarios del grupo y otros solo tienen permiso para leer y ejecutar.
Procedemos a ejecutar el archivo con la siguiente linea
sudo /opt/puppetlabs/bin/puppet apply /etc/puppetlabs/puppet/manifests/sites.pp