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

28
VI Cayapa Canaima Barinas 2012 Gestión de configuración distribuída para la plataforma de Canaima Ernesto Crespo @_seraph1

description

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

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

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

VI Cayapa Canaima Barinas 2012

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

Ernesto Crespo@_seraph1

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

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

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

Control de versiones centralizado vs distribuido

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

Sistemas de control de versiones

● Centralizado● CVS● Subversion

● Distribuido● Mercurial● Git● Bazaar● Darcs

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

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.

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

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.

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

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

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

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.

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

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/

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

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 [email protected]"● Configurar Mercurial: Editar /etc/mercurial/hgrc

– Agregar: [ui]

username = [email protected]

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

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

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

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

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

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: [email protected]

date: Wed Jul 27 22:02:27 2011 -0430

summary: committing changes in /etc after apt run

changeset: 0:f2a3f337ecc0

user: [email protected]

date: Wed Jul 27 21:54:21 2011 -0430

summary: Inicializacion del control de versiones

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

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: [email protected]

date: Wed Jul 27 22:08:25 2011 -0430

summary: Se elimina el dominio del host jewel en /etc/hosts

changeset: 1:ba22869a3179

user: [email protected]

date: Wed Jul 27 22:02:27 2011 -0430

summary: committing changes in /etc after apt run

changeset: 0:f2a3f337ecc0

user: [email protected]

date: Wed Jul 27 21:54:21 2011 -0430

summary: Inicializacion del control de versiones

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

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

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

Revisar log

● Al ejecutar la visualización del log aparece el cambio del host:

hg log /etc/

changeset: 3:452065708a7e

tag: tip

user: [email protected]

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: [email protected]

date: Wed Jul 27 22:08:25 2011 -0430

summary: Se elimina pdvsa.com del host jewel en /etc/hosts

changeset: 1:ba22869a3179

user: [email protected]

date: Wed Jul 27 22:02:27 2011 -0430

summary: committing changes in /etc after apt run

changeset: 0:f2a3f337ecc0

user: [email protected]

date: Wed Jul 27 21:54:21 2011 -0430

summary: Inicializacion del control de versiones

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

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

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

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

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

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.

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

Commits en Bitbucket

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

Archivos en bitbucket

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

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 “[email protected]” -f ernesto-identity

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

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

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

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

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

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.

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

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

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

Contacto

● Blog: http://ernesto-ecrespo.blogspot.com

● Twitter: @_seraph1

● Correo: [email protected]

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

Creditos y Licencia

● Contenido por: Ernesto Crespohttp://ernesto-ecrespo.blogspot.comLicencia: Creative Common

● Template de OpenOffice.org por: Raphaël Hertzoghttp://raphaelhertzog.com/go/ooo-templateLicencia: GPL-2+

● Imagen de Fondo por: Alexis Younes “ayo”http://www.73lab.comLicencia: GPL-2+