Primeros pasos

La indeterminación de la chuleta de cerdo.

Probando migasfree

La unidad es la variedad, y la variedad en la unidad es la ley suprema del universo.

—Isaac Newton.

El objetivo de este capítulo es que dispongas rápidamente de un servidor y un cliente migasfree totalmente funcional, por eso no me voy a extender en explicaciones.

Nota

Usa una máquina virtual de virtualbox realizando la instalación mínima por red de Debian 64 bits para ver el funcionamiento de migasfree y familiarizarte con él antes de poner a Migasfree en producción

Instalando el servidor

Si ahora no quieres preocuparte de cómo se realiza esta instalación, nunca has usado docker o, simplemente, quieres avanzar más rápido, te proporcionamos este Open Virtual Appliance (OVA) para que lo ejecutes con virtualbox. Contiene un servidor migasfree ya instalado.

Con virtualbox instalado, y una vez descargado el fichero OVA, haz doble click en él y, a continuación, observa las siguientes reglas de reenvío de puertos accediendo al menú de virtualbox: configuración-red-avanzadas-reenvío de puertos:

Nombre   Protocolo    IP anfitrión  Puerto  IP invitado  Puerto invitado
=======  =========    ============  ======  == ========  ===============
Rule 1   TCP          127.0.0.1     2222    10.0.2.15    22
Rule 2   TCP          127.0.0.1     8080    10.0.2.15    80

Ya puedes arrancar la máquina virtual.

Los usuarios y contraseñas de esta máquina virtual son: tux:tux y root:root.

Para acceder por SSH a esta máquina virtual usa:

ssh -p 2222 [email protected]

Una vez dentro, puedes loguearte como root de la siguiente manera:

Para acceder al servidor web instalado en esta máquina virtual, usa la URL http://127.0.0.1:8080 desde el equipo anfitrión.

Ahora bien, si quieres hacer la instalación tú mismo, accede a la máquina debian 64 bits sobre la que vas a instalar el servidor y sigue los pasos indicados en migasfree-docker.

Comprobando el servidor

En un navegador web accede a la URL del servidor. Si todo ha ido bien, verás la figura 5.1.

Acceso al servidor migasfree.

figura 5.1. Acceso al servidor migasfree.

Pulsa en iniciar sesión y haz login con el nombre de usuario «admin» y contraseña «admin». Verás algo parecido a la figura 5.2. Observa como arriba a la derecha pone alertas 0. Esto nos indica que todo está controlado.

Estado del servidor con 0 alertas.

figura 5.2. Estado del servidor con 0 alertas.

Instalando el cliente

Instalando el paquete migasfree-client

Ahora instala el cliente migasfree sobre la misma máquina donde has instalado el servidor. Para ello, actualiza la lista de paquetes e instala el paquete migasfree-client:

# wget -O - http://migasfree.org/pub/install-client | bash

También puedes instalar el cliente en cualquier otra máquina y editar el fichero /etc/migasfree.conf manualmente para configurarlo. Descomenta la línea # Server = localhost y asígnale la dirección del servidor web. Te hago notar que esta no es la manera en que debemos hacerlo, pero por ahora puede servirnos. La manera correcta sería empaquetar dicha modificación, cosa que veremos más adelante en Configurando migasfree-client

Nota

Cualquier cambio en la configuración de las aplicaciones o del S.O se podrán realizar de manera centralizada con suma facilidad, manteniendo además la integridad, sólo si dicha configuración ha sido empaquetada.

Registrando el cliente

Ejecuta el comando:

# migasfree -u

te devolverá una salida parecida a esta:

[email protected]:/home/tux# migasfree -u
Sesión gráfica no detectada
Versión de migasfree client: 4.15

Opciones de ejecución: /etc/migasfree.conf
    Proyecto: debian-9.3
    Servidor: localhost
    Actualizar paquetes automáticamente: True
    Proxy: None
    Certificado SSL: None
    Proxy caché de paquetes: None
    Depuración: False
    Nombre del ordenador: migasfree
    GUI detallado: True
    PMS: apt-get

    Usuario gráfico: root

Autoregistrando ordenador...
¡Clave /var/migasfree-client/keys/localhost/debian-9.3.pri creada!
¡Clave /var/migasfree-client/keys/localhost/server.pub creada!
Warning: apt-key output should not be parsed (stdout is not a terminal)
¡Clave /var/migasfree-client/keys/localhost/repositories.pub creada!

******************* Conectando al servidor migasfree... ********************
***************************** Correcto

************************ Obteniendo propiedades... *************************
***************************** Correcto

************************** Evaluando atributos... **************************
PCI: 8086:1237~Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) ,8086:7000~ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] ,8086:7111~IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) ,80ee:beef~VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter ,8086:100e~Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) ,80ee:cafe~System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service ,106b:003f~USB controller: Apple Inc. KeyLargo/Intrepid USB ,8086:7113~Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08) ,8086:2829~SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02) ,

HST: migasfree

NET: 10.0.2.0/24


************************** Subiendo atributos... ***************************
***************************** Correcto

*************************** Ejecutando fallas... ***************************
LOW_HOME_PARTITION_SPACE:
LOW_SYSTEM_PARTITION_SPACE:

**************************** Subiendo fallas... ****************************
***************************** Correcto

************************* Creando repositorios... **************************
***************************** Correcto

************* Obteniendo los metadatos de los repositorios... **************
Ign:1 http://ftp.es.debian.org/debian stretch InRelease
Obj:2 http://security.debian.org/debian-security stretch/updates InRelease
Obj:3 http://ftp.es.debian.org/debian stretch-updates InRelease
Obj:4 http://ftp.es.debian.org/debian stretch Release
Obj:5 https://download.docker.com/linux/debian stretch InRelease
Leyendo lista de paquetes... Hecho
***************************** Correcto

************************ Desinstalando paquetes... *************************
***************************** Correcto

******************* Instalando paquetes obligatorios... ********************
***************************** Correcto

************************* Actualizando paquetes... *************************
DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get -o APT::Get::Purge=true -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold -o Debug::pkgProblemResolver=1 --assume-yes --force-yes --allow-unauthenticated --auto-remove dist-upgrade
Leyendo lista de paquetes...
Creando árbol de dependencias...
Leyendo la información de estado...
Calculando la actualización...
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 0 no actualizados.

***************************** Correcto

****************** Subiendo el inventario del software... ******************
***************************** Correcto

*************** Capturando información sobre el hardware... ***************
***************************** Correcto

**************** Enviando información sobre el hardware... ****************
***************************** Correcto

************************* Operaciones completadas **************************

Comprobando el estado del servidor

Comprueba los datos que se han recogido accediendo al servidor con tu navegador web.

  • Fíjate ahora que tienes 2 Alertas (figura 5.3). Pulsa sobre ellas y luego

sobre 2 alertas por comprobar:

  • La primera te notifica que el ordenador CID-1 ha dado de alta la plataforma Linux.
  • La segunda notificación te dice que el ordenador CID-1 ha añadido el proyecto debian-x.x.
Notificaciones.

figura 5.3. Notificaciones.

  • Echa un vistazo rápido al ordenador pulsando en la lupa y luego en ordenador

(figura 5.4)

  • Observa los datos del ordenador pulsando sobre CID-1.
  • Fíjate en la fecha de la sicronización.
  • Consulta el hardware pulsando sobre el campo producto.
Ordenadores

figura 5.4. Ordenadores.

Nota

CID es un acrónimo de Computer IDentificator. Es un número que el servidor asigna a cada ordenador para identificarlo. Es imposible tener dos ordenadores con el mismo CID.

Nota

El símbolo que aparece a la izquierda del CID (el corazón) indica el estado en el que encuentra el ordenador.

¡Enhorabuena! Has instalado un servidor migasfree y has registrado en él tu primer ordenador.

Desplegando software

Y ahora, para ir abriendo boca, vamos a instalar y eliminar aplicaciones de manera centralizada usando el servidor migasfree.

Supón que quieres sustituir nano por vim en todos los equipos de tu organización.

Accede a Liberación - Despliegues y pulsa en en símbolo + para añadir un despliegue.

Nota

Sitúa el cursor sobre los iconos del formulario de despliegue para identificar cada campo.

Introduce los siguientes datos:

  • Nombre: sustituir nano por vim
  • proyecto: (el que corresponda)
  • paquetes a instalar: vim
  • paquetes a desinstalar: nano
  • atributos incluidos: ALL SYSTEMS

Graba el despliegue.

Ahora sincroniza el equipo cliente con el servidor migasfree:

# migasfree -u

Puedes comprobar en la salida estándar del cliente migasfree que se ha configurado el repositorio sustituir-nano-por-vim y que se ha instalado el paquete vim y desinstalado nano.

************* Obteniendo los metadatos de los repositorios... **************
Obj http://localhost sustituir-nano-por-vim InRelease
Des:1 http://localhost sustituir-nano-por-vim/PKGS amd64 Packages [29 B]

...
************************ Desinstalando paquetes... *************************
Los siguientes paquetes se ELIMINARÁN:
  nano*
***************************** Correcto

******************* Instalando paquetes obligatorios... ********************
Se instalarán los siguientes paquetes NUEVOS:
  vim
***************************** Correcto

Nota

En el despliegue que acabamos de hacer sólo hemos dado la orden de instalar y desinstalar paquetes, pero además se ha creado un repositorio de paquetes vacío. En los siguientes capítulos aprenderás a subir tus propios paquetes al servidor e introducirlos en los despliegues, pero vayamos despacito, suave, suavecito.

Al poner el atributo SET-ALL SYSTEMS estamos indicando que se aplique este despliegue a todos los ordenadores. Podríamos haber incluido otros atributos como CID-1, NET-10.0.2.0/24, o una lista de ellos. Sólo se aplicará este despliegue a los ordenadores que tengan algún atributo coincidente con los atributos incluidos en el despliegue.

Observa que también puedes excluir ordenadores. El servidor sigue la siguiente lógica: primero comprueba los ordenadores incluidos y después excluye los ordenadores que tenga algún atributo que coincida con los atributos excluidos del despliegue.

Nota

Ahora cada vez que un ordenador se sincroniza con el servidor (y se le aplica este despliegue), se instala vim y desinstala nano si es necesario.

Nota

Si ahora queremos instalar vim y emacs en todos los ordenadores, pon sus nombres en paquetes a instalar y deja en blanco paquetes a desinstalar:

  • paquetes a instalar: vim emacs
  • paquetes a desinstalar:

Conforme los equipos se vayan sincronizando, se producirán los cambios.

Aprenderás más sobre los despliegues en el capítulo dedicado a La Liberación.

¡Enhorabuena de nuevo! Ya sabes como instalar/desinstalar software de manera centralizada a un conjunto de ordenadores. No está nada mal para empezar, ¿no crees?

En el siguiente capítulo vas a aprender a hacer el cambio de configuración software al estilo migasfree.

Configurando software al estilo migasfree

No esperes hasta que las condiciones sean perfectas para comenzar, el empezar hace las condiciones perfectas.

—Alan Cohen.

El objetivo de este capítulo es que veas todo el proceso de la Gestión de la Configuración Software en conjunto. Lo vamos a hacer desplegando un paquete que, simplemente, instalará unos ficheros de ejemplo (png, gif, mp4, etc.) que pueden servir al personal del Centro de Asistencia Usuarios (CAU) para comprobar las asociaciones de archivos y aplicaciones.

Al estilo tradicional

Imagina que te llega una petición de cambio para añadir en todos los ordenadores de escritorio de tu organización unos determinados ficheros de test para facilitar el trabajo de los compañeros del CAU.

Como aún no has pensado cómo desplegar software en los escritorios GNU/Linux, decides acceder uno a uno a los equipos por SSH y copiarlos manualmente. Tardas unos días pero al final realizas el trabajo justo antes de cogerte las vacaciones de verano, a excepción de algunos equipos que estaban apagados y que no has podido acceder remotamente.

Ahora bien, mientras estás de vaciones, ¿podría responder fácilmente a las cuestiones siguientes tu compañero de trabajo?

  • ¿Qué cambios se han realizado en un determinado equipo desde el 1 de Marzo?
  • ¿Quién realizó el cambio?
  • ¿Cúando se desplegaron todos esos cambios en los equipos?
  • ¿Qué equipos tienen un cambio determinado?

Difícilmente tu compañero va a poder reponder estas cuestiones de manera eficaz, aunque hayas registrado muy bien tu trabajo.

Podrías haberte ahorrado mucho trabajo usando herramientas como cengine, puppet, chef, etc., para el despliegue de estos ficheros, pero aún así no podrías contestar fácilmente a dichas preguntas.

La integridad frente al cambio no está garantizada con este método.

A continuación, te propongo otra forma de realizar los cambios de configuración. Se basa en utilizar el empaquetado para trasladar los cambios a los equipos.

Nota

Usa la rueda, no la reinventes. Usando el sistema de paquetería para desplegar el software y su configuración, nos proporciona integridad frente a los cambios. Cualquier distribución GNU/Linux tiene un gestor de paquetes y hace muy bien su trabajo.

Asumo que tienes un gestor de proyectos, como Redmine, donde vas a registrar las peticiones de cambio (o al menos que hagas como que lo tienes) y que has completado con éxito el capítulo anterior. Todos los comandos de este capítulo los vas a ejecutar como root en el equipo que hayas utilizado en el capítulo anterior.

Tu primer cambio de configuración

El primer cambio sobre un Elemento de Configuración Software (ECS) es el que te llevará más trabajo, porque exige la creación de un paquete.

Petición

Imagina que te llega la siguiente la petición de cambio, que registras y aceptas en el gestor de proyectos:

Gestor de proyectos:

Registro: Copiar distintos ficheros de ejemplos: png, gif, jpg, etc., en todos los ordenadores para uso y disfrute de los compañeros del CAU.

Lo primero que haces es identificar al ECS que afecta, es decir, cuál es el paquete que debe ser modificado. Como no existe todavía un paquete sobre el que actuar, asigna la petición de cambio a un desarrollador (¡qué suerte, siempre te toca a ti!) y registra en la petición de cambio:

Gestor de proyectos:

Registro: Crear el paquete acme-test-files

Asignado a: desarrollador.

Cambio

Empaquetado

Como desarrollador, tienes que crear el paquete de configuración acme-test-files. Si nunca has creado un paquete, no te preocupes, para facilitarte las cosas y que puedas avanzar, centrándote en el proceso GCS, descárgate el proyecto fun-with-migasfree-examples donde se incluyen los ejemplos utilizados es este libro.

# apt-get install unzip
$ wget https://github.com/migasfree/fun-with-migasfree-examples/archive/master.zip
$ unzip master.zip
$ cd fun-with-migasfree-examples-master

Observa los ficheros que incluimos en el paquete acme-test-files:

$ ll acme-test-files/usr/share/acme-test-files/

Ya tienes el fuente del paquete. Ahora genera el paquete. Para ello, debes tener instalados algunos paquetes:

# apt-get install devscripts gcc build-essential:native

Y, ahora sí, genera el paquete:

$ cd acme-test-files
$ /usr/bin/debuild --no-tgz-check -us -uc
$ cd ..

¡Felicidades, el cambio está empaquetado en acme-test-files_1.0-1_all.deb!

Subiendo el cambio al servidor

Usa este comando para subir el paquete generado al servidor.

# migasfree-upload -f acme-test-files_1.0-1_all.deb
  • Introduce usuario: admin
  • Contraseña: admin
  • Proyecto: debian-x.x (En mi caso la versión es debian-9.8)
  • Almacén: acme

Finalmente, asigna la petición de cambio a un liberador (sí, otra vez vas a ser tú) y registra en la petición:

Gestor de proyectos

Registro: Creado paquete acme-test-files_1.0-1_all.deb

Asignado a: liberador

¡Felicidades! Has realizado un cambio de configuración y lo has almacenado en el servidor migasfree.

Liberación

Ahora vas a ver el punto de vista del encargado de liberar los cambios:

Accede mediante un navegador web a tu servidor. Observa que en Alertas tienes 1 paquete huérfano (Figura 6.2).

Paquetes huérfanos.

figura 6.2. Paquetes huérfanos.

Liberando el cambio de configuración

Ahora, vas a liberar el cambio creando un nuevo despliegue.

Para ello, ve a Liberación (pulsando sobre el icono del camión) y accede a Despliegues. Pulsa en el botón + para añadir un nuevo despliegue de origen interno e introduce estos datos:

Nota

Coloca el cursor sobre los iconos para familializarte con el nombre de los campos del formulario.

  • Nombre = ficheros de ejemplo #24543 (Una buena idea es hacer aquí una referencia al nº de petición del Gestor de proyectos)

  • Proyecto = debian-x.x

  • Paquetes disponibles = acme-test-files_1.0-1_all.deb

    En este campo se asignan los paquetes que contendrá el repositorio físico asociado al despliegue.

  • Paquetes a instalar = acme-test-files

    En este campo se escriben los nombres de los paquetes que se instalarán obligatoriamente en los clientes.

  • Atributos incluidos = SET-ALL SYSTEMS

    De esta manera indicamos que todos los clientes tendrán acceso a este despliegue.

Guarda el despliegue.

Observa que, en Alertas, ya no tienes ningún paquete huérfano.

Registra y cierra la petición de cambio:

Gestor de proyectos

Registro: Liberado en Despliegue ficheros de ejemplo #24543.

Petición: cerrada.

Aplicando el cambio

Para aplicar el cambio a un equipo, ejecuta el siguiente comando:

# migasfree -u

Observa en la salida del comando:

****************** Subiendo el historial del software... *******************
Diferencia en el software: # 2017-02-03 18:21:17
+acme-test-files-1.0-1
***************************** Correcto

Puedes comprobar que en /usr/share/acme-test-files tienes los ficheros de ejemplos incluidos en el paquete.

$ ls -la /usr/share/acme-test-files

Tu segundo cambio de configuración

Petición

Te llega una segunda petición de cambio, ya que a tus compañeros del CAU les ha venido bien estos ficheros de ejemplos pero echan de menos un SVG:

Gestor de proyectos

Registro: Añadir un fichero SVG de prueba para el CAU.

Como siempre, identificas primero el ECS al que afecta el cambio: En este caso es a acme-test-files. En la petición de cambio, asignas al desarrollador y registras:

Gestor de proyectos

Registro: Modificar el paquete acme-test-file añadiendo el SVG de ejemplo: https://commons.wikimedia.org/wiki/File:Tux.svg

Asignado a : desarrollador.

Cambio

Los cambios que se realizan sobre un paquete ya creado suelen ser más sencillos de realizar porque, simplemente, se modifica el paquete.

Empaquetado

Descarga el fichero SVG de https://commons.wikimedia.org/wiki/File:Tux.svg y cópialo en acme-test-files/usr/share/acme-test-files.

Edita el fichero del paquete``acme-test-files/debian/changelog`` para registrar el cambio realizado. Tendrás que añadir estas líneas al principio del fichero:

acme-test-files (1.0-2) unstable; urgency=low

  * Added file tux.svg

 -- Alberto Gacías <[email protected]>  Fri, 3 Feb 2018 18:25:00 +0100

Presta atención a:

  • La versión del paquete (1.0-2).

  • Sustituir tu nombre y dirección de correo.

  • Modificar la fecha y hora.

    Nota

    El formato que se utiliza en el changelog en paquetes debian es muy estricto. Ten cuidado con los espacios, retornos de carro y fechas.

Un aspecto que no hay que descuidar es el tema del copyright y licencia. Edita el fichero acme-test-files/debian/copyright y añade el copyright y licencia del fichero tux.svg

Files: tux.svg
Copyright: [email protected] Larry Ewing and The GIMP
License: https://creativecommons.org/publicdomain/zero/1.0/legalcode

Ahora, generamos el paquete:

$ cd acme-test-files
$ /usr/bin/debuild --no-tgz-check -us -uc
$ cd ..

Observa que se ha generado el mismo paquete, pero con la versión 1.0-2:

# [email protected]:~# ls -la *.deb
-rw-r--r-- 1 root root 2338 feb  3 17:49 acme-test-files_1.0-1_all.deb
-rw-r--r-- 1 root root 2398 feb  3 18:27 acme-test-files_1.0-2_all.deb
Subiendo al servidor el cambio
# migasfree-upload -f acme-test-files_1.0-2_all.deb
  • Introduce usuario: admin

  • Contraseña: admin

  • Proyecto: debian-x.x

  • Almacén: acme

    Gestor de proyectos

    Registro: Creado paquete acme-test-files_1.0-2_all.deb

    Asignado a: liberador

Liberación

Liberando el cambio de configuración

Observa como aparece de nuevo un paquete huérfano en alertas y que corresponde a acme-test-files_1.0-2_all.deb.

Accede a Liberación - Despliegues y edita el despliegue ficheros de ejemplo #24543.

Añade a Paquetes disponibles el paquete acme-test-files_1.0-2_all.deb.

Guarda el despliegue.

Registra y cierra la petición de cambio:

Gestor de proyectos

Registro: Liberado acme-test-files_1.0-2_all.deb en Despliegue ficheros de ejemplo #24543.

Petición: cerrada.

Aplicando el cambio

Ejecuta de nuevo:

# migasfree -u

Observa en la salida de este comando el cambio de software:

****************** Subiendo el historial del software... *******************
Diferencia en el software: # 2017-02-03 18:30:21
+acme-test-files-1.0-2
-acme-test-files-1.0-1
***************************** Correcto

Comprueba si el cambio se ha aplicado.

$ ls -la /usr/share/acme-test-files

Auditoría

Ahora tu compañero sí que podría responder las siguientes cuestiones de manera centralizada desde el servidor migasfree aunque todos los equipos estén apagados y tú de vacaciones:

¿Qué cambios se han producido en el ordenador 1 y cuándo?

Accede a Datos - Ordenadores, accede al equipo CID-1 (CID=Computer ID) y mira el final del campo historial de software de la sección Software:

# 2017-02-03 18:21:17
+acme-test-files-1.0-1

# 2017-02-03 18:30:21
+acme-test-files-1.0-2
-acme-test-files-1.0-1

El signo (-) indica paquete desinstalado y el signo (+) paquete instalado.

¿Qué se cambió, quién y cuándo hizo el cambio?

Esta información está en el paquete como metainformación. Para acceder a ella, accede a Liberación - Paquetes. Despliega el menú de la derecha del paquete acme-test-files_1.0-2_all.deb y pulsa en Información del paquete.

Aquí podrás ver el registro de los cambios (entre otra información):

acme-test-files (1.0-2) unstable; urgency=low

  * Added file svg

 -- Alberto Gacías <[email protected]>  Fri, 3 Feb 2018 18:25:00 +0100

acme-test-files (1.0-1) unstable; urgency=low

  * Ficheros de ejemplos

 -- Alberto Gacías <[email protected]>  Sat, 18 May 2013 08:32:00 +0200

¿Qué equipos tienen el cambio acme-test-files-1.0-2?

Ve a Consultas - Ordenadores en producción con el paquete.... Escribe en el campo Paquete acme-test-files-1.0-2 y obtendrás el resultado.

Conclusión

Aunque el empaquetado de los ECS requiera un esfuerzo inicial, los beneficios que obtendrás justifican sobradamente el uso de este método:

  • Dispondrás de sistemas más estables.
  • Te permitirá hacer el seguimento y control de los cambios.
  • Y mejorarás la resolución de incidencias.

Beneficios de crear paquetes de configuración

  • La configuración permacece encapsulada.
  • Las configuraciones puede revertirse fácilmente.
  • Facilita las pruebas antes del despliegue.
  • Facilita la distribución de las configuraciones de forma segura.
  • Proporciona integridad frente a los cambios de la configuración.

Desventajas del empaqueteado de la configuración

  • Cuesta más tiempo que otras alternativas ya que hay que crear los paquetes.

Beneficios de usar migasfree

Utilizar migasfree para la realizar la Liberación te permitirá:

  • Controlar a quién y a partir de qué momento se deben aplicar los cambios.
  • Tener una auditoría centralizada:
    • Inventario de Ordenadores.
      • Hardware.
      • Software (actual e histórico).
    • Inventario de los cambios.
    • y algunas cosas más, que te serán desveladas en los siguientes capítulos.

Configurando migasfree-client

La libertad no es poder elegir entre unas pocas opciones impuestas, sino tener el control de tu propia vida. La libertad no es elegir quien será tu amo, es no tener amo.

—Richard Stallman.

En el capítulo anterior nos hemos centrado en cómo se realiza el proceso de la GCS.

En este capítulo, vas a configurar el cliente de migasfree (mediante empaquetado) para que se conecte al servidor migasfree que ya debes tener funcionando.

Todos los comandos de este capítulo los vas a ejecutar en otra máquina virtual, con Ubuntu instalado, y que debes tener en la misma red en la que esté la máquina virtual del servidor.

El objetivo de este capítulo es que conozcas un poco más el empaquetado.

Instalando migasfree-client en Ubuntu

Instala el cliente migasfree:

# wget -O - http://migasfree.org/pub/install-client | bash

Observa como en el fichero /etc/migasfree.conf que ha instalado el paquete migasfree-client no hay, lógicamente, ningún ajuste configurado.

less /etc/migasfree.conf

A continuación, vamos a configurar este fichero haciendo uso del empaquetado, así que no lo hagas manualmente.

Obteniendo acme-migasfree-client

Al igual que hiciste con acme-test-files, puedes bajarte el fuente del paquete que vamos a utilizar de plantilla para configurar el cliente de migasfree.

En la nueva máquina virtual con Ubuntu, ejecuta el siguiente código si aún no te has descargado fun-with-migasfree-examples:

$ wget https://github.com/migasfree/fun-with-migasfree-examples/archive/master.zip
$ unzip master.zip
$ cd fun-with-migasfree-examples-master

Adaptando acme-migasfree-client

Accede al directorio acme-migasfree-client y observa su contenido:

$ cd  acme-migasfree-client
$ ls -la
total 20
drwxrwxr-x 5 alberto alberto 4096 jun 18 20:54 .
drwxrwxr-x 4 alberto alberto 4096 jun 18 21:04 ..
drwxrwxr-x 3 alberto alberto 4096 jun 18 20:54 debian
drwxrwxr-x 3 alberto alberto 4096 jun 18 20:54 usr

Metadatos

Observa el directorio debian. Este directorio es el que contiene los metadatos del paquete. Los ficheros más importantes en este directorio son:

  • El fichero control consiste en un conjunto de campos, representados en un formato común, que permiten al sistema de gestión de paquetes conocer los metadatos del paquete y así poder gestionarlo adecuadamente. Puedes consultar la debian-policy para explorar el conjunto de datos de control
  • El fichero changelog contiene información, en un formato especial, con las modificaciones que se han realizado en cada versión del paquete. Cada vez que se modifica el paquete, hay que añadir una entrada en este fichero, incrementando la versión y registrando lo que se ha modificado.
  • El fichero copyright contiene la información sobre los recursos, licencia y derechos de autoría de las fuentes originales del paquete.
  • El fichero rules contiene las reglas que se utilizan para generar los paquetes a partir de sus fuentes.
  • El fichero install contiene una lista de ficheros que serán instalados con el paquete.

Ahora que conoces el significado de estos ficheros, modifícalos cambiando el nombre del paquete acme-migasfree-client por tuempresa-migasfree-client y pon tu nombre y la fecha actual allí donde se requiera.

Modifica también el nombre del directorio raíz acme-migasfree-client por tuempresa-migasfree-client.

Scripts

Observa ahora los scripts postinst y prerm. Sus nombres nos indican cuando serán ejecutados por el sistema de gestión de paquetes.

  • postinst inmediatamente después de que se produzca la instalación del paquete.
  • prerm justo antes de que se produzca la eliminación del paquete.

Observa ahora el contenido de postinst y verás que aquí se hace una llamada al comando dpkg-divert. Mediante este comando hacemos lo que se conoce como una desviación de fichero (divert). Mediante la desviación, indicamos al sistema de gestión de paquetes que un fichero ya no pertenece a un determinado paquete sino al que nosotros establezcamos.

Así, el fichero de configuración /etc/migasfree.conf, que pertenece en principio al paquete migasfree-client, hacemos que pertenezca al paquete tuempresa-migasfree-client de tal manera que, una posible actualización de migasfree-client ya no nos afectará. Cada vez que queramos modificar un ajuste del cliente migasfree en /etc/migasfree.conf, lo haremos a través del fichero usr/share/divert/etc/migasfree.conf del paquete tuempresa-migasfree-client.

Fíjate también que en prerm deshacemos esta desviación, para que si desinstalamos el paquete, quede todo como estaba.

Modifica ahora el fichero usr/share/divert/etc/migasfree.conf. Tendrás que poner el ajuste Server con el nombre, o la IP, del servidor migasfree que hemos utilizado anteriormente, y el ajuste Project con el nombre de tu distribución, por ejemplo ACME-1. El resto de ajustes, modifícalos según tus intereses. Una vez hecho esto, y situado en el directorio tuempresa-migasfree-client, genera el paquete (debes tener el paquete devscripts y debhelper previamente instalados).

$ /usr/bin/debuild --no-tgz-check -us -uc

Con esto tendrás un paquete que configura el cliente migasfree para tu organización. Ahora, es momento de instalarlo:

# dpkg -i tuempresa-migasfree-client_1.0-1_all.deb

Observa que al instalar el paquete, dpkg te informa que se añade la desviación de /etc/migasfree.conf. Comprueba ahora que el ajuste Server y Project son los correctos.

# less /etc/migasfree.conf

Ahora ya estás preparado para registrar este ordenador en el servidor migasfree.

# migasfree -u

Comprueba que en el servidor se ha creado la version ACME-1 y que existe un nuevo ordenador accediendo a la página web del servidor.

Finalmente, subimos el paquete a nuestro servidor migasfree con el fin de tenerlo disponible para su liberación a otros escritorios ACME-1.

# migasfree-upload -f tuempresa-migasfree-client_1.0-1_all.deb
  • Introduce usuario: admin
  • Contraseña: admin
  • Proyecto: ACME-1
  • Almacén: acme

Ejecución del cliente migasfree

Hasta ahora, siempre hemos ejecutado el cliente migasfree desde consola mediante el comando migasfree -u como root. Ahora vamos a hacer que se ejecute automáticamente cada vez que el usuario abra una sesión gráfica. Para este propósito, existe Migasfree Play.

Nota

Hasta la versión 4.15 del servidor migasfree se venía utilizando migasfree-launcher, pero éste ha sido reemplazado por Migasfree Play que tiene más funcionalidades.

A continuación vamos a descargar el paquete y construirlo.

$ wget https://github.com/migasfree/migasfree-play/archive/latest.zip
$ unzip latest.zip
$ rm latest.zip
$ cd migasfree-play-latest
$ cat README.md

Instalamos los requerimientos para la construcción del paquete.

# apt-get install devscripts debhelper npm

Y ahora sí, construye finalmente el paquete.

$ /usr/bin/debuild --no-tgz-check -us -uc

Sube el fichero migasfree-play al servidor:

# migasfree-upload -f migasfree-play_*.deb

Ahora, observa los ficheros que contiene este paquete:

  • etc/sudoers.d/migasfree-play establece los comandos que no requieren password de root para que pueden ser ejecutados desde un usuario cualquiera. Puedes obtener más información sobre la configuración de sudoers ejecutando man sudoers en un terminal.

  • etc/xdg/autostart/migasfree-play-sync.desktop ejecutará el comando /usr/bin/migasfree-play cuando el usuario inicia sesión gráfica.

    Puedes aprender más sobre la especificación de los ficheros .desktop en freedesktop.org.

Ahora que ya tienes los paquetes tuempesa-migasfree-client y migasfree-play en el servidor migasfree, crea un despliegue en el servidor y pon estos paquetes en paquetes a instalar y asígnale el atributo SET-ALL SYSTEMS.

Nota

Para aprender más sobre el empaquetado, consulta la Guía del nuevo desarrollador de Debian

Nota

Para paquetería rpm, los metadatos del paquete se especifican en un único fichero llamado SPEC. Para aprender más sobre la creación de paquetes rpm, puedes consultar rpm.org y la wiki del proyecto fedora.

Nota

Otra manera de instalar migasfree-play es ejecutando: wget -O - http://migasfree.org/pub/install-play | bash

Configurando migasfree-play

Partiendo del paquete acme-migasfree-play vamos a crear ahora el paquete tuempresa-migasfree-play el cual configurará migasfree-play.

En el proyecto fun-with-migasfree-examples (que anteriormente ya te has bajado) tienes un ejemplo de configuración de migasfree-play.

Adapta acme-migasfree-play tal y como hiciste con acme-migasfree-client. Es decir, modifica los ficheros, cambiando donde se requiera, el nombre del paquete acme-migasfree-play por tuempresa-migasfree-play y pon tu nombre y la fecha actual.

Una vez adaptado accede al nuevo directorio tuempresa-migasfree-play y observa el contenido, en concreto:

En usr/share/divert/usr/share/migasfree-play/package.json está el fichero de configuración de NW.js con el que hemos desarrollado migasfree-play.

En usr/share/divert/usr/share/migasfree-play/settings.json puedes cambiar el idioma, y deshabilitar puntos de menús.

En usr/share/migasfree-play/token deberás poner el token del usuario migasfree-play. Para ello entra en el interfaz de administración del servidor - Configuración - Administración del sitio - Tokens. Una vez allí añade un token al usuario migasfree-play. El token que se haya generado tendrás que ponerlo dentro del fichero usr/share/migasfree-play/token.

Ahora, construye el paquete tuempresa-migasfree-play:

$ cd tuempresa-migasfree-play
$ /usr/bin/debuild --no-tgz-check -us -uc

y súbelo al servidor:

# cd ..
# migasfree-upload -f tuempresa-migasfree-play_*.deb

Despliegue

A partir de este momento, vas a poder administrar fácilmente los escritorios Ubuntu de tu organización, de forma generalizada, instalando estos paquetes.

Hay varias formas de realizar esta instalación:

  • Bajando los paquetes a cada uno de los escritorios e instalándolos mediante el comando dpkg -i

  • Creando un fichero /etc/apt/sources.list.d/migasfree.list con el siguiente contenido:

    deb http://<myserver>/public/<project>/REPOSITORIES <deployment> PKGS
    

    donde sustituirás:

    • <myserver> por tu servidor.
    • <project> por el proyecto que pusiste en /etc/migasfree.conf
    • y <deployment> por el nombre de un despliegue que tenga como paquetes disponibles: tuempresa-migasfree-client, migasfree-client, tuempresa-migasfree-play y migasfree-play. Como paquetes a instalar puedes poner: tuempresa-migasfree-client y tuempresa-migasfree-play

    Una vez creado este fichero, ejecuta:

    # apt-get update
    # apt-get install tuempresa-migasfree-client tuempresa-migasfree-play
    # migasfree -u
    

    y tendrás instalados los 4 paquetes.

  • Puedes hacer un clon de un equipo donde ya estén instalados estos paquetes, utilizando un sistema de clonado como clonezilla. Este es el método que usamos en AZLinux, y nos resulta muy cómodo y rápido ya que en una memoria USB llevamos un clonezilla, junto con la imagen clonada de nuestro escritorio, consiguiendo instalar un AZLinux en menos de 10 minutos.

  • Puedes crear un DVD de tu escritorio tal y como se realiza en el proyecto vitalinux. En concreto, tendrías que adaptar el paquete vx-create-iso a tus necesidades. En este método son los usuarios quienes se bajan la ISO del DVD y se instalan ellos mismos el sistema.