Gestionando servidores con Puppet

3,779 views

Published on

Charla sobre gestión de servidores con Puppet realizada en los cursos del GUL de la Universidad Carlos III de Madrid por Javier Turégano.

La charla se divide principalmente en 3 partes: describir el problema que encaramos cuando intentamos administrar el creciente número de servidores que requiere cualquier entidad que consuma servicios de IT, algunas de las posibles soluciones que podemos encontrar y qué características debe tener una solución a este problema y por último cómo Puppet puede ser esta solución y una pequeña introducción a cómo funciona.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,779
On SlideShare
0
From Embeds
0
Number of Embeds
335
Actions
Shares
0
Downloads
69
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Gestionando servidores con Puppet

  1. 1. Gestionando servidores con Puppet Javier Turégano Molina Cursos GUL Universidad Carlos III 09 Nov 2010
  2. 2. Índice • El problema • Posibles soluciones • Puppet • Dudas y preguntas
  3. 3. ¿Qué es eso de administrar? ¿Todas las redes/sistemas se administran igual?
  4. 4. Y aún nos faltaba... “La nube”
  5. 5. Pero entonces... ¿Se trata sólo de una cuestión de tamaño?
  6. 6. Gestión Homogénea de Servidores Heterogéneos
  7. 7. Evitar errores humanos
  8. 8. Reproducibilidad Vuelta atrás
  9. 9. Estandarizar Compartir
  10. 10. Posibles Soluciones
  11. 11. Posibles Soluciones PXE/Kickstar Plantillas (Virtualización/Cloud) Red Hat Satelite/Network/Spacewalk Ubuntu Landscape Cobbler
  12. 12. Posibles Soluciones (II) CfEngine Puppet Chef Capistrano ControlTier
  13. 13. Comparativa En Wikipedia: http://en.wikipedia.org/wiki/Comparison_of_o pen_source_configuration_management_soft ware
  14. 14. Framework libre para la gestión de configuración y automatización de centros de datos. Puppet
  15. 15. • Lenguaje declarativo (qué y no cómo) • • Arquitectura cliente/servidor (SSL) • Escrito en ruby (extensible) • Módulos (forja) • Sistema de plantillas • Facter • Dashboard Componentes
  16. 16. ¿Quién usa Puppet?
  17. 17. Instalación En el servidor: apt-get install puppetmaster En los clientes: apt-get install puppet Por defecto intentarán conectarse al maestro en el nombre de host puppet
  18. 18. Configuración Cliente Los clientes buscan al maestro en: Puppet Podemos indicar dónde se encuentra editando /etc/puppet/puppet.conf [puppetd] server=maestro.midominio.es
  19. 19. Firmamos el certificado de cliente En el puppetmaster ejecutamos: puppetca –list servidor1.midominio.com puppetca --sign servidor1.midominio.com notice: Signed certificate request for servidor1.midominio.com
  20. 20. Configurando el servidor de ficheros En el puppetmaster editamos /etc/puppet/fileserver.conf [files] path /etc/puppet/files # allow *.example.com # deny *.evil.example.com allow 192.168.0.0/16
  21. 21. Firmamos el certificado de cliente En el puppetmaster ejecutamos: puppetca –list servidor1.midominio.com puppetca --sign servidor1.midominio.com notice: Signed certificate request for servidor1.midominio.com
  22. 22. Firmamos el certificado de cliente En el puppetmaster ejecutamos: puppetca –list servidor1.midominio.com puppetca --sign servidor1.midominio.com notice: Signed certificate request for servidor1.midominio.com
  23. 23. Definiendo un recurso file { "/etc/passwd": owner => "root", group => "root", mode => 644, }
  24. 24. Tipos de recursos Acceso y permisos: file, group, user, ssh Paquetes: package, yumrepo Servicios: service, cron Sistema de ficheros: file, mount, zfs, zone, zpool Equipos: host Correo: mailalias, maillist Ejecución: scripts: exec OSX: macauthorization, mcx, computer
  25. 25. Nuestra primera clase class ssh { package { ssh:ensure => installed } file { sshd_config: name => “/etc/ssh/sshd_config”, source => “puppet://ssh/sshd_config” } service { sshd: ensure => running } }
  26. 26. Formato de un módulo /etc/puppet/modules/<nombre-modulo> /files /conf-file1 /conf-file2 /manifests /init.pp /templates /template1.erb /template2.erb
  27. 27. Formato de un módulo /etc/puppet/modules/<nombre-modulo> /files /conf-file1 /conf-file2 /manifests /init.pp /templates /template1.erb /template2.erb
  28. 28. Los nodos La configuración de los nodos la encontramos en /etc/puppet/manifests/ site.pp → Conf genérica nodes/servidor1.midominio.com nodes/servidor2.midominio.com
  29. 29. Nodo por defecto node default { include sudo include vim }
  30. 30. Un nodo tipo servidor node basicserver inherits default { include ntp::client include amanda::client include nagios::nrpe package { ["rsync", "debconf-utils", "less", "pciutils"]: ensure => present } case $os { "Debian": { include aptconf } } }
  31. 31. Nodo concreto node servidor1.midominio.es inherits basicserver { include ssh file { “/etc/passwd”: source => “puppet://private/etc/passwd” } }
  32. 32. Plantillas define jboss::configrun( $xms=512 , $xmx=1024 , $maxpermsize=128 ) { file { "/opt/jboss/bin/run.conf": content => template("jboss/run.conf.erb"), owner => "jboss", group => "jboss"; } }
  33. 33. Plantillas Contenido de la plantilla tempaltes/run.conf.erb: JAVA_OPTS="-server -Xms<%= xms %>m -Xmx<%= xmx %>m -XX:MaxPermSize=<%= maxpermsize %>m
  34. 34. Facter Con facter podemos obtener datos del equipo que se está configurando y usarlo en plantillas o cómo variables: architecture => amd64 domain => midominio.es facterversion => 1.5.1 fqdn => servidor1.midominio.es hardwareisa => unknown hardwaremodel => x86_64 hostname => servidor1 id => root interfaces => eth0
  35. 35. Dashboard
  36. 36. www.turegano.net www.twitter.com/setoide Licencia Creative Commons Reconocimiento 2.5 de España Contacto
  37. 37. Titulo Autor Licencia IMG_0696 Jemimus Reconocimiento-NoComercial-CompartirIgual 2.0 Genérica The main cast Tim Dorr Reconocimiento-NoComercial-CompartirIgual 2.0 Genérica The Planet Data Center The Planet Reconocimiento-CompartirIgual 2.0 Genérica Dead Admin Arthur40A Reconocimiento-CompartirIgual 2.0 Genérica DataCenter Work stars6 / Leonardo Rizzi Reconocimiento-CompartirIgual 2.0 Genérica dsc_9120_v2 Francesco Crippa Reconocimiento 2.0 Genérica Colourful army maistora Reconocimiento-NoComercial-SinObraDerivada 2.0 Genérica Head in Hands Alex E. Proimos Reconocimiento 2.0 Genérica Crisp, Apple, Strudel, Schnitzel and Noodles Caro's Lines Reconocimiento-NoComercial-CompartirIgual 2.0 Genérica Potion Bottles MrBobDobolina Reconocimiento-NoComercial-CompartirIgual 2.0 Genérica Tekenen Inferis Attribution-NonCommercial-ShareAlike 2.0 Generic Listado de ilustraciones

×