He pensado que sería interesante mantener los módulos de puppet que uso habitualmente en mi centro mediante un sistema de control de versiones o VCS (Version Control System) como git combinado con librarian-puppet. Ésto me aportaría tres ventajas muy importantes:
- Las propias de un sistema VCS, realizando un desarrollo en el que se mantenga un control de versiones que me permita gestionar fácilmente el software.
- Compartir fácilmente los módulos desarrollados con otros administradores que realizan habitualmente las mismas tareas.
- Implantar los módulos en el servidor puppet de una manera cómoda y sencilla.
Para empezar a probar el sistema y ponerlo en marcha, he creado una cuenta en github, donde iré subiendo los módulos puppet desarrollados: https://github.com/algodelinux
Como imagino que usaré la cuenta de git para subir otro tipo de desarrollos, aparte de los módulos puppet, he decidido crear un repositorio por cada módulo y nombrarlo comenzando siempre por el prefijo "puppet-" para distinguirlo de otras cosas que pudiera llegar a subir.
El primer módulo que he subido https://github.com/algodelinux/puppet-scripts-administrador. Se trata de un módulo que coloca una serie de scripts de administración en los servidores de terminales, portátiles y workstations del centro que me facilitan el trabajo de gestión de estos equipos. De momento, no voy a entrar en detalle acerca de para qué sirve cada script. Eso lo dejaré para otro post.
Lo que vamos a ver es cómo se pueden instalar y mantener actualizados en el servidor puppet los módulos que iré publicando en mi github usando como ejemplo el módulo mencionado anteriormente:
Primer paso.- Instalación.
Lo primero que hay que hacer es instalar librarian-puppet en el servidor:
servidor:~# gem install librarian-puppet
En mi caso, tengo un sistema de 64 bits en el servidor. Fuera por lo que fuera, librarian-puppet no se instalaba y gem me daba un error de que no se podía encontrar. Para solucionarlo, he actualizado rubygems y rubygems1.8 desde squeeze-backports y ahora sí he podido instalarlo:
servidor:~# apt-get -t squeeze-backports install rubygems rubygems1.8
servidor:~# gem install librarian-puppet
Segundo paso.- Configuración.
Una vez instalado librarian-puppet, nos situamos en el directorio de configuración de puppet y ejecutamos librarian-puppet init:
servidor:~# cd /etc/puppet
servidor:/etc/puppet# librarian-puppet init
Ésto creará varios ficheros (Puppetfile, Puppetfile.lock, .gitignore) y un directorio .tmp:
- /etc/puppet/Puppetfile (donde añadiremos los módulos que queremos instalar)
- /etc/puppet/Puppetfile.lock (mantiene información de los módulos instalados con librarian-puppet)
- /etc/puppet/.gitignore (contiene los ficheros a ignorar por git: ./tmp y modules)
- /etc/puppet/.tmp (para ficheros temporales y cachés)
El archivo que utilizaremos directamente para indicar los módulos que queremos instalar en nuestro servidor será /etc/puppet/Puppetfile. El resto son gestionados por librarian-puppet.
Tercer paso.- Utilización:
Instalación de un módulo en el servidor puppet:
Una vez instalado y configurado librarian-puppet, veréis que es muy sencillo instalar un módulo puppet alojado en mi cuenta de github:
Nos situamos en el directorio /etc/puppet:
servidor:~# cd /etc/puppet
Editamos el archivo Puppetfile que hemos generado al ejecutar: librarian-puppet init. El contenido inicial de este archivo es bastante descriptivo:
#!/usr/bin/env ruby
#^syntax detection
forge "http://forge.puppetlabs.com"
# mod 'puppetlabs/stdlib'
# mod 'ntp',
# :git => 'git://github.com/puppetlabs/puppetlabs-ntp.git'
# mod 'apt',
# :git => 'https://github.com/puppetlabs/puppetlabs-apt.git',
# :ref => 'feature/master/dans_refactor'
Si os fijáis, básicamente tiene el repositorio de puppetlabs: http://forge.puppetlabs.com y algunos ejemplos de uso de módulos.
Abrimos la página de github con el módulo de puppet que queremos usar. Siguiendo con el ejemplo del módulo que comentaba al principio: https://github.com/algodelinux/puppet-scripts-administrador
Y pulsamos el botón que os he marcado con un cuadro de color rojo para copiar la URL de clonación del proyecto.
A continuación lo vamos a añadir al archivo /etc/puppet/Puppetfile. Para ello lo editamos y añadimos las dos líneas que he marcado en color amarillo y que van a permitir descargar el módulo:
A continuación lo vamos a añadir al archivo /etc/puppet/Puppetfile. Para ello lo editamos y añadimos las dos líneas que he marcado en color amarillo y que van a permitir descargar el módulo:
#!/usr/bin/env ruby
#^syntax detection
forge "http://forge.puppetlabs.com"
# mod 'puppetlabs/stdlib'
# mod 'ntp',
# :git => 'git://github.com/puppetlabs/puppetlabs-ntp.git'
# mod 'apt',
# :git => 'https://github.com/puppetlabs/puppetlabs-apt.git',
# :ref => 'feature/master/dans_refactor'
mod 'puppet-scripts-administrador',
:git => 'https://github.com/algodelinux/puppet-scripts-administrador.git'
Si os fijáis, lo único que hacen estas dos líneas es indicarle a librarian-puppet cómo se llama el módulo, y de dónde obtenerlo.
Guardamos el archivo y, a continuación, ejecutamos el comando que lo va a instalar:
servidor:/etc/puppet# librarian-puppet install
Mejor dicho: librarian-puppet va a instalar todos los módulos indicados en el archivo Puppetfile.
Comprobar los módulos instalados mediante librarian-puppet:
Si queremos obtener un listado de los módulos instalados mediante librarian-puppet, ejecutaremos:servidor:/etc/puppet# librarian-puppet show
Por ejemplo:
servidor:/etc/puppet# librarian-puppet show
puppet-scripts-administrador (0.0.1)
Actualizar los módulos instalados mediante librarian-puppet:
Si tenemos instalado un módulo puppet y el desarrollador lo ha actualizado, actualizarlo en el servidor puppet mediante librarian-puppet es sencillísimo:
servidor:/etc/puppet# librarian-puppet update nombre-del-modulo
Por ejemplo:
servidor:/etc/puppet# librarian-puppet update puppet-scripts-administrador
Para obtener un listado de los comandos disponibles en librarian-puppet:
servidor:/etc/puppet# librarian-puppet
Commands:
librarian-puppet clean # Cleans out the cache and install paths.
librarian-puppet config # Show or edit the config.
librarian-puppet help [COMMAND] # Describe available commands or one specific command
librarian-puppet init # Initializes the current directory.
librarian-puppet install # Resolves and installs all of the dependencies you specify.
librarian-puppet outdated # Lists outdated dependencies.
librarian-puppet package # Cache the puppet modules in vendor/puppet/cache.
librarian-puppet show # Shows dependencies
librarian-puppet update # Updates and installs the dependencies you specify.
librarian-puppet version # Displays the version.
servidor:/etc/puppet# librarian-puppet help comando
Ejemplo:
servidor:/etc/puppet# librarian-puppet update
Publicado por primera vez en http://enavas.blogspot.com.es
0 comentarios:
Publicar un comentario