Configuración de entorno
Por defecto Puppet Server crea un entorno llamado production. Podemos crear tantos como nos interese, sin embargo proceda con la configuración de que viene por defecto para comprobar que la instalación es correcta.
Configuración de la jerarquía
En puppet se puede definir una jerarquia a la hora de aplicar los ficheros de configuración.
- La configuración del nodo en concreto
- La configuración de la familia de sistema operativo
- Paquetes comunes
Edite el fichero
nano /etc/puppetlabs/code/environments/production/hiera.yaml
y modifiquelo para tener el siguiente contenido. Se ha cambiado el trusted.certname por hostname y se ha añadido el osfamily.
---
version: 5
defaults:
# The default value for "datadir" is "data" under the same directory as the hiera.yaml
# file (this file)
# When specifying a datadir, make sure the directory exists.
# See https://puppet.com/docs/puppet/latest/environments_about.html for further details on environments.
datadir: data
data_hash: yaml_data
hierarchy:
- name: "Per-node data (yaml version)"
path: "nodes/%{::trusted.certname}.yaml"
- name: "Per-os data"
path: "osfamily/%{::operatingsystem}/%{::operatingsystemmajrelease}.yaml"
- name: "Other YAML hierarchy levels"
paths:
- "common.yaml"
Como posibles parámetros del node, existen los siguientes
::trusted.certname
Usa el FQDN del equipo como nombre del fichero, recomendable si el mismo puppet gestiona equipos de diferentes dominios y puede colisionar el nombre.
::hostname
Usa solo el hostname de la máquina, si solo va a gestionar los dominios de un equipo y no van a colisionar nunca.
Genere la estructura de carpetas para el osfamily y algunos yaml para los sistemas operativos más comunes
mkdir -p /etc/puppetlabs/code/environments/production/data/osfamily/{Debian,Ubuntu,RedHat,Centos}
echo --- > /etc/puppetlabs/code/environments/production/data/osfamily/Debian/10.yaml
echo --- > /etc/puppetlabs/code/environments/production/data/osfamily/Debian/11.yaml
echo --- > /etc/puppetlabs/code/environments/production/data/osfamily/Ubuntu/20.04.yaml
echo --- > /etc/puppetlabs/code/environments/production/data/osfamily/Ubuntu/22.04.yaml
echo --- > /etc/puppetlabs/code/environments/production/data/osfamily/RedHat/8.yaml
echo --- > /etc/puppetlabs/code/environments/production/data/osfamily/RedHat/9.yaml
echo --- > /etc/puppetlabs/code/environments/production/data/osfamily/Centos/7.yaml
echo --- > /etc/puppetlabs/code/environments/production/data/osfamily/Centos/8.yaml
Common packages
Fuerce al sistema a usar hiera
echo "hiera_include('classes')" >> /etc/puppetlabs/code/environments/production/manifests/site.pp
Quedando de la siguiente manera
root@puppet-master:~# cat /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'] }
}
hiera_include('classes')
En la carpeta del entorno, cree el fichero debian_common_packages.pp
cd /etc/puppetlabs/code/environments/production/manifests/
nano debian_common_packages.pp
Y añada el contenido deseado, por ejemplo puede añadir los siguientes paquetes que por lo general se suelen usar en los sistemas Linux Debian.
class debian_common_packages {
package { 'net-tools':
ensure => 'installed'
}
package { 'htop':
ensure => 'installed'
}
package { 'dos2unix':
ensure => 'installed'
}
}
Deje el fichero common.yaml con el siguiente contenido, ya que solo se usara para aquellas configuraciones comunes en todos los sistemas operativos (Windows, Debian, Ubuntu, RedHat...)
echo --- /etc/puppetlabs/code/environments/production/data/common.yaml
Configure el fichero hiera de Debian 11 para que haga uso de dichos paquetes
cat <<endblock > /etc/puppetlabs/code/environments/production/data/osfamily/Debian/11.yaml
---
classes:
- debian_common_packages
endblock
Desinstale alguno de los paquetes comunes
y ejecute el comando de actualización del agente.
puppet agent -vt
Podrá ver como vuelve a instalar el paquete htop
eliminado
Cree tantos paquetes comunes para las diferentes distribuciones Linux.