Skip to main content

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.

  1. La configuración del nodo en concreto
  2. La configuración de la familia de sistema operativo
  3. 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.

Common packages

En la carpeta del entorno, cree el fichero common_packages.pp

cd /etc/puppetlabs/code/environments/production/manifests/
nano 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.

class common_packages {

  package { 'net-tools':
    ensure => 'installed'
  }

  package { 'htop':
    ensure => 'installed'
  }

  package { 'fail2ban':
    ensure => 'installed'
  }

}

Ahora cree el fichero de paquetes comunes para el environment.

cat <<endblock >> /etc/puppetlabs/code/environments/production/data/common.yaml
---

classes:
  - common_packages
endblock
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')

Reincie el servidor puppet y realice la prueba

systemctl restart puppetserver

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