Académique Documents
Professionnel Documents
Culture Documents
Primitivas Puppet
File:
Ejemplo 1: Cambiamos las propiedades de un fichero.
file { '/etc/passwd':
owner => root, group => root, mode => 644,
}
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"]
}
Otros parámetros:
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
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"]
}
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" :
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