gestión de configuración distribuída para la plataforma de canaima
DESCRIPTION
Propuesta para la gestión de configuración distribuída para la plataforma de CanaimaTRANSCRIPT
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 [email protected]"● Configurar Mercurial: Editar /etc/mercurial/hgrc
– Agregar: [ui]
username = [email protected]
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: [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
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
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: [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
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 “[email protected]” -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: [email protected]
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+