puppet.pdf
-
Upload
raul-gomez -
Category
Documents
-
view
38 -
download
1
Transcript of puppet.pdf
Índice
1 Administración Remota
2 Introducción a Puppet
3 De�nición de Recursos en Puppet
4 De�niendo entorno puppet
5 Con�gurando puppet
6 Dependencias entre recursos
Índice
1 Administración Remota
2 Introducción a Puppet
3 De�nición de Recursos en Puppet
4 De�niendo entorno puppet
5 Con�gurando puppet
6 Dependencias entre recursos
Problema de administración de confguración
Es difícil mantener todo operativo
Servicios, �chero de con�guración, software, . . . .
Es peor aún con varias máquinas.
Problema de administración de confguración
Es difícil mantener todo operativo
Servicios, �chero de con�guración, software, . . . .
Es peor aún con varias máquinas.
Problema de administración de confguración
Es difícil mantener todo operativo
Servicios, �chero de con�guración, software, . . . .
Es peor aún con varias máquinas.
Problema
¾Tiempo necesario para una máquina operativa?
1 Instalar el software.
2 Con�gurar el software.
3 Con�gurar el sistema: servicios, usuarios, cortafuegos.
Problema
¾Tiempo necesario para una máquina operativa?
1 Instalar el software.
2 Con�gurar el software.
3 Con�gurar el sistema: servicios, usuarios, cortafuegos.
Problema
¾Tiempo necesario para una máquina operativa?
1 Instalar el software.
2 Con�gurar el software.
3 Con�gurar el sistema: servicios, usuarios, cortafuegos.
Problema
¾Tiempo necesario para una máquina operativa?
1 Instalar el software.
2 Con�gurar el software.
3 Con�gurar el sistema: servicios, usuarios, cortafuegos.
Problema
¾Tiempo necesario para una máquina operativa?
1 Instalar el software.
2 Con�gurar el software.
3 Con�gurar el sistema: servicios, usuarios, cortafuegos.
Problema
¾Tiempo necesario para una máquina operativa?
1 Instalar el software.
2 Con�gurar el software.
3 Con�gurar el sistema: servicios, usuarios, cortafuegos.
Problema
¾Tiempo necesario para una máquina operativa?
1 Instalar el software.
2 Con�gurar el software.
3 Con�gurar el sistema: servicios, usuarios, cortafuegos.
Problema
¾Tiempo necesario para una máquina operativa?
1 Instalar el software.
2 Con�gurar el software.
3 Con�gurar el sistema: servicios, usuarios, cortafuegos.
Administración remota
Idea
Mantener una única con�guración.
Usado por múltiples máquinas.
¾Y usar una VM?
Una VM es fácil de con�gurar también.
Con�gurada una vez, clonada varias veces.
¾Ventajas y desventajas?
¾Qué aporta gestión centralizada?
¾Siempre es exactamente la mismacon�guración?
Administración remota
Idea
Mantener una única con�guración.
Usado por múltiples máquinas.
¾Y usar una VM?
Una VM es fácil de con�gurar también.
Con�gurada una vez, clonada varias veces.
¾Ventajas y desventajas?
¾Qué aporta gestión centralizada?
¾Siempre es exactamente la mismacon�guración?
Administración remota
Idea
Mantener una única con�guración.
Usado por múltiples máquinas.
¾Y usar una VM?
Una VM es fácil de con�gurar también.
Con�gurada una vez, clonada varias veces.
¾Ventajas y desventajas?
¾Qué aporta gestión centralizada?
¾Siempre es exactamente la mismacon�guración?
Administración remota
Idea
Mantener una única con�guración.
Usado por múltiples máquinas.
¾Y usar una VM?
Una VM es fácil de con�gurar también.
Con�gurada una vez, clonada varias veces.
¾Ventajas y desventajas?
¾Qué aporta gestión centralizada?
¾Siempre es exactamente la mismacon�guración?
Sistema de Gestión de Con�guración
Sistema de Control de Con�guración
Permite de�nir la con�guración deseada.
Control centralizado.
Se de�ne en un sitio, puede afectar a varias.
Permite con�guraciones distintas en las máquinas.
Índice
1 Administración Remota
2 Introducción a Puppet
3 De�nición de Recursos en Puppet
4 De�niendo entorno puppet
5 Con�gurando puppet
6 Dependencias entre recursos
Puppet
Software puppet
El más utilizado, surge como mejora de Chef.
Software libre, pero versión de pago (Enterprise).
Declara lo que se desea, no cómo hacerlo.
Desarrollado en Ruby.
Puppet esquema
Modelo
Un servidor y varios clientes.
Modelo de autenti�cación de clientes.
Permite particular con�guración por máquina.
Instalando Puppet
Problema con las distribuciones
Los paquetes no suelen funcionar bien.
Versión original
Bajarse los paquetes originaleshttp://puppetlabs.com/.
Servicios
puppet Programa cliente (puppet agent).
puppetmaster Programa servidor.
Relación entre cliente y servidor
puppet master
Programa que procesa el �chero de peticiones.
puppet agent
Cliente, que se conecta al servidor puppet.
Lee el catálogo, y adapta la con�guración.
Lo mejor es un ejemplo: veri�car un usuario
Fichero site.pp
u s e r { ' k a t i e ' :e n su r e => ' p r e s en t ' ,home => '/home/ ka t i e ' ,s h e l l => '/ b in /bash '
}
Servidor
Compila la regla, y copia en el catálogo.
Recibe la petición del cliente, y envía el catálogo.
Cliente
Recibe el catálogo, y veri�ca el usuario 'katie':
1 Si no existe lo crea.2 Si existe pero no es correcto ('home' o 'shell') lo cambia.3 Si existe correctamente no hace nada.
Probando Puppet
Aplicando un �chero .pp
# puppet app l y k a t i e . ppNot i c e : Compi led c a t a l o g f o r . . . i n \
env i ronment p r oduc t i o n i n 0 .35 secondsNot i c e : / Stage [ main ] /Main/User [ k a t i e ] / en su r e : c r e a t e dNot i c e : F i n i s h e d c a t a l o g run i n 1 .03 seconds#
Ventajas de Puppet
Mantiene con�guración
Permite iniciar una con�guración.
Se asegura de que la con�guración se mantenga correcta.
Flexible
Permite diferencias entre máquinas.
Compartir con�guración común.
Sencillo
u s e r { ' k a t i e ' :e n su r e => absent ,
}
package { ' openssh−s e r v e r ' :e n su r e => pre s en t ,
}
Ventajas de Puppet
Potente
# / roo t / examples / break_ssh . pppackage { ' openssh−s e r v e r ' :
e n su r e => pre s en t ,b e f o r e => F i l e [ ' / e t c / s sh / sshd_conf ig ' ] ,
}f i l e { '/ e t c / s sh / sshd_conf ig ' :
e n su r e => f i l e ,mode => 600 ,s ou r c e => '/ r oo t / examples / sshd_conf ig ' ,
}s e r v i c e { ' sshd ' :
e n su r e => runn ing ,enab l e => true ,s u b s c r i b e => F i l e [ ' / e t c / s sh / sshd_conf ig ' ] ,
}
Índice
1 Administración Remota
2 Introducción a Puppet
3 De�nición de Recursos en Puppet
4 De�niendo entorno puppet
5 Con�gurando puppet
6 Dependencias entre recursos
Recursos
Tipos de recursos
�le Permite gestionar �cheros.
Pueden copiarse de otras rutas.
service Comprobar el estado de servicios.
package Permite instalar/borrar paquetes.
user Gestionar usuarios del sistema.
group Gestiona grupos de usuarios.
cron Gestiona procesos plani�cados.
exec Ejecuta un programa cualquiera.
Recursos �le
Atributos
ensure absent|�le|directory|link|present.
path Ruta del �chero.
source De dónde copiar el �chero.
owner Dueño.
group Grupo.
mode Permisos.
Ejemplo de �le
f i l e { '/ e t c /passwd ' :t ype => ' f i l e ' ,e n su r e => ' f i l e ' ,c on t en t => '{md5}b91968a6a8279bbb6fb252bb65e127db ' ,owner => '0 ' ,group => '0 ' ,mode => '644 ' ,
}
f i l e { '/ tmp/ h e l l o ' :c on t en t => "He l l o , wor ld \n" ,}
Recurso service
Atributos
ensure running|stopped.
enable true|false (arranque).
name Nombre.
hasrestart Si tiene restart.
hasstatus Si tiene status.
Ejemplo
s e r v i c e { ' apache2 ' :e n su r e => ' runn ing ' ,h a s r e s t a r t => true ,e nab l e => ' true ' ,
}s e r v i c e { ' ng inx ' :
e n su r e => ' stopped ' ,e nab l e => ' f a l s e ' ,
}
Recurso package
Atributos
ensure present|latest| version |absent.
name Nombre del paquete.
source Origen (si no repositorio por defecto).
Ejemplo
package { ' ng inx ' :e n su r e => i n s t a l l e d ,
}
Recurso cron
Atributos
ensure present|absent.
command Orden a procesar.
hour,minute,month,. . . De�nen la hora del cron.
Ejemplo
c ron { ' Back up cat−p i c t u r e s ' :command => '/ u s r / b i n / r s y n c −az / va r /www/cat−p i c t u r e s / /cat−\p i c t u r e s−backup / ' ,hour => '04 ' ,minute => '00 ' ,
}
Consulta de recursos
Consulta de recursos
puppet permite consultar el estado de ciertos recursos.
Facilita añadirlo en los �cheros.
Veri�car un servicio
# puppet r e s o u r c e s e r v i c e apache2s e r v i c e { ' apache2 ' :
e n su r e => ' runn ing ' ,e nab l e => ' true ' ,
}#
Consulta de recursos
Example (Veri�car un usuario)
# puppet r e s o u r c e u s e r d a n i e lu s e r { ' d an i e l ' :
e n su r e => ' p r e s en t ' ,comment => ' Dan ie l , , , ' ,g i d => '1001 ' ,g roups => [ ' adm ' , ' sudo ' , ' lpadmin ' , ' sambashare ' ] ,home => '/home/ dan i e l ' ,password => ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ' ,password_max_age => '99999 ' ,password_min_age => '0 ' ,s h e l l => '/ b in /bash ' ,u i d => '1001 ' ,
}#
Índice
1 Administración Remota
2 Introducción a Puppet
3 De�nición de Recursos en Puppet
4 De�niendo entorno puppet
5 Con�gurando puppet
6 Dependencias entre recursos
Línea de comandos
Probar el puppet
apply Interpreta un �chero.
agent Modo cliente (no demonio).
�test Activa logs para ver lo que hace.
�noop Muestra lo que haría, no lo hace.
Gestiona certi�cados: cert
list Lista los pendientes por �rmar.
sign servidor Firma el servidor.
Gestión de modulos: module
search Busca un módulo.
install Instala un módulo.
generate Crea esqueleto para crear un módulo local.
Con�gurando puppet en modo cliente y servidor
Pasos1 Añadir server a puppet.conf
2 Crear reglas en site.pp en servidor.
3 Iniciar puppetmaster.
4 Probar cliente .
Gestión de certi�cados
Primera conexión del cliente
# sudo puppet agent −−t e s tI n f o : C r e a t i n g a new SSL key f o r qu i x o t e . uca . e sI n f o : c s r_ a t t r i b u t e s f i l e l o a d i n g from / e t c / puppet / c s r_ a t t r i b u t e s . yamlI n f o : C r e a t i n g a new SSL c e r t i f i c a t e r e q u e s t f o r qu i x o t e . uca . e sI n f o : C e r t i f i c a t e Request f i n g e r p r i n t (SHA256 ) : 58 :6B : A6 : 6 0 : F2 : 2 4 : FC : 6A : . . .E x i t i n g ; no c e r t i f i c a t e found and w a i t f o r c e r t i s d i s a b l e d
Autorización desde el servidor1 Consultar los permisos
# sudo puppet c e r t l i s t" qu i x o t e . uca . e s " (SHA256) 58 :6B : A6 : 6 0 : F2 : 2 4 : FC : 6A : . . .
1 Firmar el permiso
# puppet c e r t s i g n qu i x o t e . uca . e sNot i c e : S igned c e r t i f i c a t e r e q u e s t f o r qu i x o t e . uca . e sNot i c e : Removing f i l e Puppet : : SSL : : C e r t i f i c a t e R e q u e s t q u i x o t e . uca . e s \
at '/ va r / l i b / puppet / s s l / ca/ r e q u e s t s / qu i x o t e . uca . e s . pem '
Índice
1 Administración Remota
2 Introducción a Puppet
3 De�nición de Recursos en Puppet
4 De�niendo entorno puppet
5 Con�gurando puppet
6 Dependencias entre recursos
Con�gurando puppet
Fichero manifests/site.pp
Es el único �chero que se incluye por defecto.
Puede referenciar a otros �cheros, o módulos (class).
Con�guración por máquina: node
Permite una con�guración especí�ca para un cliente.
Example (Servidor web)
node ' web s e r v e r . midominio . com ' {package { ' ng inx ' :
e n su r e => i n s t a l l e d ,}
}node ' da tabase . midominio . com ' {
c l a s s { ' : : mysql : : s e r v e r ' :root_password => ' s t rongpas sword ' ,
}}
Opciones de puppet: puppet.conf
Secciones
main Por defecto.
master Especí�ca para el servidor.
agent Para los clientes
Parámetros importantes
server Host que funcionará como servidor.
runinterval Tiempo (en minutos) de actualización de clientes.
node_terminus = exec Con�guración externa de nodos.
external_nodes Fichero de con�guración de nodos (YAML).
Índice
1 Administración Remota
2 Introducción a Puppet
3 De�nición de Recursos en Puppet
4 De�niendo entorno puppet
5 Con�gurando puppet
6 Dependencias entre recursos
Dependencias entre recursos
Los recursos no son independientes
Que el servicio de apache esté ejecutándose.
Que el programa apache esté instalado.
Dependencia
El servicio depende de que esté instalado.
Hay un orden
1 Comprobar el paquete apache.
2 Comprobar que se esté ejecutando.
Indicando dependencias
Indicando dependencias
require Indica que depende de algo.
before Indica que otra depende de ella.
Ejemplo
# Manage ng inx webs e r v e rc l a s s ng inx {
package { ' ng inx ' :e n su r e => i n s t a l l e d ,
}s e r v i c e {
en su r e => runn ing ,enab l e => true ,
r e q u i r e => Package [ ' ng inx ' ] ,}f i l e {
'/ e t c / ng inx / s i t e s −enab l ed / d e f a u l t ' :e n su r e => absent ,
}
Indicando dependencias
Añadiendo dependencias
Chaining Permite añadir dependencias fuera de ambos.
Ejemplo
f i l e { '/ tmp/ t e s t 1 ' :e n su r e => pre s en t ,con t en t => "Hi . " ,
}
n o t i f y { ' a f t e r ' :message => '/ tmp/ t e s t 1 has a l r e a d y been synced . ' ,
}
F i l e [ ' / tmp/ t e s t 1 ' ] −> Not i f y [ ' a f t e r ' ]
Indicando dependencias
Indicando refresco
notify Indica que debe noti�car.
subscribe Indica que atiende noti�caciones.
Ejemplo de notify
f i l e { '/ e t c / s sh / sshd_conf ig ' :e n su r e => f i l e ,mode => 600 ,s ou r c e => ' puppet :/// modules / s sh / sshd_conf ig ' ,
}s e r v i c e { ' sshd ' :
e n su r e => runn ing ,enab l e => true ,s u b s c r i b e => F i l e [ ' / e t c / s sh / sshd_conf ig ' ] ,
}