Skip to main content

Instalación del servidor

Requisitos previos

La máquina debe tener acceso a internet en el proceso de instalación

Configuración del hostname

La instalación del servidor necesita que se configure correctamente el nombre del equipo.

hostnamectl set-hostname puppet-master

Añada el nombre de dominio en el fichero /etc/hosts con el FQDN.

echo "127.0.0.1 puppet-master.home.local puppet-master" >> /etc/hosts

Configuración de la IP

Ya sea a través de una reserva DHCP en el DHCP server o bien configurando de forma estática la IP en el servidor, asegurese que la máquina tiene una IP estática.

Configuración del firewall

Si la máquina tiene instalado un Firewall local y/o tiene un Firewall perimetral/segmentación, asegurese de que permite el puerto 8140/tcp para la comunicación entre los agentes y el servidor.

Iptables

iptables -I INPUT -p tcp -m tcp --dport 8140 -j ACCEPT
service iptables save

UFW

ufw allow 8140

Firewalld

firewall-cmd --permanent --zone=public --add-port=8140/tcp

Reinicio

Finalmente reinicie el equipo para que tenga en cuenta le nuevo nombre de la máquina y sobretodo para validar y comprobar que las configuraciones de la ip estática y el firewall se mantienen.

reboot

Instalación

Proceda con la instalación del Puppet Master

Instalación del servidor

wget https://apt.puppet.com/puppet-release-bullseye.deb
dpkg -i puppet-release-bullseye.deb
apt update
apt install -y puppetserver 
source /etc/profile.d/puppet-agent.sh

Confirme la versión instalada

puppetserver -v

Edite el fichero de configuración de Puppet

nano /etc/default/puppetserver

y modifique la RAM máxima que va a consumir la Java Virtual Machine (JVM). Por defecto viene configurada con 2Gb, sin embargo para entornos pequeños puede usar 512Mb.

Cambie el valor de las variables

JAVA_ARGS="-Xms2g -Xmx2g"

al valor deseado

JAVA_ARGS="-Xms512m -Xmx512m"

Guarde los cambios. Configure el servidor

puppet config set server puppet-master --section main
puppet config set runinterval 10m --section main

puppet config set environment production --section server
puppet config set dns_alt_names puppet-master,puppet-master.psc.local --section server

Finalmente active y inicie el servicio.

systemctl enable puppetserver
systemctl start puppetserver

El primer arranque de puppet tardará un poco, espere a que finalice sin errores.

A continuación ejecute el siguiente código. Esto aplicará a todos los nodos que tengan Puppet instalado. Modificará el fichero hosts añadiendo dichas lineas. Si dispone de un servidor DNS en el entorno, entonces no será necesario.

Cuidado si habilita el valor purge => true ya que eliminará cualquier cambio que se realice a mano en los ficheros hosts de las máquinas.

cat <<endblock >> /etc/puppetlabs/code/environments/production/manifests/site.pp 
node default {

  resources { 'host': purge => true }

  host { 'localhost':                 ip => '127.0.0.1', }
  host { 'puppet-master.psc.local':   ip => '192.168.0.3', host_aliases => [ 'puppet-master', 'puppet' ] }
  host { 'puppet-client.psc.local':   ip => '192.168.0.4', host_aliases => [ 'puppet-client'] }
}
endblock

Si en el propio servidor ejecuta

cat /etc/hosts

Posteriormente ejecuta

puppet agent -vt

Y vuelve a visualizar el fichero hosts

cat /etc/hosts

Podrá ver que el contenido es el siguiente

# HEADER: This file was autogenerated at 2022-11-01 17:23:13 +0100
# HEADER: by puppet.  While it can still be managed manually, it
# HEADER: is definitely not recommended.
# Your system has configured 'manage_etc_hosts' as True.
# As a result, if you wish for changes to this file to persist
# then you will need to either
# a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl
# b.) change or remove the value of 'manage_etc_hosts' in
#     /etc/cloud/cloud.cfg or cloud-config from user-data
#
192.168.0.3     puppet-master.psc.local puppet-master puppet
127.0.0.1       localhost

# The following lines are desirable for IPv6 capable hosts
192.168.0.4     puppet-client.psc.local puppet-client

En el fichero sites.pp del entorno, tambien puede indicar que software o configuraciones van a tener los equipos de dicho entorno.