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

Post on 05-Dec-2014

894 views 0 download

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

VI Cayapa Canaima Barinas 2012

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

Ernesto Crespo@_seraph1

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

Control de versiones centralizado vs distribuido

Sistemas de control de versiones

● Centralizado● CVS● Subversion

● Distribuido● Mercurial● Git● Bazaar● Darcs

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.

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.

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

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.

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/

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

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

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

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

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

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

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

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

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

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.

Commits en Bitbucket

Archivos en bitbucket

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

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

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

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.

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

Contacto

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

● Twitter: @_seraph1

● Correo: ecrespo@gmail.com

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+