Fun with migasfree deber de un ciudadano no es creer en ninguna profecía del futuro, sino actuar...

160
Fun with migasfree Alberto Gacías 10 de December de 2014

Transcript of Fun with migasfree deber de un ciudadano no es creer en ninguna profecía del futuro, sino actuar...

  • Fun with migasfree

    Alberto Gacas

    10 de December de 2014

  • ndice general

    I Introduccin 3

    1. Acerca de este libro 51.1. Licencia y Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2. Presentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.4. A quin va dirigido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5. Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.6. Acerca de m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.7. Nota del autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.8. Enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2. Gestin de la Configuracin Software 112.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2. El proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3. Elemento de Configuracion Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    3. Administrando escritorios 153.1. La personalizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2. La liberacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3. Repositorio Migasfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.4. La GCS en tu organizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    4. Caractersticas de migasfree 234.1. El nacimiento de migasfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2. Versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.3. Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.4. Principales componentes empleados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    II Primeros pasos 27

    5. Probando migasfree 295.1. Instalando el servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.2. Comprobando el servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.3. Instalando el cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.4. Comprobando el estado del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    6. Configurando software al estilo migasfree 356.1. Al estilo tradicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    I

  • 6.2. Tu primer cambio de configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.3. Tu segundo cambio de configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.4. Auditora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.5. Conclusin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    7. Configurando migasfree-client 457.1. Instalando migasfree-client en Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457.2. Obteniendo acme-migasfree-client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457.3. Adaptando acme-migasfree-client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467.4. Ejecucin del cliente migasfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477.5. Despliegue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    III Gua de uso 51

    8. La configuracin del sistema migasfree 538.1. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538.2. Tipos de Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558.3. Versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578.4. Plataformas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588.5. Usuarios Migasfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588.6. Comprobaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608.7. Fallas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618.8. Consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628.9. Errores autocomprobables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    9. La Liberacin 659.1. Subiendo Paquetes al servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659.2. Almacenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659.3. Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669.4. Informacin de los paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669.5. Repositorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679.6. Calendarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689.7. Repositorios internos vs externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699.8. El proceso de la liberacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    10. La Actualizacin de los sistemas 7310.1. El proceso de actualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7310.2. El comando migasfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7410.3. El comando migasfree-tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7510.4. El comando migasfree-label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    11. La Auditora 7711.1. Alertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7711.2. Ordenadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7711.3. Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7811.4. Logins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7811.5. Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7811.6. Fallas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7911.7. Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7911.8. Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8011.9. Migraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8011.10.Notificaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8011.11.Consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8011.12.Estadsticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    II

  • 11.13.El proceso de las comprobaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    IV Puesta en produccin 83

    12. Migasfree en produccin 8512.1. Obtencin de los paquetes de migasfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8512.2. Configuracin del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8512.3. Servicio de cach de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8612.4. Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8712.5. Etiquetando los clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    13. Creando tu propia Distro 8913.1. El mtodo de andar por casa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9013.2. Generando un Live/CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9013.3. Clonacin de imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    14. FAQ 9114.1. Cuando accedo al servidor web me aparece: Server error (500) . . . . . . . . . . . . . . . . 9114.2. Cmo hago una propiedad para obtener el contexto LDAP de un usuario? . . . . . . . . . . . . . . 9114.3. Cmo hago una propiedad para obtener los grupos LDAP de un usuario? . . . . . . . . . . . . . . . 9214.4. El cliente migasfree devuelve el mensaje: firma no vlida . . . . . . . . . . . . . . . . . . . . . . 9414.5. Imposible obtener /PKGS/binary-amd64/Packages 404 Not Found . . . . . . . . . . . . . . . . . . . 94

    15. Resolucin de problemas 95

    V Ajustes 97

    16. Ajustes del servidor migasfree 9916.1. Ajustes propios de migasfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9916.2. Ajustes de Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    17. Ajustes del cliente migasfree 10517.1. Seccin [client] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10517.2. Seccin [packager] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10717.3. Variables de entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

    VI Empaquetado 111

    18. Empaquetando migasfree 11318.1. Creacin del paquete migasfree-server (.deb) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11318.2. Creacin del paquete migasfree-client (.deb) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11418.3. Otras Distribuciones a las implementadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

    19. Empaquetando proyectos python 11719.1. Creacin del paquete django en distros basadas en paquetera apt . . . . . . . . . . . . . . . . . 11719.2. Creacin del paquete django en distros basadas en paquetera rpm . . . . . . . . . . . . . . . . . 117

    VII Anexos 119

    20. Bibliografa 121

    21. Referencias 123

    III

  • 22. Glosario de trminos 125

    23. API 12723.1. get_versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12823.2. get_computer_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12923.3. computer_label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13023.4. register_computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13123.5. get_key_packager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13223.6. upload_server_package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13323.7. upload_server_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13423.8. create_repositories_of_packageset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13523.9. upload_computer_message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13623.10.get_properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13723.11.upload_computer_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13823.12.upload_computer_faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13923.13.upload_computer_hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14023.14.upload_computer_software_base_diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14123.15.upload_computer_software_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14223.16.upload_computer_software_history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14323.17.get_computer_software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14423.18.upload_computer_errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14523.19.get_computer_tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14623.20.set_computer_tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14723.21.get_device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14823.22.get_assist_devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14823.23. install_device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14823.24.remove_device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

    24. GNU Free Documentation License 149

    IV

  • A Patricia.

    1

  • El deber de un ciudadano no es creer en ninguna profeca del futuro, sino actuar para realizar el mejorfuturo posible.

    Richard Stallman.

    2

  • Parte I

    Introduccin

    3

  • CAPTULO 1

    Acerca de este libro

    1.1 Licencia y Copyright

    Fun with migasfree

    Copyright (C) 2013 Alberto Gacas and contributors. Permission is granted to copy, distribute and/ormodify this document under the terms of the GNU Free Documentation License, Version 1.3 or any laterversion published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, andno Back-Cover Texts. A copy of the license is included in the section entitled GNU Free DocumentationLicense.

    5

  • 1.2 Presentacin

    Hola. Soy Alberto Gacas. Bienvenidos al primer captulo de Alberto Gacas presenta diversin con migasfree.Durante las prximas pginas, usted y yo vamos a explorar el dinmico mundo de la migasfreeloga. 1

    1 Recordando a Sheldon Cooper en Fun with Flags en la serie The Big Bang Theory.

    6

  • Migasfree es una de las herramientas que estamos utilizando con xito en AZLinux, el proyecto de migracin aescritorio libre del Ayuntamiento de Zaragoza.

    Se ocupa principalmente del proceso de la liberacin de software y de la posterior auditora de los cambios producidosen los equipos como consecuencia de esa liberacin.

    Este software se ha hecho indispensable en nuestro da a da, y creo que es una buena solucin para personalizar yadministrar escritorios de forma eficaz.

    Este libro te introducir en el uso de migasfree y lo escribo a medida que mejoramos el software, con lo que si te lodescargaste hace tiempo quizs ya est obsoleto, tenlo en cuenta.

    1.3 Estructura

    Introduccin

    En esta primera parte, repasaremos la Gestin de la Configuracin del Software. Conocer los aspectos bsicos de esteproceso de la Ingeniera del Software te dar una visin de conjunto que considero esencial porque es precisamenteaqu donde se integra migasfree.

    Te explicar las dificultades a las que un administrador de escritorios va a encontrarse y cmo se pueden sortear deforma sencilla basndome en la experiencia adquirida en AZLinux.

    Podrs conocer la historia, caractersticas y componentes que utiliza migasfree.

    Primeros pasos

    Aqui te ensear a instalar y probar un servidor y cliente migasfree con la configuracin mnima para que puedasverlos en funcionamiento cuanto antes.

    Gua de uso

    Te permitir conocer tanto el cliente como el servidor migasfree ms en detalle.

    Puesta en produccin

    Se tratarn los aspectos a tener en cuenta si quieres utilizar migasfree en un entorno de produccin, asi como las FAQsy la resolucin de problemas.

    Ajustes

    Detalla los ajustes necesarios para configurar correctamente tanto el servidor migasfree como los clientes.

    Empaquetado

    Contiene intrucciones para empaquetar migasfree en cualquier Distribucin.

    Anexos

    Contiene la API de migasfree, la bibliografa, referencias y licencia de este libro.

    1.4 A quin va dirigido

    Este libro puede serte til si eres administrador de escritorios (y/o servidores) y quieres personalizar y administrar deforma eficaz tus equipos manteniendo la integridad de los sistemas.

    7

    http://migasfree.orghttp://zaragozaciudad.net/azlinux/http://zaragoza.es

  • 1.5 Agradecimientos

    Detrs de cada proyecto hay personas que lo hacen posible, manteniendo, animando, corrigiendo, colaborando, apo-yando...

    Deseo expresar en primer lugar mi gratitud a Eduardo Romero. Me dio el estmulo necesario para liberar la primeraversin de migasfree, haciendo visible este proyecto en internet. Tambin aport la primera y nica donacin que harecibido migasfree (aunque fuera por una apuesta perdida, no se lo tuve en cuenta y fue muy bien recibida).

    A Jose Antonio Chavarra, compaero de fatigas (y alegras), tambin me siento agradecido. Ha sido y es piedraangular en migasfree. Ha mejorado sustancialmente el proyecto reescribiendo el cdigo spaguetti a buen cdigo 2,aportando ideas y soluciones. Me tranquiliza cuando quiero correr en exceso, y es el guardin de la simplicidad demigasfree.

    A Jess Gonzlez por su empeo en crear equipos de trabajo donde las personas nos sentimos a gusto trabajando.

    Y a todo el grupo de Asistencia a Usuarios del Ayuntamiento de Zaragoza, especialmente al equipo de Software Libre.Disfruto trabajando con ellos y me hacen rer a diario.

    Figura 1.1: Grupo de Software Libre del Ayuntamiento de Zaragoza.

    1.6 Acerca de m

    De joven me atraa la programacin. Estudi electrnica, y aqu me ensearon a programar en cdigo mquina elmicrocontrolador 8751.

    An me gusta cacharrear con transistores, condensadores, circuitos integrados, leds... y ensear lo poco que recuerdode todo aquello a Jess. A los dos nos gusta jugar con arduino scratch y s4a.

    Trabaj como electrnico mis primeros aos laborales y poco despus, con el boom de la informtica personal, empeca desarrollar aplicaciones de todo tipo.

    Actualmente trabajo como tcnico informtico en el equipo de Software Libre del Ayuntamiento de Zaragoza desarro-llando y manteniendo AZLinux, el escritorio libre que usamos los trabajadores municipales.

    Parte de mi tiempo libre lo dedico a desarrollar migasfree.

    Me encanta mirar el cielo en las noches de verano de Peiscola, la cerveza, las migas, y los huevos rotos.

    2 Proceso conocido muy localmente como chavarrizacin.

    8

    http://www.arduino.cc/http://seaside.citilab.eu/scratch?_s=uUPtRoAV9JudiOLQ&_k=kzuRwrWwE3SbPt4Nhttp://seaside.citilab.eu/scratch?_s=uUPtRoAV9JudiOLQ&_k=js6Ukm-xH8NtlSiD

  • Tambin me gusta escuchar msica, el olor a tierra mojada y que me hagan rer con cualquier tontada.

    Amo a Patricia, y a Jess nuestro hijo.

    1.7 Nota del autor

    Algunos han criticado a las personas que entregamos parte de nuestro tiempo en producir software libre. El argumentose basa en que nuestra aportacin hace que se eliminen puestos de trabajo o que algunas empresas no pueden hacernegocio por competencia desleal. Dicen estar hartos de gente que trabajamos gratis y que les quitamos el sustento.

    No puedo estar de acuerdo. En primer lugar porque el software libre no es un asunto econmico sino que sencillamentelo que plantea es una cuestin de libertad.

    Pienso que los modelos de negocio obsoletos deben adaptarse y evolucionar hacia nuevas formas de generar riqueza,creando nuevas relaciones entre productor y consumidor. Los modelos de negocios basados en software libre a menudonos indican el camino a seguir, ya que estn estableciendo estas nuevas relaciones y obteniendo la confianza y elreconocimiento del consumidor, y no precisamente por cuestiones econmicas. No desean esto las empresas para s?.

    En cuanto a que producir algo que otros obtienen gratis no genera puestos de trabajo, pienso que es falso. Slo hacefalta fijarse en como las tecnologas de interconexin, protocolos y servicios de accesibilidad de la red Internet hagenerado, y seguir generando, infinidad de puestos de trabajo. Estoy convencido que Internet no sera ni siquiera unasombra de lo que es si estas tecnologas se hubieran patentado, cerrado y/o explotado econmicamente.

    Creo que el movimiento del software libre es, junto con otros, una esperanza para que el Conocimiento vuelva a serproducido por la sociedad y para la sociedad, en contraposicin al Conocimiento creado, comercializado y controladopor determinadas organizaciones y que en ocasiones causa un perjuicio a la sociedad.

    1.8 Enlaces

    Versin html: http://migasfree.org/repo/book/html/index.html

    Versin pdf: http://migasfree.org/repo/book/pdf/fun-with-migasfree.pdf

    Codigo Fuente: http://github.com/migasfree/fun-with-migasfree.

    Twitter: @migasfree @albertogacias

    9

    https://www.gnu.org/philosophy/free-sw.es.htmlhttp://migasfree.org/repo/book/html/index.htmlhttp://migasfree.org/repo/book/pdf/fun-with-migasfree.pdfhttp://github.com/migasfree/fun-with-migasfreehttps://twitter.com/migasfreehttps://twitter.com/albertogacias

  • 10

  • CAPTULO 2

    Gestin de la Configuracin Software

    Nada es permanente a excepcin del cambio

    Herclito de feso.

    Estamos acostumbrados a actualizar peridicamente nuestras aplicaciones: los sistemas se hacen obsoletos rpida-mente, aparecen nuevas tecnologas, hay errores que son resueltos, surgen nuevas necesidades. Sin importar en qumomento del ciclo de vida del sistema nos encontremos, el sistema cambiar, y el deseo de cambiarlo persistir a lolargo de todo el ciclo de vida. 1

    Por tanto, el cambio en el software es inevitable y deseable que ocurra.

    Es inevitable porque los desarrolladores cometemos errores y es mediante una modificacin como los corregimos. Aste tipo de cambios los llamamos correctivos.

    Por otro lado el cambio es deseable ya que a menudo queremos incorporar nuevas funcionalidades al software omejorar aquellas que ya existan. Mediante los cambios evolutivos es como mejoramos el software.

    El cambio genera confusin e incertidumbre y se produce desde que concebimos, construmos y tambien mientrasmantenemos un proyecto software.

    El gran reto reside precisamente en gestionar de forma controlada dichos cambios usando alguna estrategia que losfavorezca y facilite.

    De esto trata precisamente la Gestin de la Configuracin Software (GCS), un proceso de la Ingeniera del Softwareque identifica, hace seguimiento y controla cada uno de los cambios que se producen en los sistemas.

    2.1 Objetivo

    El objetivo de la GCS es conservar la integridad de los sistemas frente a los cambios.

    Un sistema ser ntegro frente al cambio si:

    Mantiene correctamente las relaciones entre los distintos cambios a medida que se van produciendo (el tpicoproblema de dependencias entre elementos).

    Permite la auditora de cambios (conocimiento del estado de un sistema al que se le han ido aplicando cambiossucesivamente).

    1 Primera ley de la Ingeniera de Sistemas, Software Configuration Management, Bersoff, Henderson & Siegel, Prentice-Hall, 1980

    11

  • 2.2 El proceso

    El proceso de la GCS es un conjunto de actividades que nos permitir garantizar dicha integridad, y que podemosresumir en:

    Peticin de cambio

    Cambio

    Liberacin.

    2.2.1 Peticion de cambio

    Cuando se nos reporta un error o una peticin de mejora, lo primero que hacemos es identificar el elemento de confi-guracin software (ECS) al que se refiere.

    Un ECS es cualquier objeto software sometido a la GCS. Puede ser un manual de usuario, una especificacin, unconjunto de datos para realizar tests, una aplicacin, una librera, incluso las herramientas que se usan para realizardichos cambios, etc.

    Una vez identificado el ECS se registra la peticin de cambio.

    Las herramientas tpicas para registrar y hacer el seguimiento del cambio son los denominados gestores deproyectos (Redmine, Bugzilla, Tracker, etc. )

    Cada peticin de cambio es analizada ms tarde pudiendo ser aceptada o rechazada. Si es rechazada se avisa alinformador y se cierra la peticin; si es aceptada se asigna la peticin a alguien para que realice dicho cambio.

    2.2.2 Cambio

    El cambio es la actividad que modifica el ECS, generando una nueva versin del ECS.

    En esta actividad se utilizan un conjunto muy diverso de herramientas, desde procesadores y editores de texto, sistemasde control de versiones, entornos de desarrollo integrados (IDE), depuradores, compiladores...

    2.2.3 Liberacin

    La liberacin es la actividad de situar la nueva versin del ECS generada, en un repositorio o almacn para queposteriormente los clientes del ECS puedan acceder a l e instalarlo.

    2.3 Elemento de Configuracion Software

    Si observamos cmo los diferentes proyectos de Software Libre realizan la GCS, vemos que realizan las actividadesmencionadas liberando finalmente el cdigo fuente del proyecto en internet.

    Estos proyectos trabajan con distintos tipos de ECS (.png, .txt, .py, .c, .bin, etc.) usando los Sistemas de Control deVersiones junto con las plataformas de desarrollo colaborativo como sourceforge.net, github.com, etc.

    Este cdigo fuente ser posteriormente compilado por los mantenedores de las Distribuciones GNU/Linux (Fedo-ra, Red Hat, Debian, Ubuntu, etc.) realizando su propia GCS, pero a diferencia de los primeros, las DistribucionesGNU/Linux slo trabajan sobre un nico tipo de ECS: el paquete, donde introducirn el programa ya compilado.

    Este simple hecho permite garantizar la integridad frente a los cambios de forma eficaz y sencilla como veremos acontinuacin.

    12

  • 2.3.1 El paquete

    Un paquete es un contenedor que encapsula un conjunto de ECS liberados por un determinado proyecto, junto a sumetainformacin.

    Contendr, por tanto, el programa compilado para una determinada Distribucin y arquitectura, ms un conjuntoamplio de informacin como puede ser:

    El autor del programa.

    La direccin del repositorio del proyecto.

    La versin del ECS.

    La arquitectura.

    El nombre y direccin e-mail del empaquetador.

    La fecha de empaquetado.

    El Nombre del equipo en que se produjo el empaquetado.

    Una descripcin corta del contenido del paquete.

    Una descripcin larga.

    Pero adems suelen incluir:

    Cdigo a ejecutar antes y despus de:

    Instalar.

    Actualizar.

    Eliminar el paquete.

    Dependencias con otros paquetes.

    Una vez que un mantenedor de una Distribucin GNU/Linux ha creado un paquete, lo libera ponindolo en un reposi-torio pblico a disposicin de los clientes.

    2.3.2 Puesta en produccin

    Los encargados de aplicar los cambios son los programas denominados gestores de paquetes tales como yum, zypper apt.

    Un gestor de paquetes es un programa que permite poner en produccin los cambios que han sido liberados en losrepositorios.

    La actualizacin de un equipo se realiza comparando las versiones de los paquetes instalados con los paquetes de losrepositorios pblicos, detectando los que han aumentado su versin, resolviendo sus dependencias y finalmente, si nohay conflictos, obtienen desde los repositorios los paquetes necesarios.

    Una vez han descargado los paquetes, dan rdenes a los backends (rpm, dpkg, etc.) para que se produzca la desinsta-lacin de los paquetes antigos y la instalacin de los nuevos.

    Los backends abren el paquete, y grosso modo:

    1. Extraen los ficheros del programa copindolos en el sistema, y ejecutando adems el cdigo programado para antesy despus de la actualizacin.

    2. La metainformacin es extrada del paquete y se almacena en la base de datos del backend.

    Deca Ian Murdock, fundador de Debian, que el gran aporte del software libre a la industria ha sido precisamente lainvencin del sistema de paquetera (paquete, repositorio, gestor de paquetes).

    13

  • Y no es para menos, ya que este sistema nos proporciona los dos requisitos necesarios que garantizan la integridadfrente a los cambios:

    1. El control de dependencias, mediante el gestor de paquetes.

    2. La auditora, mediante las consultas a la base de datos del backend.

    Nota: Si ests acostumbrado a instalar programas mediante el tpico ./configure, make, install, tienes que serconsciente de que ests rompiendo la integridad frente a los cambios, ya que la base de datos del backend no esactualizada con este procedimiento. Todo lo que no sea instalar programas mediante el gestor de paquetes o elbackend rompe la integridad.

    A continuacin se muestra una tabla con las operaciones ms comunes que puedes emplear sobre algunos de losgestores de paquetes ms conocidos:

    Operaciones Gestores apt yum zypperActualizar listado de paquetesdisponibles

    apt-get update yum check-update zypper refresh

    Actualizar sistema apt-get upgrade yum update zypper updateInstalar paquete apt-get install yum install zypper install Borrar paquete apt-get remove yum erase zypper remove Buscar paquete apt-cache search

    yum list zypper search

    Buscar repositorio de un paquete apt-cache madison

    yum whatprovides

    zypper what-provides

    Veamos ahora las operaciones ms comunes que puedes emplear sobre los backends dpkg y rpm:

    Operaciones Backends dpkg rpmInstalar fichero de paquete dpkg -i rpm -ivh Borrar paquete dpkg -r rpm -e Paquete que instala el fichero dpkg -S rpm -qf Ficheros del paquete dpkg -L rpm -ql Descripcin del paquete dpkg -s rpm -qi Paquetes instalados dpkg -l rpm -qa

    14

  • CAPTULO 3

    Administrando escritorios

    En todo lo que nos rodea y en todo lo que nos mueve debemos advertir que interviene en algola casualidad.

    Anatole France.

    En el captulo anterior hemos hablado de la GCS y de cmo las Distribuciones GNU/linux utilizan el sistema depaquetera para garantizar la integridad frente al cambio.

    Si tienes un equipo domstico, todos los cambios producidos y liberados por los distintos proyectos y que hayan sidoempaquetados y liberados por tu Distribucin GNU/Linux, sern instalados convenientemente con el simple hecho dedar la orden al gestor de paquetes para que actualice tu sistema.

    Ahora bien, en una organizacin donde se requiera administrar los escritorios esto no es suficiente, veamos el porqu.

    3.1 La personalizacin

    La primera dificultad importante a la que se va a enfrentar un administrador va a ser el de la personalizacin.

    Imagina que tienes que migrar y administrar 1000 equipos a GNU/Linux y que tienes en tu red un servicio NTP,requirindose que todos tus escritorios estn con la hora sincronizada con este servicio.

    Vas a tener que personalizar el cliente NTP en todos tus escritorios.

    Una manera que se suele utilizar es instalar en un equipo una Distribucion GNU/Linux desde un DVD, editar el ficherode configuracin del cliente NTP y configurar la IP del servidor donde se encuentra el servcio NTP. Despus, puedescrear una imagen del disco duro con un sistema de clonado como pueda ser Clonezilla y clonar uno a uno los equiposusando dicha imagen.

    Con este mtodo la personalizacin inicial reside en dicha imagen, pero sigamos imaginando...

    Un da a mitad de migracin recibes un correo y lees:

    Alberto: El servicio NTP dejar de dar servicio a partir del da 10. En su lugar vamos a disponer de unnuevo servicio llamado QueHoraEs que es mucho mejor porque ...

    En este momento ya estars pensando en los 400 equipos que tienes migrados y te echars las manos a la cabezaporque es evidente que este sistema de personalizacin no es adecuado.

    Nota: La personalizacin inicial es muy sencilla de realizar pero un cambio en la personalizacin puededarse en cualquier momento, y tienes que estar preparado para poder realizarlo.

    15

    http://clonezilla.org/

  • 3.1.1 Gestores de Sistemas

    Afortunadamente, existen unas herramientas denominadas Gestores de Sistemas (Systems Management Systems) quepueden ayudarnos en la administracin de los escritorios.

    Algunos de estos Gestores de Sistemas se centran en la adquisicin del estado de los equipos como Nagios, y otrospermiten automatizar tareas mediante la ejecucin de cdigo en los equipos de manera centralizada como Zenworks,Landscape, chef, puppet, cfengine, ansible.

    Los Gestores de Sistemas estn muy influenciados por las iniciativas realizadas en los sistemas de gestin de redes detelecomunicaciones, pudiendo realizar una o un conjunto de las siguientes tareas:

    Inventario Hardware.

    Monitoreado de disponibilidad de Servidores y mediciones.

    Inventario Software e instalacin de Software.

    Gestin de Antivirus y anti-malware.

    Monitoreado de las actividades de los usuarios.

    Monitoreado de la capacidad de los sistemas.

    Geston de Seguridad.

    Gestin de almacenamiento.

    Monitoreado de la utilizacin y capacidades de la Red.

    stas tareas podemos clasificarlas de acuerdo a FCAPS, un modelo y marco de trabajo de red de la gestin de telecomu-nicaciones de ISO para la gestin de redes. FCAPS es un acrnimo de Fault, Configuration, Accounting, Performance,Security (Falla, Configuracin, Contabilidad, Desempeo, Seguridad) que son las categoras en las cuales el modeloISO define las tareas de gestin de redes.

    Fault (Fallas): Es un evento que tiene un significado negativo. Su objetivo es reconocer, aislar, corregir y registrar fallos. Puede utilizar anlisis de tendencias para predecir errores. Cuandose detecta un fallo o evento se enva una notificacin.

    Configuration (Configuracin): En el proceso de gestin de la configuracin, las operacionesdiarias son monitoreadas y controladas.

    Los objetivos de la gestin de la configuracin son:

    Recolectar informacin.

    Modificar la configuracin.

    Generacin de reportes

    Gestin de cambios.

    Los cambios de Hardware y Software son controlados por este proceso:

    Actualizacin, Instalacin y eliminacin de programas.

    Actualizacin, Instalacin y eliminacin de equipamiento (impresoras, scaners,

    memoria, etc.)

    Este proceso debe tener en cuenta:

    Permitir acceso rpido a la informacin de la configuracin.

    Facilitar la configuracin remota de los dispositivos.

    Proporcionar un inventario actualizado de Software y Hardware.

    16

    http://en.wikipedia.org/wiki/List_of_systems_management_systemshttp://www.nagios.org/http://www.novell.com/products/zenworks/http://www.canonical.com/enterprise-services/ubuntu-advantage/landscapehttp://www.opscode.com/chef/http://www.puppetlabs.com/http://cfengine.com/http://ansible.cc/

  • Simplificacin de la configuracin de dispositivos.

    El seguimiento de cambios a la configuracin.

    Accounting (Contabilidad): Su objetivo es reunir las estadsticas de los usuarios.

    Performance (Desempeo). Recolentando y analizando los datos de rendimiento el estadogeneral de los sistemas pueden ser monitorizado. Las tendencias pueden avisar de fallos decapacidad o de cuestiones relacionadas con la fiabilidad de los sistemas antes de que en estosocurran. Umbrales de rendimiento pueden ser establecidos para lanzar alarmas que seran con-trolada por la gestin de fallos habitual. Las alarmas se pueden clasificar atendiendo al gradode severidad.

    Security (Seguridad). Se encarga de controlar el acceso a recursos de red. La seguridad de losdatos puede ser conseguida con la autenticacin, cifrado y permisos principalmente.

    Nota: Migasfreee atendiendo a FCAPS tiene capacidades de Faults, Configuration y Accounting.

    Un ejemplo de funcionamiento tpico de un Gestor de Sistemas que incorpore tareas de Configuration usara unlenguaje que especificara a qu estado se quiere llevar a los equipos, no cmo llegar a ese estado, en nuestro casosera algo parecido a esto:

    asegrate de que el paquete ntp-client est desinstalado

    asegrate de que el paquete quehoraes-client est instalado

    asegrate de que el fichero de configuracin de quehoraes-client es el

    mismo que el que est en el servidor.

    Peridicamente, los clientes se conectaran al servidor para obtener este cdigo que ser ejecutado mediante el intr-prete propio del Gestor de Sistemas instalado en el cliente.

    Este sistema permite automatizar aquellas tareas que realizan a menudo los administradores de sistemas, y aunquealgunos Gestores de Sistemas se las ingenian para llevar un control de versiones, mantienen una base de datos inde-pendiente a la de los backends de los gestores de paquetes, dejando en entredicho todo lo relativo a la integridad delos sistemas.

    3.1.2 Empaquetando la personalizacin

    En AZLinux usamos otro mtodo: Empaquetamos siempre la personalizacin.

    Para el caso del cliente QueHoraEs crearamos el paquete azl-quehoraes-client 1 con la siguiente informacin:

    Dependencias: quehoraes-client

    Obsoletos: ntp-client

    En el script de postinstalacin escribiramos el siguiente cdigo:

    En el fichero de configuracin del cliente QueHoraes, modificar el valor de la entrada server= porla IP del servidor QueHoraEs

    Listo! Con esto queda garantizada la integridad frente al cambio de la personalizacin aprovechndonos de la integri-dad que nos proporciona el sistema de paquetera de nuestra Distribucin GNU/Linux.

    Una vez empaquetada nuestra personalizacin se hace relativamente sencillo realizar cualquier cambio posterior enella. Pero crear un paquete desde cero para personalizar una Distribucion GNU/Linux no es tan fcil, no tanto por lacreacin del paquete en s, sino porque la personalizacin requiere de los conocimientos suficientes sobre el sistemaGNU/Linux y sobre la propia aplicacin que se personaliza.

    1 En AZLinux empleamos como nombre de paquete el prefijo azl- ms el nombre del paquete que queremos personalizar.

    17

  • Nota: Empaquetar la personalizacin nos asegura la integridad de los sistemas frente a sus cambios.Date cuenta que no es necesario ningn Gestor de Sistemas para instalar dicha personalizacin. Slonecesitas el Gestor de Paquetes, y ste siempre lo tienes disponible en cualquier Distribucin GNU/linux.

    3.1.3 Niveles de personalizacin

    Las aplicaciones suelen incorporar dos niveles de personalizacin:

    La del usuario

    La del sistema (para todos los usuarios del sistema)

    La personalizacin del usuario es prioritaria a la del sistema siempre y cuando sta ltima no sea obligatoria.

    Es conveniente conocer si la aplicacin que vas a configurar incorpora la personalizacin a nivel de sistema, ya questa es la que se tendr que configurar.

    En los casos en que las aplicaciones slo tengan la configuracin a nivel de usuario, o en los casos en los que serequiera, tendrs que recorrer todos los usuarios para aplicar la personalizacin a cada uno de ellos.

    3.2 La liberacin

    Es el segundo problema importante con el que vas a tener que lidiar.

    Por un lado debes independizarte de los repositorios pblicos de tu Distribucin GNU/Linux por el simple motivode que no puedes permitir que el control de los cambios que se instalarn en tus mquinas lo tenga tu DistribucinGNU/Linux en vez de tu organizacin.

    Imaginas que habra pasado en AZLinux cuando OpenSuSE sustituy OpenOffice por LibreOffice?. Cuando losusuarios hubieran encendido las mquinas a las 8:00 de la maana, se iniciara la actualizacin a LibreOffice au-tomticamente pudindose producir muchas incidencias, funcionara todo? No es mejor probar LibreOffice en tuorganizacin antes de que se instale en todos tus equipos?

    Tener la posibilidad de deshacer un cambio que se haya determinado como no deseado es importante.

    Tienes que decidir por t mismo el software que deben tener tus usuarios y por tanto debes tener los gestores depaquetes configurados contra tus propios repositorios de paquetes y gestionarlos de alguna manera.

    Ademas, es conveniente que puedas planificar a quin y cundo se deben liberar dichos cambios.

    Imagina nuevamente el ejemplo de la sustitucin de OpenOffice por LibreOffice, estaramos hablando de una actua-lizacin de cerca de 500 MB por equipo que multiplicado por todos los equipos de una organizacin podra resultarmucho trfico de red.

    Una ventaja de planificar la liberacin es que permite distribuir poco a poco los cambios, de tal manera, que si hayerrores afectar inicialmente a muy pocos equipos permitiendo actuar de manera ms relajada para corregir cualquierincidencia.

    Por todo esto, y como los repositorios estndar de las Distribuciones no tienen ningn mecanismo de planificacinde la liberacin, es por lo que decidimos desarrollar migasfree, extendiendo el concepto de repositorio de paquetes alconcepto de repositorio de paquetes dinmico y planificable.

    18

  • 3.3 Repositorio Migasfree

    Un repositorio de migasfree es simplemente un repositorio estndar ms la capacidad de poder especificar, de formacentralizada, cundo y quin accede a ese repositorio.

    Veamos como acta migasfree en lo relativo a los repositorios:

    1. Los cambios que se quieren liberar son empaquetados y subidos a un servidor migasfree.

    2. Se crea un repositorio lgico con los paquetes subidos y se establece a quin (atributos de usuario +equipo) y en qu momento se deben aplicar dichos cambios. Esto no es ms que un registro en la tabla derepositorios de la base de datos de migasfree.

    3. El servidor migasfree crea un repositorio fsico (idntico al de cualquier Distribucin GNU/Linux)con dichos paquetes, utilizando las herramientas estndar de creacin de repositorios (createrepo parapaquetera RPM o dpkg-scanpackages para paquetera Debian).

    4. Cuando un cliente migasfree se conecta al servidor enva sus atributos al servidor.

    5. El servidor consulta los Registros Lgicos para determinar, en funcin de esos atributos enviados, lalista de los repositorios fsicos que tiene el cliente a su disposicin y se los enva al cliente.

    6. El cliente migasfree configura, la lista de los repositorios fsicos recibidos desde el servidor en el Gestorde Paquetes (Por esto decimos que los repositorios migasfree son dinmicos)

    7. A continuacin el cliente migasfree da instrucciones al Gestor de Paquetes para que se produzca laeliminacin, instalacin y actualizacin de los paquetes desde los repositorios fsicos.

    3.4 La GCS en tu organizacin

    En el captulo anterior, hemos visto el proceso de la GCS en los distintos proyectos de software libre y tambin en lasDistribuciones GNU/Linux.

    Pues bien, en una organizacin tambin debe realizarse el proceso de la GCS.

    En AZLinux realizamos nuestra propia GCS y vemos cmo de nuevo se repiten las mismas actividades: peticin decambio, cambio y liberacin.

    Usamos dos tipos de peticiones de cambio:

    Actualizacin de aplicaciones. Si recibimos una peticin para actualizar, por ejemplo, Mozilla Firefox, des-cargamos desde los repositorios de la Distribucin la versin deseada, la probamos en laboratorio, registrandocualquier informacin relevante en la peticin de cambio. Finalmente, si todo es correcto, se liberan los paquetesa travs de un repositorio migasfree, planificando su distribucin (ver A en figura 3.2)

    Personalizacin de aplicaciones. Se produce cuando llega p.e., una peticin de cambio para aadir un motorde bsqueda de sinnimos a Mozilla Firefox. Introducimos entonces en un paquete propio de AZLinux (azl-firefox), el cdigo que instala dicho motor de bsqueda y liberamos dicho paquete en un repositorio de migasfreeplanificando su distribucin (ver B en figura 3.2).

    Las herramientas que usamos actualmente en cada actividad son:

    En la peticin de cambio:

    Gestor de proyectos: Redmine

    En el cambio:

    Editor de textos: Geany

    IDE: Ninja-ide

    19

    http://www.redmine.org/http://www.geany.org/http://www.ninja-ide.org/

  • Figura 3.1: Proceso GCS en tu organizacin con migasfree.1. Un usuario hace un peticin de cambio.

    2. Un desarrollador programa el cambio de la configuracin software dentro de un paquete y lo sube a un servidor migasfree.

    3. La liberacin es realizada por el servidor migasfree a los ordenadores requeridos.

    Figura 3.2: Procesos de la Gestin de la Configuracin Software

    20

  • Sistema de control de versiones: Git

    Gestor de proyectos: Redmine

    En la liberacin:

    Gestor de sistemas: Migasfree

    Gestor de proyectos: Redmine

    Nota: Migasfree nos proporciona de manera centralizada conocer el estado, no slo del servidor migas-free, sino de cada uno de los equipos registrados en el servidor, convertindose en una herramienta idealpara hacer una auditora tanto de software como de hardware.

    3.4.1 Beneficios

    Los principales beneficios que obtendr tu empresa, como resultado de aplicar una GCS, seran:

    1. Reduccin del coste de los servicios de desarrollo y mantenimiento.

    2. Optimizacin del uso de los recursos.

    Y para ti, como administrador:

    1. Dispondrs de equipos ms estables.

    2. Vas a pasar de ser un administrador que se echa las manos a la cabeza ante cualquier cambio a ser un adminis-trador favorecedor del cambio, ya que dispones de las herramientas para hacer el seguimento y control de loscambios.

    3. Y, en ltima instancia, vas a mejorar sustancialmente la resolucin de incidencias.

    21

    http://git-scm.com/http://www.redmine.org/http://migasfree.orghttp://www.redmine.org/

  • 22

  • CAPTULO 4

    Caractersticas de migasfree

    Las cosas no se dicen, se hacen, porque al hacerlas se dicen solas.

    Woody Allen.

    4.1 El nacimiento de migasfree

    En el ao 2005 todos grupos polticos del Ayuntamiento de Zaragoza manifestaron por unanimidad en pleno de go-bierno municipal apoyar las polticas de uso de Software Libre y, en concreto, el fomento de los programas de SLen el entorno de escritorio del funcionario municipal. La Direccin General de Ciencia y Tecnologa asume, inicia ypotencia este importante reto. 1

    Este proyecto se planific en tres etapas:

    Primera: Migrar a aplicaciones que presentaban un impacto bajo sobre usuarios y tcnicos en el SO actual.

    Segunda: Migrar la plataforma ofimtica Microsoft Office 97 por la suite libre OpenOffice.

    Tercera: Sustituir el SO Windows XP por un sistema operativo basado en Linux. Esta etapa se inici en 2008 ytodava sigue abierta.

    Para iniciar la tercera etapa se tuvieron que realizar los primeros prototipos de lo que llegara a ser la primera versionde AZLinux. En estos prototipos la personalizacin se realizaba manualmente en un equipo cuya imagen del discoduro nos serva para clonarla en otros equipos y hacer las pertinentes pruebas.

    En aquel tiempo aprendimos a empaquetar y empezamos a introducir nuestra personalizacin en nuestros propiospaquetes. La ventaja frente a la personalizacin manual era muy significativa.

    Con los primeras migraciones reales, nos surgi la necesidad de actualizar nuestros paquetes y despues de probarsin xito Zenworks for Linux, decidimos crear nuestros propios repositorios de paquetes. Quisimos emular lo que yaestabamos haciendo con los escritorios XP, esto es, distribuir software basndonos en el contexto al que pertenecaun usuario en nuestro LDAP. Con un poco de scripting bash en Mayo de 2009 implementamos lo que seran unosrepositorios dinmicos que se configuraban en el cliente en funcin del contexto.

    Esto fue ,sin duda, una gran idea pero la gestin de estos repositorios dinmicos era manual y muy propensa a errores.

    La gestin de estos repositorios dinmicos recay en m, por lo que decid simplificarla inmediatamente y crear elprimer prototipo de migasfree. Dos semanas de programacin, en horas no laborales, fueron suficientes para presentara mis compaeros de trabajo un prototipo, que fue puesto en produccin en Junio de 2009.

    Nota: Una de las ventajas de trabajar con software libre es la facilidad con la que puedes crear proyectosya que puedes mezclar, como si de piezas de puzzle fueran, diferentes componentes sin preocuparte en

    1 Eduardo Romero Moreno, Migracin Escritorio Software Libre, 2011

    23

    http://www.zaragoza.es/contenidos/azlinux/migracionescritoriosl.pdf

  • exceso del tema de las licencias. Un ejemplo de esto ha sido la incorporacin de la funcionalidad decaptura del hardware en los equipos. Utilic el comando lshw y unas pocas lneas de cdigo para adaptarloa la base de datos de migasfree.

    4.2 Versiones

    El primer prototipo solo trabajaba con paquetera rpm y gestor de paquetes yum, y el cdigo bash que se ejecutaba enel cliente se generaba en el servidor.

    Despues de usar migasfree un tiempo en produccin vimos que podra ser un buen sistema para otras organizaciones,y mis compaeros me dieron el impulso necesario para publicar el codgo, y as durante el verano de 2009, reorganicelos mens, limpi un poco el cdigo, e hice que migasfree pudiera trabajar con distintas versiones de SO y de sistemasde paquetera. Fue publicado en github en abril de 2010 y bautizado como migasfree with fried eggs, porque miscompaeros decan que el logotipo se pareca a un huevo frito, Qu sabrn ellos de Arte!.

    En Noviembre de 2011, Jose Antonio Chavarra desarrollador de AZLinux reescribe y publica el cliente migasfree.Realiz tambien grandes cambios en la estructura del servidor. Tuvimos que definir la API con la que el cliente y elservidor deban comunicarse. Usamos claves asimtricas para dotar de seguridad al sistema. Esta nueva versin fuedenominada migasfree no trans supongo que por incorporar un cdigo ms limpio, por decirlo de alguna manera.

    Poco a poco fumos dotando al sistema de nuevas funcionalidades, y para principios de 2013 Jose Antonio Chavarracambi la navegacin y aspecto del servidor. Esta nueva versin fue denominada migasfree with chocolate.

    En febrero de 2014 liberamos la versin 4 del servidor (migasfree grape). Esta versin hace uso de bootstrap con elfin de dotar a la aplicacin de un diseo web adaptable a distintos dispositivos. Adems incorpora distintas mejorasde todo tipo y utiliza la ltima versin estable de Django, la 1.6.2. Actualmente esta es la versn que utilizamos enAZLinux.

    4.3 Caractersticas

    Migasfree es simple, y hacemos esfuerzos por mantenerlo as. Tendemos a lo que denominamos gestin cero,es decir, procuramos que la gestin de aadir nuevas entradas en migasfree no requiera ninguna tarea adminis-trativa.

    Est basado en la arquitectura cliente / servidor.

    Es Seguro. Las comunicaciones entre cliente y servidor estn firmadas con claves asimtricas.

    Es adaptable. Puedes programar las propiedades para adaptarlas a tus necesidades.

    Es Software Libre licenciado bajo la GNU Public License.

    Captura de datos. Almacena tanto el inventario software y hardware de los equipos, permitiendo hacer consultassobre ellos. Almacena tambin informacin de los equipos tales como sus atributos, actualizaciones, migracionesque se han realizado, etc.

    Consultas. Puedes programar consultas contra la base de datos de migasfree.

    Gestin de errores. Los errores que se producen en los equipos son enviados al servidor y almacenados permi-tiendo hacer su seguimiento.

    Gestin de fallas. Puedes programar cdigo que ser ejecutado en los clientes con el fin de obtener informacinde los equipos.

    Alertas. Permite conocer en tiempo real el estado del sistema facilitando al administrador su trabajo.

    Estadsticas.

    24

    http://ezix.org/project/wiki/HardwareLiSterhttps://github.com/migasfree/migasfreehttps://github.com/https://github.com/migasfree/migasfree-clienthttp://getbootstrap.com/

  • 4.4 Principales componentes empleados

    Django un framework de desarrollo web.

    Servidor web Apache. Puedes emplear otro si quieres.

    Lenguaje de programacin Python.

    Base de datos Posgresql. Puedes usar otras.

    Intrprete de comandos Bash.

    Sistemas de paquetera como APT RPM.

    Informacin Hardware: Lshw.

    Bootstrap un framework para desarrollo web.

    Flot una librera grfica.

    25

    https://www.djangoproject.com/http://www.apache.org/http://www.python.org/http://www.postgresql.org/http://www.gnu.org/software/bash/manual/bashref.htmlhttps://launchpad.net/apt-projecthttp://www.rpm.org/http://ezix.org/project/wiki/HardwareLiSterhttp://getbootstrap.com/http://www.flotcharts.org/

  • 26

  • Parte II

    Primeros pasos

    27

  • CAPTULO 5

    Probando migasfree

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

    Isaac Newton.

    Si bien puedes instalar el servidor migasfree en distintas distribuciones, en este captulo voy a explicarte como insta-larlo sobre Debian 7 Wheezy.

    El objetivo de este captulo es que dispongas rpidamente de un servidor y un cliente migasfree totalmente funcional,por eso no me voy a extender en explicaciones.

    Si decides usar otra Distribucin GNU/linux de la recomendada tendrs que conseguir los paquetes apropiados. Accedea http://migasfree.org/repo/dists para ver si tu Distribucin se encuentra aqu. En caso negativo puedes generar lospaquetes como se indica en Empaquetando migasfree. Ten en cuenta que las instrucciones de ste capitulo puedenvariar segun la Distribucin que elijas.

    Nota: Usa una mquina virtual de virtualbox realizando la instalacin mnima por red de Debian 7 paraver el funcionamiento de migasfree y familiarizarte con l antes de poner a Migasfree en produccin

    5.1 Instalando el servidor

    Para aadir el repositorio que contiene los paquetes necesarios para debian 7, ejecutaremos la siguiente instruccin:

    # echo "deb http://migasfree.org/repo debian7 PKGS" > /etc/apt/sources.list.d/migasfree.list

    Actualiza las listas de paquetes e instala el paquete migasfree-server:

    # apt-get update# apt-get install migasfree-server

    Nota: Al instalar el paquete del servidor migasfree se aade al sistema el fichero/etc/apache2/conf.d/migasfree.conf. Este fichero contiene la configuracin del ser-vidor web.

    Nota: Al instalar el paquete del servidor migasfree se crea el usuario migasfree en Postgresql conpassword migasfree y se aade al fichero /etc/postgresql/9.1/main/pg_hba.conf la l-nea local all migasfree password para permitir al usuario migasfree autenticarse mediantepassword. Recuerda que para poner en produccin el servidor debers cambiar la contrasea de ste usua-rio tal y como se indica en Migasfree en produccin.

    29

    http://www.debian.org/http://migasfree.org/repo/http://migasfree.org/repo/distshttps://www.virtualbox.org/

  • 5.2 Comprobando el servidor

    En un navegador web accede a la direccin del servidor. Si todo ha ido bien vers la figura 5.1.

    Figura 5.1: Acceso al servidor migasfree.

    Haz login con el usuario admin y password admin y vers algo parecido a la figura 5.2. Observa como arriba a laderecha pone alertas 0. Esto nos indica que todo esta bien.

    5.3 Instalando el cliente

    5.3.1 Instalando el paquete migasfree-client

    Ahora instala el cliente migasfree sobre la misma mquina donde has instalado el servidor. Para ello actualiza la listade paquetes e instala el paquete migasfree-client:

    # apt-get update# apt-get install migasfree-client

    5.3.2 Registrando el cliente

    Ejecuta el comando:

    # migasfree -u

    te devolver una salida parecida a esta:

    30

  • Figura 5.2: Estado del servidor con 0 alertas.

    root@debian7:~# migasfree -uSesin grfica no detectadaVersin de migasfree client: 3.1

    Opciones de ejecucin:Versin: debian-7.4Servidor: 192.168.92.133Proxy: NoneCertificado SSL: NonePackage Proxy Cache: NoneDepuracin: FalseNombre del ordenador: debian7GUI detallado: TrueUsuario grfico: rootPMS: apt-get

    Autoregistrando ordenador...Clave /root/.migasfree-keys/migasfree-client.pri creada!Clave /root/.migasfree-keys/migasfree-server.pub creada!

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

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

    ************************** Evaluando atributos... **************************VER: debian-7.4

    ALL: ALL SYSTEMS

    IP: 192.168.92.133

    NET: 192.168.92.0/24

    31

  • PCI: 8086:1237~Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] ...

    PLT: Linux

    HST: debian7

    USR: root~root

    ************************** 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... **************Des:1 http://ftp.es.debian.org wheezy Release.gpg [1.672 B]Ign http://migasfree.org debian7 Release.gpgDes:2 http://ftp.es.debian.org wheezy-updates Release.gpg [1.571 B]Obj http://security.debian.org wheezy/updates Release.gpg...Des:11 http://ftp.es.debian.org wheezy-updates/main Translation-en [14 B]Descargados 16,3 MB en 15seg. (1.025 kB/s)Leyendo lista de paquetes... Hecho

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

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

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

    ************************* Actualizando paquetes... *************************DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get --assume-yes --force-yes ...Leyendo lista de paquetes...Creando rbol de dependencias...Leyendo la informacin de estado...0 actualizados, 0 se instalarn, 0 para eliminar y 0 no actualizados.

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

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

    ************************* Operaciones completadas **************************root@debian7:~#

    5.4 Comprobando el estado del servidor

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

    Fjate ahora que en las Alertas tendrs 2 Notificaciones (figura 5.3):

    La primera te notifica que el ordenador 1 ha dado de alta la plataforma Linux

    La segunda notificacin te dice que el ordenador 1 ha aadido la version debian-7.x

    Accede a Datos - Ordenadores y observa: (figura 5.4)

    32

  • Figura 5.3: Notificaciones.

    Los datos del ordenador 1 (pulsando en el nmero 1)

    Su login, para ver los atributos que ha enviado el cliente.

    Su hardware.

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

    En el siguiente captulo vas a aprender a hacer el cambio de configuracin software al estilo migasfree.

    33

  • Figura 5.4: Ordenadores.

    34

  • CAPTULO 6

    Configurando software al estilo migasfree

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

    Alan Cohen.

    En este captulo vas a aprender a configurar el servidor migasfree al estilo migasfree.

    Quizs no sea el ejemplo ms acertado porque vas a configurar slo un servidor migasfree, pero imagina un escenariodonde tienes X centros de trabajo y te interesa tener un servidor migasfree con la misma configuracin en cada centropara dar servicio a sus clientes. Uno de estos servidores bien podra ser el que admistrara al resto de servidores.

    El objetivo de este captulo es que veas todo el proceso de la Gestin de la Configuracin Software en conjunto.

    6.1 Al estilo tradicional

    Imagina que te llega una peticin de cambio para modificar, en todos los centros, el nombre de la organizacin de losservidores migasfree con el nombre de tu empresa.

    Miras la documentacin de migasfree y concluyes que tienes que crear el fichero/etc/migasfree-server/settings.py y aadir la siguiente variable:

    MIGASFREE_ORGANIZATION = "ACME"

    Decides acceder a cada uno de los equipos por ssh, crear el fichero, reiniciar el servidor apache y olvidarte del tema.

    Ahora bien, si ests de vacaciones podra responder fcilmente a las cuestiones siguientes tu compaero de trabajo?

    Qu cambios se han realizado en un determinado equipo desde el 1 de enero? Quin los hizo? Y cando serealizaron todos esos cambios?

    Qu equipos tienen el cambio propuesto?

    Este mtodo es sencillo y rpido, pero difcilmente tu compaero va a poder reponder estas cuestiones de maneraeficaz, aunque hayas registrado muy bien tu trabajo. La integridad frente al cambio no est garantizada con stemtodo.

    A continuacin te propongo otra forma de realizar los cambios de configuracin. Se basa en utilizar el empaquetadopara trasladar los cambios a los equipos conservando la integridad del sistema.

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

    35

  • 6.2 Tu primer cambio de configuracin

    El primer cambio sobre un Elemento de Configuracin Software (ECS) es el que te llevar ms trabajo porque exigela creacin de un paquete.

    6.2.1 Peticin

    Imagina que te llega la siguiente la peticin de cambio que registras y aceptas en el gestor de proyectos:

    Gestor de proyectos:Registro: Sustituir el nombre de la organizacin My organization de los servidores migasfree por elde ACME

    Figura 6.1: Nombre de la organizacin.

    Lo primero que haces es identificar al ECS que afecta, es decir, cul es el paquete que debe ser modificado. Como noexiste todava un paquete sobre el que actuar, asigna la peticin de cambio a un desarrollador (Qu suerte, siempre tetoca a t) y registra en la peticin de cambio:

    Gestor de proyectos:Registro: Crear el paquete acme-migasfree-server

    Asignado a: desarrollador.

    6.2.2 Cambio

    Empaquetado

    Cmo desarrollador tienes que crear el paquete de configuracin acme-migasfree-server. Si nunca has creadoun paquete no te preocupes, para facilitarte las cosas y que puedas avanzar centrndote en el proceso GCS aqui tienesel fuente del paquete.

    En la mquina virtual ejecuta:

    # wget http://www.migasfree.org/repo/book/acme-migasfree-server_1.0-1.tar.gz# tar -xzvf acme-migasfree-server_1.0-1.tar.gz

    Observa como modificamos el nombre de la organizacin

    # less acme-migasfree-server/etc/migasfree-server/settings.py

    Nota: En los Ajustes del servidor migasfree puedes ver el conjunto de ajustes que se pueden emplear paraadaptar el servidor a tus necesidades.

    Y observa tambien que en la postinstalacin del paquete se ejecutar el comando service apache2 reloadcuando se produzca la configuracin del paquete:

    # less acme-migasfree-server/debian/postinst

    36

  • Ya tienes el fuente del paquete. Ahora genera el paquete, pero para ello antes debes tener instalado el paquete devs-cripts:

    # apt-get install devscripts

    Y ahora s, genera el paquete:

    # cd acme-migasfree-server# /usr/bin/debuild --no-tgz-check -us -uc# cd ..

    Felicidades, el cambio est empaquetado en acme-migasfree-server_1.0-1_all.deb

    Subiendo al servidor el cambio

    Usa este comando para subir el paquete generado al servidor.

    # migasfree-upload -f acme-migasfree-server_1.0-1_all.deb

    Introduce usuario: admin

    Contrasea: admin

    Version: debian-7.4

    Ubicacion: acme

    La salida que te devolver el comando migasfree-upload ser:

    root@debian7:~# migasfree-upload -f acme-migasfree-server_1.0-1_all.debVersin de migasfree upload: 3.1Usuario para subir ficheros al servidor: adminContrasea del usuario:Versin a la que subir en el servidor: debian-7.4Ubicacin a la que subir en el servidor: acme

    Opciones de configuracin:Servidor: 192.168.92.133Proxy: NoneDepuracin: FalseVersin: debian-7.4Ubicacin: acmeUsuario: adminFichero: acme-migasfree-server_1.0-1_all.debFichero normal: NoneCrear repositorio: True

    Obteniendo las claves de empaquetador...Clave /root/.migasfree-keys/migasfree-server.pub creada!Clave /root/.migasfree-keys/migasfree-packager.pri creada!

    Finalmente asigna la peticin de cambio a un liberador (s, otra vez vas a ser t) y registra en la peticin:

    Gestor de proyectos:Registro: Creado paquete acme-migasfree-server_1.0-1_all.deb

    Asignado a: liberador

    Felicidades, has realizado un cambio de configuracin y lo has almacenado en el servidor migasfree.

    37

  • 6.2.3 Liberacin

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

    Accede mediante navegador web a tu servidor. Observa que en Alertas tienes 1 paquete hurfano (Figura6.2).

    Figura 6.2: Paquetes hurfanos.

    Nota: Todos los paquetes que se han subido al servidor y no estn asignados en ningn repositorio se denominanhurfanos.

    Nota: Observa tambien que a la izquierda de las Alertas aparece un desplegable con las versiones que existen enel servidor. Esto permitir al usuario que se ha autenticado en el servidor migasfree ver los datos relativos a dichaversin. Selecciona, por tanto, la version debian-7.x

    Liberando el cambio de configuracin

    Ahora, vas a liberar el cambio creando un nuevo Repositorio. Para ello, ve a Liberacin (pulsando sobre el iconodel camin) y accede a Repositorios. Luego pulsa en Aadir nuevo repositorio e introduce estos datos:

    Nombre = PRINCIPAL

    Version = debian-7.4

    Fecha = Hoy

    Ahora despliega la seccin Paquetes

    Paquetes/Conjuntos = acme-migasfree-server_1.0-1_all.deb

    En este campo se asignan los paquetes que contendr este repositorio.

    38

  • Paquetes a instalar = acme-migasfree-server

    En este campo se escriben los nombres de los paquetes que se instalarn obligatoriamente en los clientes.

    Despliega la seccin Atributos

    Atributos = ALL-ALL SYSTEMS

    De esta manera indicamos que todos los clientes tendrn acceso a este repositorio.

    Guarda el repositorio.

    Observa que en Alertas ya no tienes ningn paquete hurfano.

    Registra y cierra la peticin de cambio:

    Gestor de proyectos:Registro: Liberado en Repositorio PRINCIPAL.

    Peticin: cerrada.

    Aplicando el cambio

    Para aplicar el cambio ejecuta el siguiente comando:

    # migasfree -u

    Observa en la salida del comando:

    ****************** Subiendo el historial del software... *******************Diferencia en el software: # 2013-05-19 10:42:33+acme-migasfree-server-1.0-1

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

    Abre el navegador y fjate que el nombre de la organizacin ha cambiado (Figura 6.3).

    Figura 6.3: Cambio nombre organizacin a ACME.

    6.3 Tu segundo cambio de configuracin

    6.3.1 Peticin

    Te llega la segunda peticin de cambio:

    Gestor de proyectos:Registro: Sustituir de nuevo el nombre de la organizacin en los servidores migasfree ya que el nombrecorrecto es Acme Corporation.

    Como siemrpre, identificas primero el ECS al que afecta el cambio: En este caso es a acme-migasfree-server.En la peticin de cambio asignas al desarrollador y registras:

    39

    http://en.wikipedia.org/wiki/Acme_Corporation

  • Gestor de proyectos:Registro: Modificar el paquete acme-migasfree-server-1-0.1

    Asignado a : desarrollador.

    6.3.2 Cambio

    Los cambios que se realizan sobre un paquete ya creado suelen ser ms sencillos de realizar porque simplemente semodifica el paquete.

    Empaquetado

    Edita el fichero del paquete acme-migasfree-server/etc/migasfree-server/settings.py y modi-fica la variable MIGASFREE_ORGANIZATION:

    MIGASFREE_ORGANIZATION = "Acme Corporation"

    Edita el fichero del paqueteacme-migasfree-server/debian/changelog para registrar el cambio realizado. Tendrsque aadir estas lneas al principio del fichero:

    acme-migasfree-server (1.0-2) unstable; urgency=low

    * Change organitation to Acme Corporation

    -- Alberto Gacas Sun, 19 May 2013 13:09:00 +0200

    Presta atencin a:

    La versin del paquete (1.0-2).

    Sustituir tu nombre y direccin de correo.

    Modificar la fecha y hora.

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

    Ahora generamos el paquete:

    # cd acme-migasfree-server# /usr/bin/debuild --no-tgz-check -us -uc# cd ..

    Observa que se ha generado el mismo paquete pero con la versin 1.0-2

    # root@debian7:~# ls -la *.deb-rw-r--r-- 1 root root 2286 may 19 10:37 acme-migasfree-server_1.0-1_all.deb-rw-r--r-- 1 root root 2338 may 19 13:25 acme-migasfree-server_1.0-2_all.deb

    Subiendo al servidor el cambio

    # migasfree-upload -f acme-migasfree-server_1.0-2_all.deb

    Introduce usuario: admin

    Contrasea: admin

    40

  • Version: debian-7.4

    Ubicacion: acme

    Gestor de proyectos:Registro: Creado paquete acme-migasfree-server_1.0-2_all.deb

    Asignado a: liberador

    6.3.3 Liberacin

    Liberando el cambio de configuracion

    Observa como aparece de nuevo un paquete hurfano en alertas y que corresponde aacme-migasfree-server_1.0-2_all.deb

    Accede a Liberacin - Repositorios y edita el repositorio PRINCIPAL. Aade aPaquetes/Conjuntos el paquete acme-migasfree-server_1.0-2_all.deb

    Guarda el repositorio.

    Registra y cierra la peticin de cambio:

    Gestor de proyectos:Registro: Liberado en Repositorio PRINCIPAL.

    Peticin: 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: # 2013-05-19 21:51:28+acme-migasfree-server-1.0-2-acme-migasfree-server-1.0-1

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

    Comprueba si el cambio se ha aplicado.

    Figura 6.4: Cambio nombre organizacin a Acme Corporation.

    6.4 Auditora

    Ahora s que vas a responder las siguientes cuestiones de manera centralizada desde el servidor migasfree:

    41

  • 6.4.1 Qu cambios se han producido en el ordenador 1 y cundo?

    Accede a Datos - Ordenadores, accede al equipo 1 y mira el final del campo historial de softwarede la seccin Software:

    # 2013-05-19 21:47:18+acme-migasfree-server-1.0-1

    # 2013-05-19 21:51:28+acme-migasfree-server-1.0-2-acme-migasfree-server-1.0-1

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

    6.4.2 Qu se cambi, quin y cundo lo hizo?

    Esta informacin est en el paquete como metainformacin. Para acceder a ella accede a Liberacin -Paquetes. Despliega el men de la derecha del paquete acme-migasfree-server_1.0-2_all.deb y pulsaen Informacin del paquete.

    Aqu podrs ver el registro de los cambios (entre otra informacin):

    ****CHANGELOG****acme-migasfree-server (1.0-2) unstable; urgency=low

    * Change organitation to Acme Corporation

    -- Alberto Gacas Sat, 19 May 2013 08:32:00 +0200

    acme-migasfree-server (1.0-1) unstable; urgency=low

    * Change organitation to ACME

    -- Alberto Gacas Sat, 18 May 2013 08:32:00 +0200

    6.4.3 Qu equipos tienen el cambio acme-migasfree-server-1.0-2?

    Ve a Consultas - Ordenadores con el paquete.... Escribe en el campo Paqueteacme-migasfree-server-1.0-2 y obtendrs el resultado.

    6.5 Conclusin

    Aunque requiera de un esfuerzo inicial empaquetar la configuracin de las aplicaciones, los beneficios que obtendrsjustifican sobradamente el uso de este mtodo, ya que dispondrs de sistemas ms estables, te permitir hacer elseguimento y control de los cambios y mejorars la resolucin de incidencias.

    6.5.1 Beneficios de crear paquetes de configuracin

    La configuracin permacece encapsulada.

    Las configuraciones puede revertirse fcilmente.

    Facilita las pruebas antes del despliegue.

    Facilita la distribucin de las configuraciones de forma segura.

    42

  • Proporciona integridad frente a los cambios de la configuracin.

    6.5.2 Desventajas del empaqueteado de la configuracin.

    Cuesta ms tiempo que otras alternativas ya que hay que crear los paquetes.

    6.5.3 Beneficios de usar migasfree

    Utilizar migasfree para la realizar la Liberacin te permitir:

    Controlar a quin y a partir de qu momento se deben aplicar los cambios

    Tener una auditora centralizada:

    Inventario de Ordenadores

    Hardware

    Software (actual e histrico)

    Inventario de los cambios.

    y algunas cosas ms que te sern desveladas en los siguientes captulos.

    43

  • 44

  • CAPTULO 7

    Configurando migasfree-client

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

    Richard Stallman.

    En el captulo anterior nos hemos centrado en cmo se realiza el proceso de la GCS.

    En este captulo vas a configurar el cliente de migasfree (mediante empaquetado) para que se conecte contra la maquinavirtual debian 7 en el que ya tienes un servidor migasfree instalado.

    Todos los comandos de este captulo los vas a ejecutar en otra mquina virtual con Ubuntu instalado y que debes teneren la misma red en la que est la maquina virtual del servidor.

    El objetivo de este captulo es que conozcas un poco ms el empaquetado.

    7.1 Instalando migasfree-client en Ubuntu

    Para aadir el repositorio que contiene el cliente migasfree para Ubuntu, crea el fichero/etc/apt/sources.list.d/migasfree.list con el siguiente contenido:

    deb http://migasfree.org/repo ubuntu PKGS

    Ahora instala el cliente migasfree:

    # apt-get update# apt-get install migasfree-client

    Observa como en el fichero /etc/migasfree.conf que ha instalado el paquete migasfree-client no hay, lgica-mente, ningn ajuste configurado.

    less /etc/migasfree.conf

    A continuacin, vamos a configurar este fichero haciendo uso del empaquetado, as que no lo hagas manualmente.

    7.2 Obteniendo acme-migasfree-client

    Al igual que hiciste con la configuracin del servidor puedes bajarte el fuente del paquete que vamos a utilizar deplantilla para configurar el cliente de migasfree.

    En la nueva mquina virtual con ubuntu ejecuta:

    45

  • $ wget http://www.migasfree.org/repo/book/acme-migasfree-client_1.0-1.tar.gz$ tar -xzvf acme-migasfree-client_1.0-1.tar.gz

    7.3 Adaptando acme-migasfree-client

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

    $ cd acme-migasfree-client$ ls -latotal 20drwxrwxr-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 debiandrwxrwxr-x 3 alberto alberto 4096 jun 18 20:54 usr

    7.3.1 Metadatos

    Observa el directorio debian. Este directorio es el que contiene los metadatos del paquete. Los ficheros ms impor-tantes en este directorio son:

    El fichero control consiste en un conjunto de campos, representados en un formato comn, que permitenal sistema de gestin 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 informacin, en un formato especial, con las modificaciones que se han rea-lizado en cada versin del paquete. Cada vez que se modifica el paquete hay que aadir una entrada en estefichero incrementando la versin y registrando lo que se ha modificado.

    El fichero copyright contiene la informacin sobre los recursos, licencia y derechos de autora de las fuentesoriginales 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 sern instalados con el paquete

    Ahora que conoces el significado de estos ficheros modifcalos cambiando el nombre del paqueteacme-migasfree-client por tuempresa-migasfree-client y pon tu nombre y la fecha actual all dn-de se requiera.

    Modifica tambien el nombre del directorio raiz acme-migasfree-client portuempresa-migasfree-client

    7.3.2 Scripts

    Observa ahora los scripts postinst y prerm. Sus nombres nos indican cuando sern ejecutados por el sistema degestin de paquetes.

    postinst inmediatamente despus de que se produzca la instalacin del paquete.

    prerm justo antes de que se produzca la eliminacin del paquete.

    Observa ahora el contenido de postinst y vers que aqu se hace una llamada al comando dpkg-divert. Me-diante este comando hacemos lo que se conoce como una desviacin de fichero (divert). Mediante la desviacinindicamos al sistema de gestin de paquetes que un fichero ya no pertenece a un determinado paquete sino al quenosotros establezcamos.

    46

    http://www.debian.org/doc/debian-policy/ch-controlfields.html

  • As el fichero de configuracin /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 actualizacinde migasfree-client ya no nos afectar. Cada vez que queramos modificar un ajuste del cliente migasfree en/etc/migasfree.conf lo haremos a travs del fichero usr/share/divert/etc/migasfree.conf delpaquete tuempresa-migasfree-client.

    Fjate tambien que en prerm deshacemos esta desviacin, para que si desinstalamos el paquete quede todo comoestaba.

    Modifica ahora el fichero usr/share/divert/etc/migasfree.conf. Tendras que poner el ajuste Servercon el nombre, o la ip, del servidor migasfree que hemos utilizado anteriormente, y el ajuste Version con el nombrede tu distribucin, por ejemplo ACME-1. El resto de ajustes modifcalos segn tus intereses. Una vez hecho esto, y si-tuado en el directorio tuempresa-migasfree-client, genera el paquete (debes tener el paquete devscriptsy debhelper previamente instalados).

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

    Con esto tendrs un paquete que configura el cliente migasfree para tu organizacin. 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 aade la desviacin de /etc/migasfree.conf. Compruebaahora que el ajuste Server y Version son los correctos.

    # less /etc/migasfree.conf

    Ahora ya estas 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 pginaweb del servidor.

    Finalmente subimos el paquete a nuestro servidor migasfree con el fin de tenerlo disponible para su liberacin a otrosescritorios ACME-1.

    # migasfree-upload -f tuempresa-migasfree-client_1.0-1_all.deb

    Introduce usuario: admin

    Contrasea: admin

    Version: ACME-1

    Ubicacion: acme

    7.4 Ejecucin del cliente migasfree

    Hasta ahora siempre hemos ejecutado el cliente migasfree desde consola mediante el comando migasfree -ucomo root. Ahora vamos a hacer que se ejecute automticamente cada vez que el usuario abra una sesin grfica.Para este propsito existe el paquete migasfree-launcher.

    $ wget https://github.com/migasfree/migasfree-launcher/archive/latest.zip$ unzip latest.zip$ rm latest.zip$ cd migasfree-launcher-latest$ /usr/bin/debuild --no-tgz-check -us -uc$ cd ..

    Sube el fichero migasfree-launcher al servidor

    47

  • # migasfree-upload -f migasfree-launcher_1.0-1_all.deb

    Ahora observa los ficheros que contiene este paquete:

    etc/sudoers.d/migasfree-launcher establece los comandos que no requieren password de root paraque pueden ser ejecutados desde un usuario cualquiera. Puedes obtener ms informacin sobre la configuracinde sudoers ejecutando man sudoers en un terminal.

    etc/xdg/autostart/migasfree-launcher.desktop ejecutar el comando/usr/bin/migasfree-tray cuando el usuario inicia sesin grfica. migasfree-tray llamar a/usr/bin/migasfree-launcher y ste a su vez a migasfree --update

    Puedes aprender ms sobre la especificacin de los ficheros .desktop en freedesktop.org.

    Ahora que ya tienes los paquetes tuempesa-migasfree-client y migasfree-launcher en el servidormigasfree, crea un repositorio en el servidor y pon estos paquetes en paquetes a instalar y asgnale el atributoALL-SYSTEMS.

    Nota: Para aprender mas sobre el empaquetado consulta la Gua del nuevo desarrollador de Debian

    Nota: Para paquetera rpm los metadatos del paquete se especifican en un nico fichero llamado SPEC.Para aprender ms sobre la creacin de paquetes rpm puedes consultar rpm.org y la wiki del proyectofedora.

    7.5 Despliegue

    A partir de este momento vas a poder administrar fcilmente los escritorios ubuntu de tu organizacin, de formageneralizada, instalando simplemente estos dos paquetes.

    Hay varias formas de realizar esta instalacin:

    Bajando los dos paquetes a cada uno de los escritorios e instalndolos mediante el comando dpkg -i

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

    deb http:///repo//REPOSITORIES PKGS

    donde sustituirs:

    por tu servidor.

    por la versin que pusiste en /etc/migasfree.conf

    y por la ubicacin que pusiste al subir el paquete al servidor migasfree con migasfree-upload.

    Una vez creado este fichero ejecuta:

    # apt-get update# migasfree -u

    y los paquetes se instalarn automticamente

    Puedes hacer un clon de un equipo donde ya estn instalados estos paquetes utilizando un sistema de clonadocomo clonezilla. Este es el mtodo que usamos en AZLinux, y nos resulta muy cmodo y rpido ya que en unamemoria USB llevamos un clonezilla junto con la imagen clonada de nuestro escritorio consiguiendo instalarun AZLinux en menos de 10 minutos.

    48

    http://standards.freedesktop.org/desktop-entry-spec/latest/index.htmlhttp://www.debian.org/doc/manuals/maint-guide/index.es.htmlhttp://www.rpm.org/http://fedoraproject.org/wiki/How_to_create_an_RPM_packagehttp://fedoraproject.org/wiki/How_to_create_an_RPM_packagehttp://clonezilla.org/

  • Puedes crear un DVD de tu escritorio tal y como se realiza en el proyecto vitalinux. En concreto tendras queadaptar el paquete vx-create-iso a tus necesidades. En ste mtodo son los usuarios quienes se bajan la iso delDVD y se instalan ellos mismos el sistema.

    49

    http://vitalinux.orghttps://github.com/vitalinux/vx-create-iso

  • 50

  • Parte III

    Gua de uso

    51

  • CAPTULO 8

    La configuracin del sistema migasfree

    El hombre razonable se adapta al mundo; el irrazonable intenta adaptar el mundo a si mismo.As pues, el progreso depende del irrazonable.

    George Bernard Shaw

    En los captulos anteriores has aprendido a instalar el servidor y el cliente migasfree, as como a crear paquetes. Lacreacin de paquetes no es una tarea trivial, no tanto por su construccin en s sino por el hecho de que son necesariosamplios conocimientos de los sistemas operativos y de las aplicaciones.

    En ste y en los siguientes tres captulos vas a aprender a adaptar y usar el servidor migasfree.

    8.1 Propiedades

    En migasfree una propiedad es una caracterstica de los equipos o de los usuarios, y que nos servir para desplegarlos paquetes.

    Como administrador de migasfree una de las primeras tareas que debes realizar es definir estas propiedades. Debespreguntarte en funcin de qu caractersticas vas a realizar los despliegues. Por ejemplo, te interesa desplegar lospaquetes por el HOSTNAME de los equipos? y por subred? Que tal por el grupo al que pertenece el usuario en elLDAP? Y por su contexto LDAP?.

    Nota: En AZLinux usamos principalmente el contexto LDAP al que pertenece el usuario para desplegarlos cambios por los distintos servicios o departamentos de nuestro ayuntamiento, y en menor medidausamos tambin el HOSTNAME de los equipos.

    Una propiedad es un cdigo que se programa en un registro de la base de datos de migasfree. Estas propiedadessern ejecutadas en cada uno de los clientes migasfree y su valores de retorno sern devueltos al servidor comoatributos.

    Nota: El atributo es el valor concreto que toma una propiedad al ser ejecutada en un equipo.

    Veamos un ejemplo sencillo de todo esto con la propiedad HOSTNAME. Accede a la web de tu servidor migasfree yve a Configuracin-Propiedades-HST. Vers en este registro el siguiente cdigo escrito en python.

    import platformprint platform.node()

    Si ejectutas python en una consola y escribes estas dos lneas vers que python muestra por la salida estandard elnombre de tu equipo.

    53

  • $ pythonPython 2.7.3 (default, Apr 10 2013, 05:46:21)[GCC 4.6.3] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import platform>>> print platform.node()white

    En mi caso me ha devuelto white, que es el nombre de mi porttil. A que no aciertas de qu color es?

    Esto es en definitiva lo que hace el cliente migasfree: obtiene del servidor la propiedad HST (su cdigo), la ejecuta ydevuelve al servidor el resultado como atributo HST-white.

    Podras haber escrito la propiedad tambien en cdigo bash simplemente llamando al comando de linux hostname oescribiendo echo $HOSTNAME (el resultado sera el mismo), pero utilizar cdigo python nos permite, en este caso,usar la misma propiedad tambin para plataformas Windows MAC.

    8.1.1 Campos de la Propiedad.

    Observa cada uno de los campos de la Propiedad:

    Prefijo: Es una combinacin de tres nmeros o letras. Este prefijo se utiliza para agrupar e identificar los atribu-tos.

    Nombre: Denomina a la propiedad.

    lenguaje de programacin: En el que est escrito el cdigo de la propiedad.

    Cdigo: Instrucciones a ejecutar en los clientes para obtener atributos.

    Habilitado: Indica si est activa la propiedad. Si no est marcado la propiedad no ser ejecutada en los clientes.

    Clase: Hay cuatro tipos de clases y que nos permiten tratar el valor devuelto por la propiedad de diferentesmaneras:

    Normal. El valor devuelto por la propiedad viene con el siguiente formato:

    ~

    simplemente como:

    Lista: El valor al ejecutar la propiedad en el cliente es una lista de atributos separados por unacoma. Puedes ver un ejemplo en la propiedad PCI. Su formato es:

    ~, ...

    Agrega por la Derecha: Permite aadir atributos de la siguiente manera: Si el valor devuelto por la pro-piedad es CONTEXTO1.CONTEXTO2.MIEMPRESA el servidor interpreta que el equipo tiene estostres atributos:

    MIEMPRESA

    CONTEXTO2.MIEMPRESA

    CONTEXTO1.CONTEXTO2.MIEMPRESA

    Se utiliza esta clase para crear atributos relacionados con LDAP.

    Agrega por la Izquierda. Lo mismo que el anterior pero agregando por la izquierda.

    CONTEXTO1

    54

  • CONTEXTO1.CONTEXTO2

    CONTEXTO1.CONTEXTO2.MIEMPRESA

    Automtico: Si este campo est marcado los nuevos atributos ser aadidos automticamente a la base de datosde migasfree. En caso contrario es el administrador de migasfree el responsable de aadir manualmente losatributos para esta propiedad. Se pueden aadir atributos manualmente accediendo a Datos-Atributos.