Date post: | 05-Dec-2014 |
Category: |
Technology |
Upload: | ernesto-crespo |
View: | 894 times |
Download: | 0 times |
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+