package

Anuncio
Ejemplos de uso de cada una de las primitivas de puppet.
File:
(crea un fichero )
1) file {"/tmp/fichero.test":
ensure => present, (ensure se asegura que el módulo existe y si no lo crea)
mode => 744,
content => "esto es una prueba",
owner => root, (recurse -> es un directorio y se lo dice desde un sitio (con archivo
group => root
no se necesita))
}
2) file { "/etc/puppet/manifests/classes/":
ensure => directory,
owner => root, group => root,
recurse => true, (recurse -> es un directorio y se lo dice desde un sitio (con archivo no se necesita))
source => "puppet://puppet2.educarex.es/files/classes/" (<- de dónde lo coge)
}
exec.
(para ejecutar)
1) exec { "/usr/bin/wget -O - http://linex.educarex.es/linex/linex.gpg | /usr/bin/apt-key add -":
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", (sobra pues tiene ruta completa)
unless => "/usr/bin/apt-key list | /bin/grep 1024D/66A90DE2" (a menos que ya este metida la clave)
}
2)
exec { "/usr/bin/apt-get -y update":
schedule => diario_varias_veces,
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
require => File["/etc/apt/sources.list"],
subscribe => File["/etc/apt/sources.list"] (<-cada vez que cambie lo ejecute, si quisieramos que lo ejecute
cuando cambie el fichero necesitariamos un refreshonly)
}
cron
(Añadir un cron al sistema)(esto lo añade al cron del sistema con lo cual para quitarlo
necesitaríamos cron{“limpiar- “)
cron { limpia-nfs:
command => "/etc/init.d/nfs-kernel-server stop ; :> /var/lib/nfs/rmtab ; /etc/init.d/nfs-kernelserver start",
user => root,
hour => 2,
minute => (se quita con ensure=absent)
}
package
(instalar un paquete)
package { rayuela-ldap:
#
ensure => "installed” }
ensure => "0.4.3-1" }
schedule
(<- para actualizar)
(<- para mantenerla)
schedule { diario_varias_veces:
period => daily,
range => "8-20",
repeat => 6
}
schedule { diario:
period => daily,
range => "9-14"
}
(el nombre es identificativo pero luego vale)
service
service { ssh-kernel-server:
ensure => running,
require => File["/etc/exports"] (si no hay fichero no lo hace)
}
user
user { pepe:
password => “Rtfgujdhgyk”,
home => “/home/pepe”,
comment => “nombre del ususario”
}
Un ejemplo de clase más sofisticada: (cjto de reglas= clase)
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"
}
*chattr -> bit inmutable. Se lo quita si lo tiene)
file { "/etc/squid/squid.conf":
owner => root, group => root, mode => 644,
source => "puppet://puppet.educarex.es/files/squid.conf.nuevo",
notify => Exec["reiniciar-squid"], (<- debe notificar)
require => Exec["comprobacion-previa"] (<- requiere comprobación
}
exec { "reiniciar-squid":
command => "/etc/init.d/squid restart",
refreshonly => true, (solo se refresca si tiene una notificación)
subscribe => File["/etc/squid/squid.conf"], (cada vez que cambie el fichero lo cambia)
require => File["/etc/squid/squid.conf"] (esto se refiere siempre a una regla que tiene ese fichero)
}
} (la falta del refreshonly ejecutaría todas las veces el subscribe)
Descargar