puppet.pdf

50

Transcript of puppet.pdf

Administración Centralizada: puppet

Ingeniería Informática

Curso 2013/14

Í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.

Software de Control de comunicaciones

Í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 ' ] ,

}

¾Alguna pregunta?

¾Alguna pregunta?