Vous êtes sur la page 1sur 5

Seminario CPR de Almendralejo Iniciación a Puppet

Primitivas Puppet
File:
Ejemplo 1: Cambiamos las propiedades de un fichero.
file { '/etc/passwd':
owner => root, group => root, mode => 644,
}

Ejemplo 2: Descargamos un fichero


file { "/usr/local/bin/geogebra":
owner => root, group => root, mode => 755,
source => "puppet://puppetinstituto/files/geogebra"
}

Otros parámetros:
● replace (true, false): reemplaza el fichero si ya existe
● path: ruta del fichero
● content: añadirle un contenido de texto
● ensure:
○ absent: borrará el fichero
○ present: comprueba que exista, y sino lo crea
○ file
○ directory
● recurse (true, false): recursivo. Para borrar por ejemplo un directorio

Exec:
Ejemplo 1: ejecutar una acción
exec { "instalar_paquete_servidores" :
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
command => "apt-get install controlaula",
require => Exec["desinstalar_aulalinex"]
}

Ejemplo 2: ejecutar una acción con condición


exec { "/usr/bin/rm -rf *":
cwd => "/var/tmp",
unless => “ls -l /var/tmp | wc -l”,
schedule => varias_veces_al_dia
}

Otros parámetros:

Manuel Mora Gordillo


Seminario CPR de Almendralejo Iniciación a Puppet

● creates: un archivo que se crea al ejecutar la acción. Se ejecutará la acción únicamente


si el archivo no existe.
● unless: se ejecutará a menos que esto retorne 0
● onlyif: se ejecutará la acción únicamente si esto retorna 0
● timeout: tiempo máximo para ejecutar un comando, en caso contrario se parará la
ejecución
● user: usuario que ejecuta la acción
● schedule: ejecutar una acción de forma programada

Schedule:
Ejemplo 1: programar un tarea varias veces al día de forma diaria
schedule { varias_veces_al_dia:
period => daily,
range => "8:25 - 20:15",
repeat => 6
}
Parámetros:
● period: hourly, daily, weekly, monthly, never.
● repeat: por defecto 1.

User:
Ejemplo 1: crear un usuario en el sistema
user { manu:
password => “Rasdfaji2gu34g234hjg23hj2g34hj234”,
home => “/home/manu”,
comment => “Descripción del usuario”,
ensure => present
}

Otros parámetros:
● ensure:
○ absent: borra el usuario
○ present: comprueba que exista, sino lo crea
○ role: si existe lo modifica, y sino nada
● uid: identificador de usuario
● gid: grupo del usuario (nombre o id)
● groups: grupos a los que pertenece el usuario
● shell: shell de usuario

Manuel Mora Gordillo


Seminario CPR de Almendralejo Iniciación a Puppet

Cron:
Ejemplo 1: Añadir una tarea al cron del sistema
cron { reinicia-nfs:
command => "/etc/init.d/nfs-kernel-server stop ; /etc/init.d/nfs-kernel-server start",
user => root,
hour => 2,
minute => 15
}

Otros parámetros:
● name: nombre de la tarea.
● month (1-12): mes del año
● monthday (1-31): día del mes
● weekday (0-6): día de la semana donde 0 es Domingo
● ensure:
○ present: añadimos la tarea al cron
○ absent: la borramos

Package:
Ejemplo 1: instalar la versión de un paquete
package { controlaula:
ensure => "1.3.5-9"
}

Otros parámetros:
● ensure (installed, absent, purged, latest)
● provider (apt, aptitude, dpkg, etc.)
● configfiles (keep, replace)
● name: nombre del paquete

Service:
service { "openssh":
name => "sshd",
enable => true,
require => Package["openssh"]
}

Manuel Mora Gordillo


Seminario CPR de Almendralejo Iniciación a Puppet

Parámetros:
● ensure (running, stopped): si el servicio debe estar en ejecución o parado (true, false)
● enable (true, false): si el servicio debe ser iniciado al arrancar el sistema.
● path: la ruta donde está el servicio
● start: la ruta para iniciar un servicio o script
● stop: la ruta para parar un servicio o script
● restart: la ruta para reiniciar un servicio o script

Clases:
Para concatenar varias acciones lo hacemos mediante las clases.

class fichero-squid {
exec { "comprobacion-previa":
command => "/usr/bin/chattr -i /etc/squid/squid.conf",
onlyif => "/usr/bin/lsattr /etc/squid/squid.conf | /bin/grep i"
}
file { "/etc/squid/squid.conf":
owner => root, group => root, mode => 644,
source => "puppet://puppet.educarex.es/files/squid.conf.nuevo",
require => Exec["comprobacion-previa"]
}
exec { "reiniciar-squid":
command => "/etc/init.d/squid restart",
require => File["/etc/squid/squid.conf"]
}
}

class actualiza_aulalinex {
exec { "instalar_paquete_servidor" :
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
command => "apt-get install aulalinex-profesor-ltsp"
}
exec { "instalar_paquete_ltsp" :
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
command => "chroot /opt/ltsp/i386 | apt-get update | apt-get install aulalinex-
alumno-ltsp”
require => Exec["instalar_paquetes_servidor"]
}
exec { "actualiza_imagen" :

Manuel Mora Gordillo


Seminario CPR de Almendralejo Iniciación a Puppet

path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",


command => "ltsp-update-image --arch i386",
require => Exec["instalar_paquetes_ltsp"]
}
}

Más información: http://docs.puppetlabs.com/guides/types/

Ficheros y directorios Puppet


En /etc/puppet/
● files: ficheros que se descargarán los clientes
● modules: módulos que hacemos nosotros
● manifests: módulos que hacen en la consejería

En /etc/puppet/manifests
● site.pp: clase maestra, de aquí cuelgan todas las demás (no podemos tocarla)
● classes: todas las clases generales
● classes/portatil-alumno: reglas específicas de portátiles alumnos
● classes/portatil-prof: reglas específicas de portátiles profesores

Manuel Mora Gordillo

Vous aimerez peut-être aussi