Gestión de configuración distribuída para la plataforma de Canaima

810 views

Published on

Propuesta para la gestión de configuración distribuída para la plataforma de Canaima

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
810
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Gestión de configuración distribuída para la plataforma de Canaima

  1. 1. VI Cayapa Canaima Barinas 2012Gestión de configuración distribuída para la plataforma de Canaima Ernesto Crespo @_seraph1
  2. 2. Agenda● Control de versiones centralizado vs distribuido● ¿Qué es Etckeeper?● ¿Qué es Mercurial?● Comandos básicos de mercurial● Etckeeper ● Instalación y configuración ● Iniciar etckeeper ● Primer commit ● Estatus y log ● Modificar archivo y reflejar cambios en el mercurial ● Ver diferencias de archivos, revisiones,revertir cambios. ● Subir a un repositorio central
  3. 3. Control de versiones centralizado vs distribuido
  4. 4. Sistemas de control de versiones● Centralizado ● CVS ● Subversion● Distribuido ● Mercurial ● Git ● Bazaar ● Darcs
  5. 5. Etckeeper● Colección de herramientas que permiten almacenar el directorio /etc en un repositorio de Control de versiones distribuído.● Refleja cambios automaticamente al final del proceso de instalación o actualización de paquetes por medio de dpkg,apt, rpm o yum.● Página del proyecto: http://kitenet.net/~joey/code/etckeeper/● Mantiene historicos de los archivos guardados en /etc para: ● Documentación: Los mensajes de log son adjuntados a los cambios de los archivos de configuración como documentación. ● Resolución de problemas: Permite recuperar configuraciones en /etc que se han borrado por error o dañado la configuración de un servicio.
  6. 6. Etckeeper● Mantiene historicos de los archivos guardados en /etc para: ● Documentación de la configuración: Los mensajes de log son adjuntados a los cambios de los archivos de configuración como documentación. ● Resolución de problemas: Permite recuperar configuraciones en /etc que se han borrado por error o dañado la configuración de un servicio.
  7. 7. Etckeeper● Maneja varios sistemas de control de versiones distribuídos como: ● Git ● Mercurial ● Bazaar ● Darcs● En la presentación se usa el sistema de control de versiones Mercurial
  8. 8. Mercurial● Sistema de control de versiones distribuido y multiplataforma, para desarrolladores de software.● Implementado principalmente en python.● Para acceder a repositorios usa ssh y/o http.● Se puede usar para controlar versiones de documentos, empaquetar para Debian, controlar versiones de archivos de configuración y desarrollo.
  9. 9. Comandos básicos de Mercurial● Listar comandos: hg● Clonar un repo: hg clone http://bitbucket.org/ecrespo/pyloro/● Ver log: hg log● Estatus del repositorio: hg status● Actualizar un repositorio: hg update● Commit: hg commit -m “Cambio de fecha”● Aplicar cambios: hg push http://bitbucket.org/ecrespo/pyloro/
  10. 10. Instalación y configuración● Instalación de etckeeper y mercurial apt-get install etckeeper mercurial● Configuración ● Modificar archivo /etc/etckeeper/etckeeper.conf – Descomentar VCS="hg" – Comentar el resto de los VCS. – Agregar la opción del usuario: HG_COMMIT_OPTIONS="-u ecrespo@gmail.com" ● Configurar Mercurial: Editar /etc/mercurial/hgrc – Agregar: [ui] username = ecrespo@gmail.com
  11. 11. Iniciar etckeeper● Borrar cualquier registro inicial de control de versiones anterior sobre el directorio /etc etckeeper uninit● Inicializar el control de versiones con mercurial para etckeeper etckeeper init adding xdg/xfce4/panel/systray-4.rc adding xdg/xfce4/panel/xfce4-menu-5.rc adding xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml adding xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml adding xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml adding xdg/xfce4/xinitrc adding xml/catalog adding xml/docbook-xml.xml adding xml/docbook-xsl.xml adding xml/rarian-compat.xml adding xml/sgml-data.xml adding xml/xml-core.xml
  12. 12. Primer commit etckeeper commit "Inicializacion del control de versiones"● Instalar un paquete Debian: apt-get install lighttpd adding lighttpd/conf-available/15-fastcgi-php.conf adding lighttpd/conf-available/90-debian-doc.conf adding lighttpd/conf-available/README adding lighttpd/lighttpd.conf adding logrotate.d/lighttpd adding rc0.d/K01lighttpd adding rc1.d/K01lighttpd adding rc2.d/S20lighttpd adding rc3.d/S20lighttpd adding rc4.d/S20lighttpd adding rc5.d/S20lighttpd adding rc6.d/K01lighttpd
  13. 13. Estatus y log● Estatus del directorio /etc/ hg status /etc/ M ../etc/.etckeeper● Log del directorio /etc/ hg log /etc/ changeset: 1:ba22869a3179 tag: tip user: ecrespo@gmail.com date: Wed Jul 27 22:02:27 2011 -0430 summary: committing changes in /etc after apt run changeset: 0:f2a3f337ecc0 user: ecrespo@gmail.com date: Wed Jul 27 21:54:21 2011 -0430 summary: Inicializacion del control de versiones
  14. 14. Modificar un archivo y reflejar cambio en el scv● Modificar archivo /etc/hosts, agregar un host:● Hacer commit: etckeeper commit "Se elimina el dominio del host jewel en /etc/hosts" /etc/hosts● Revisar log: hg log /etc/ changeset: 2:6efc1189bd8b tag: tip user: ecrespo@gmail.com date: Wed Jul 27 22:08:25 2011 -0430 summary: Se elimina el dominio del host jewel en /etc/hosts changeset: 1:ba22869a3179 user: ecrespo@gmail.com date: Wed Jul 27 22:02:27 2011 -0430 summary: committing changes in /etc after apt run changeset: 0:f2a3f337ecc0 user: ecrespo@gmail.com date: Wed Jul 27 21:54:21 2011 -0430 summary: Inicializacion del control de versiones
  15. 15. Ver diferencias en archivos● Diferencias en archivos del directorio /etc/: hg diff /etc/ diff -r 6efc1189bd8b hosts --- a/hosts Wed Jul 27 22:08:25 2011 -0430 +++ b/hosts Wed Jul 27 22:13:41 2011 -0430 @@ -1,6 +1,6 @@ 127.0.0.1 localhost 127.0.1.1 jewel jewel - +127.0.0.1 sofia sofia # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet● Al ejecutar el commit y volver a hacer el diff ya no se muestran cambios por que se subieron al repositorio: etckeeper commit "Agregado el nombre sofia al host 127.0.0.1 en el archivo /etc/hosts" /etc/hosts
  16. 16. Revisar log● Al ejecutar la visualización del log aparece el cambio del host: hg log /etc/ changeset: 3:452065708a7e tag: tip user: ecrespo@gmail.com date: Wed Jul 27 22:16:13 2011 -0430 summary: Agregado el nombre sofia al host 127.0.0.1 en el archivo /etc/hosts changeset: 2:6efc1189bd8b user: ecrespo@gmail.com date: Wed Jul 27 22:08:25 2011 -0430 summary: Se elimina pdvsa.com del host jewel en /etc/hosts changeset: 1:ba22869a3179 user: ecrespo@gmail.com date: Wed Jul 27 22:02:27 2011 -0430 summary: committing changes in /etc after apt run changeset: 0:f2a3f337ecc0 user: ecrespo@gmail.com date: Wed Jul 27 21:54:21 2011 -0430 summary: Inicializacion del control de versiones
  17. 17. Ver cambios entre revisiones● Ver cambios entre la revisión 1 y 2 de /etc/hosts: hg diff -r 1 -r 2 /etc/hosts diff -r ba22869a3179 -r 6efc1189bd8b hosts --- a/hosts Wed Jul 27 22:02:27 2011 -0430 +++ b/hosts Wed Jul 27 22:08:25 2011 -0430 @@ -1,5 +1,5 @@ 127.0.0.1 localhost -127.0.1.1 jewel.dst.pdvsa.com jewel +127.0.1.1 jewel jewel # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback
  18. 18. Revertir cambios● Revertir cambio de la versión 3 a la 2: hg revert -r 2 /etc/hosts● Archivo /etc/hosts final: 127.0.0.1 localhost 127.0.1.1 jewel jewel # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
  19. 19. Subir el repositorio de /etc a servidor central público (Bitbucket)● Subir a bitbucket: hg push https://bitbucket.org/ecrespo/configuracion-jewel http authorization required realm: Bitbucket.org HTTP user: ecrespo password: pushing to https://bitbucket.org/ecrespo/configuracion-jewel searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 4 changesets with 5764 changes to 5759 files remote: bb/acl: ecrespo is allowed. accepted payload.
  20. 20. Commits en Bitbucket
  21. 21. Archivos en bitbucket
  22. 22. Subir el repositorio a un servidor Centralizado de Mercurial por ssh● Es necesario instalar en el equipo servidor central: etckeeper, mercurial y ssh apt-get install etckeeper mercurial openssh-server● Configurar etckeeper y mercurial como se ha explicado● Iniciarlizar etckeeper: etckeeper init● Se realiza el primer commit: etckeeper commit “Inicialización del control de versiones”● Se crea la clave ssh y se copiará al servidor ssh: ssh-keygen -t rsa -C “ecrespo@gmail.com” -f ernesto-identity
  23. 23. Subir el repositorio a un servidor Centralizado de Mercurial por ssh● Se copia la clave pública al servidor ssh: scp hg-ernesto-identity.pub ernesto@IP-servidor:.ssh● Se accede al servidor● Se agrega la clave pública al archivo authorized_keys: cd .ssh cat hg-ernesto-identity.pub >> authorized_keys● En el equipo que accederá al servidor, se crea el archivo .ssh/config, se agrega el host, el usuario y la clave privada que se va a usar para la conexión ssh: host IP-servidor user ernesto IdentityFile ~/.ssh/hg-ernesto-identity
  24. 24. Subir el repositorio a un servidor Centralizado de Mercurial por ssh● Se verifica que se accede al servidor usando la llave pública: ssh IP-servidor -i ~/.ssh/hg-ernesto-identity -l ernesto● Se clona el directorio /etc al home del usuario (equipo del servidor): hg clone /etc/ conf-equipo-servidor● Se cambia el dueño y el grupo del repositorio recien clonado: chown -R ernesto.ernesto conf-equipo-servidor● Ahora se clona la configuración del servidor en el equipo cliente: hg clone ssh://ernesto@IP-servidor/repo/conf-equipo-servidor/● Las actualizaciones de los repositorios locales y remotos se pueden realizar de forma periódica por medio de cron
  25. 25. Propuesta● Tener un servidor de configuraciones centralizado con git, mercurial o bazaar.● Cada MV del proyecto tenga que usar etckeeper.● Crear una clave RSA para ssh y subir la clave pública al servidor.● Colocar los scripts al cron para automatizar las actualizaciones de los repositorios al servidor principal.● Es necesario también conocer que servicios maneja cada MV y sus datos críticos para tenerlos respaldados, y así poder recuperar un equipo o clonarlo de la forma más rápida y fácil posible.
  26. 26. Referencias:● Etckeeper con git: http://sysadmin.vazqueznanini.com.ar/herramientas/etckeeper● Etckeeper con bazaar: http://www.howtoforge.com/using-version-control-for-your-etc-directory-with-etckeeper-and- bazaar-on-debian-squeeze● Etckeeper con mercurial: http://ernesto-ecrespo.blogspot.com/2011/07/gestionar-los-archivos-de-configuracion.html● Tutorial de mercurial: http://ernesto-ecrespo.blogspot.com/2009/04/control-de-versiones-con-mercurial.html● Compartir repositorios mercurial: http://ernesto-ecrespo.blogspot.com/2011/12/compartir-repositorios-mercurial-por.html
  27. 27. Contacto● Blog: http://ernesto-ecrespo.blogspot.com● Twitter: @_seraph1● Correo: ecrespo@gmail.com
  28. 28. Creditos y Licencia● Contenido por: Ernesto Crespo http://ernesto-ecrespo.blogspot.com Licencia: Creative Common● Template de OpenOffice.org por: Raphaël Hertzog http://raphaelhertzog.com/go/ooo-template Licencia: GPL-2+● Imagen de Fondo por: Alexis Younes “ayo” http://www.73lab.com Licencia: GPL-2+

×