Recursos y atributos de puppet


En esté posts nos enfocaremos en conocer los recursos y atributos de puppet, y veremos algunos ejemplos para entender cómo se usan

oscar Escrito por oscar 10 May 2023 806 0

Precondiciones 

Recursos y atributos de puppet

Puppet es una herramienta de gestión de configuración y automatización de infraestructuras que permite a los administradores de sistemas definir, configurar y administrar la configuración de los servidores y dispositivos de red. Los recursos son los componentes básicos de los manifiestos. 

Recursos:

En Puppet, los recursos son los componentes individuales que se administran en un manifiesto. Un recurso en Puppet es una abstracción de un componente del sistema que se puede administrar. Algunos ejemplos comunes de recursos en Puppet son:

  • Archivo: permite crear, modificar o eliminar archivos en el sistema.
  • Paquete: permite instalar, actualizar o eliminar paquetes de software.
  • Servicio: permite iniciar, detener o reiniciar servicios en el sistema.
  • Usuario: permite crear, modificar o eliminar cuentas de usuario en el sistema.
  • Grupo: permite crear, modificar o eliminar grupos de usuarios en el sistema.
  • Ejecución: permite ejecutar comandos arbitrarios en el sistema.
  • Directorio: permite crear, modificar o eliminar directorios en el sistema.

Cada recurso en Puppet tiene un tipo específico que define cómo se debe administrar. Por ejemplo, el recurso de archivo (file resource) se utiliza para administrar archivos y directorios en el sistema. El recurso de paquete (package resource) se utiliza para instalar o desinstalar paquetes de software. El recurso de servicio (service resource) se utiliza para administrar servicios del sistema, como Apache o MySQL.

Atributos de recursos:

Cada tipo de recurso tiene un conjunto de atributos que se pueden establecer para definir el estado deseado del recurso. Por ejemplo, el recurso de archivo tiene atributos como el nombre del archivo, el modo de permisos, el propietario y el grupo. Los atributos se utilizan para definir el estado deseado del recurso, y Puppet se encarga de aplicar los cambios necesarios para que el recurso esté en ese estado.

  • ensure: define el estado deseado del recurso, es decir, si debe estar presente o ausente.
  • source: indica la ubicación del archivo o paquete que se debe instalar o copiar.
  • owner y group: definen el propietario y grupo del archivo o directorio.
  • mode: establece los permisos del archivo o directorio.
  • content: define el contenido del archivo.
  • require y subscribe: establecen dependencias entre los recursos, lo que garantiza que se cumplan ciertas condiciones antes de ejecutar una acción.

Estas son solo algunas de las propiedades y recursos que ofrece Puppet. Además, Puppet cuenta con una amplia documentación y una comunidad activa que contribuye con módulos y plugins adicionales para extender su funcionalidad.

Ejemplos

Solo hay algunas reglas para recordar al declarar recursos. El formato es siempre el mismo:

resource_type {'resource_title':
    ensure => present, # usually 'present' or 'absent'
    attribute1 => 1234, # number
    attribute2 => 'value', # string
    attribute3 => ['red','blue'], # array
    noop => false, # boolean
}

Ejemplo permisos

El siguiente ejemplo especifica los permisos para un archivo en especifico

file { '/home/vagrant/test':
  ensure => directory,
  owner  => 'vagrant',
  group  => 'vagrant',
  mode   => '0775',
}
  • ensure: especifica que el recurso es un directorio.
  • owner: especifica el usuario propietario del directorio.
  • group: especifica el grupo propietario del directorio.
  • mode: especifica los permisos en modo octal para el directorio (en este caso, 0775 significa que el usuario propietario y el grupo propietario tienen permisos de lectura, escritura y ejecución, mientras que los demás usuarios solo tienen permisos de lectura y ejecución).

Ejemplo de salida

vagrant@puppet:~$ ls -l
total 4
drwxr-xr-x 2 root root 4096 May  8 17:52 test
vagrant@puppet:~$ sudo /opt/puppetlabs/bin/puppet apply /etc/puppetlabs/puppet/manifests/recursos.pp
Notice: Compiled catalog for puppet in environment production in 0.01 seconds
Notice: /Stage[main]/Main/File[/home/vagrant/test]/owner: owner changed 'root' to 'vagrant'
Notice: /Stage[main]/Main/File[/home/vagrant/test]/group: group changed 'root' to 'vagrant'
Notice: /Stage[main]/Main/File[/home/vagrant/test]/mode: mode changed '0755' to '0775'
Notice: Applied catalog in 0.01 seconds
vagrant@puppet:~$ ls -l
total 4
drwxrwxr-x 2 vagrant vagrant 4096 May  8 17:52 test

Ver recursos

Puppet puede mostrarle un recurso existente escrito en el lenguaje de configuración de Puppet. Esto facilita la generación de código basado en configuraciones existentes. Examinemos el recurso: el usuario con el que inició sesión:

sudo /opt/puppetlabs/bin/puppet resource user vagrant

Podemos observar la respuesta en donde muestra en lenguaje de Puppet la configuración del usuario vagrant.

Ver recursos

Comentario

Debe aceptar antes de enviar