1 / 15

Gestión de Configuraciones con Puppet

Carlos Armas Roundtrip Networks Corp. Gestión de Configuraciones con Puppet. Por qué ?. Crea un usuario para mi en cada uno de nuestros 500 servidores . Para mi presentación dentro de 10 minutos . Rápido por favor!. Instalar y proveer sistemas rápido !

didier
Télécharger la présentation

Gestión de Configuraciones con Puppet

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Carlos Armas Roundtrip Networks Corp. Gestión de Configuracionescon Puppet

  2. Porqué? Crea un usuariopara mi en cadauno de nuestros 500 servidores. Para mi presentacióndentro de 10 minutos. Rápidopor favor! • Instalar y proveersistemasrápido! • Eliminartareasrepetitivas • La configuración de los sistemastiende a la divergencia • La complejidad de administracionaumentaexponencialemente a medidaquecrece el número de sistemasa administrar

  3. Puppet? • Lenguaje de configuracióndesarrollado en Ruby • Surge comoalternativa de cfengine, adicionandonuevasfunciones • Facil de extender, con comunidad de contribuyentesamplia • Un servidor central (puppetmaster o “titiritero”) controla la configuración del resto de los “servidorestiteres” (puppets”) • En los servidores “titeres”, el utilitariofacterproveeinformacióndetalladasobre la configuración y recursos locales

  4. Componentes config cache client facts File bucket config file config file config file config file PuppetMaster puppetmasterd puppet puppet puppet puppetd+ facter

  5. Distribucióncomún • Como instalar? • En Fedora y EPEL, como parte de la distribución: • # yum install puppet-server <= puppetmaster • # yum install puppet <= cliente • Paquetesdisponiblespara UNIX/Linux: • Ubuntu, Debian, SuSe, Mandriva, FreeBSD, otros... • (Visite: http://reductivelabs.com/trac/puppet/wiki/DownloadingPuppet) Configuración flexible: /etc/puppet ssl/ (SSL certificates) manifests/site.pp (config central) definitions/ (patrones) classes/ (clases) nodes/ users/ (etc.)

  6. Elementos de configuración: • Tipos • Definiciones • Modelos • Clases • Nodos...

  7. Tipos • elementoque Puppet sabecomoconfigurar • Fichero (contenido, permisos, pertenencia) • Paquete (asegurarqueestéinstalado o no) • Servicio (habilitado, desahbilitado, corriendo, o detenido) • Biblioteca de tiposdistribuidos con el paquete: • cron, exec, file, filebucket, group, host, mount, notify, package, service, user, zone, sshkey.....

  8. Ejemplo: /etc/sudoers file file { “/etc/sudoers”: ensure => file, owner => root, group => root, mode => 600, source => “puppet://server/files/sudoers” }

  9. Clases • Colección de objetos (tipos): class unix_users { user { 'pandersen': shell => '/bin/bash', uid => '2010', gid => "users", home => '/home/pandersen', managehome => true, ensure => 'present' } user { 'tolick': shell => '/bin/bash', uid => '2013', gid => "users", home => '/home/tolick', managehome => true, ensure => 'present' } }

  10. Nodos • Un bloque de configuración de un servidorcliente • Puedecontenerclases, tipos • Si existe un nodo “default”, se aplica a todos los clientesconocidosque no tienenunadefiniciónespecífica node “otter.roundtripnetworks.com” { include sudo_clase include unix_users include apache_clase } node “default” { include sudo_clase include unix_users }

  11. OK, configuremos con definiciones... users/carmas.pp: @account { "carmas": ensure => present, uid => 3011, gid => "admins", groups => [ "root", "wheel" ], comment => "Carlos Armas", home => "/home/carmas", shell => "/bin/bash", require => Group["admins"] } defintions/account.pp: define account( $uid, $gid, $groups, $comment = "User $name", $home = "/home/$name", $shell = "/bin/bash", $ensure = present ) { user { $name: uid => $uid, gid => $gid, password => '*', groups => $groups, comment => $comment, home => $home, shell => $shell, managehome => true, ensure => $ensure, } } classes/unix_users.pp: class unix_users::admins { realize( Account["carmas"] ) } classes/baseclass.pp: class baseclass { include unix_users::admins group { "admins": gid => 3000, ensure => present } } Un usuario/admin “carmas” en cadaservidor…. (pueden ser 1000 servidores!) nodes/mailserver.pp: node “mailserver”: { include baseclass } nodes/default.pp: node default: { include baseclass } nodes/mailserver.pp: node “mailserver”: { include baseclass }

  12. Con definiciones, adicionarusuariosesfácil... users/carmas.pp: @account { "carmas": ensure => present, uid => 3011, gid => "admins", groups => [ "root", "wheel" ], comment => "Carlos Armas", home => "/home/carmas", shell => "/bin/bash", require => Group["admins"] } users/john.pp: @account { “john": ensure => present, uid => 3012, gid => "admins", groups => [ "root", "wheel" ], comment => “Johnny Root", home => "/home/john", shell => "/bin/bash", require => Group["admins"] } classes/unix_users.pp: class unix_users::admins { realize( Account["carmas"] Account[“john"] ) } classes/baseclass.pp: class baseclass { include unix_users::admins group { "admins": gid => 3000, ensure => present } } Ahora, adicionamos “john” en cadaservidor (pueden ser 1000 servidores!) con solo un cambio en 2 files nodes/mailserver.pp: node “mailserver”: { include baseclass } nodes/default.pp: node default: { include baseclass } nodes/mailserver.pp: node “mailserver”: { include baseclass }

  13. Perspectiva... DefinicionesmySQL Definiciones Apache Definicionescomunes Clase MySQL Clase Apache Clasescomunes nodo6 nodo5 nodo1 nodo2 nodo7 nodo3 nodo4 nodo8

  14. Contribuciones y ayuda • La documentaciónesbastante informal • Comunidadactiva, muchos templates y configuracionesdisponibles: • http://reductivelabs.com/trac/puppet/wiki/ManagedByPuppet • http://reductivelabs.com/trac/puppet/wiki/Recipes

  15. Referencias • Puppet software: http://reductivelabs.com/trac/puppet • Book: “Pulling Strings with Puppet” – James Turnbull • Some presentations: http://reductivelabs.com/trac/puppet/wiki/PuppetPresentations

More Related