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 tux@127.0.0.1
Una vez dentro, puedes loguearte como root
de la siguiente manera:
tux@migasfree:~$ su
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.
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.
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:
root@migasfree:/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
:
- Echa un vistazo rápido al ordenador pulsando en la
lupa
y luego enordenador
(figura 5.4)
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 vimproyecto
: (el que corresponda)paquetes a instalar
: vimpaquetes a desinstalar
: nanoatributos 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 ***************************** CorrectoNota
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 desinstalanano
si es necesario.Nota
Si ahora queremos instalar
vim
yemacs
en todos los ordenadores, pon sus nombres enpaquetes a instalar
y deja en blancopaquetes a desinstalar
:
paquetes a instalar
: vim emacspaquetes 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).
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 <alberto@migasfree.org> 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: lewing@isc.tamu.edu 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
:
# root@debian8:~# 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 <alberto@migasfree.org> Fri, 3 Feb 2018 18:25:00 +0100 acme-test-files (1.0-1) unstable; urgency=low * Ficheros de ejemplos -- Alberto Gacías <alberto@migasfree.org> 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.
- Inventario de Ordenadores.
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 dedatos 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 desudoers
ejecutandoman 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 llamadoSPEC
. 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
ymigasfree-play
. Como paquetes a instalar puedes poner:tuempresa-migasfree-client
ytuempresa-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.