de directrices AS IS No soy un experto en enfardamiento Ante cualquier duda, remítase a la documentación oficial: Debian Policy ( www.debian.org/doc/debian-policy) https://wiki.debian.org/IntroDebianPackaging https://wiki.debian.org/es/IntroDebianPackaging
→ cambios manuales en cada máquina (se modifican perfiles de usuario) Ventajas → rápido? No: inmediato Problemas de gestión: * cómo actualizar cada equipo a lo último? * los cambios no son reproducibles 2º intento → automatizar tareas haciendo scripts (se garantizan estados finales, como en Chef, Puppet) Ventajas → cambios reproducibles (y con suerte orientados al sistema) Problemas: * cómo revertir cambios? Haciendo otro script 3º intento → agrupar scripts de configuración en paquetes (cambios orientados a la organización) Ventajas: * Gestión controlada en repositorios * Se asegura la integridad del sistema * Aplicación de cambios controlada (instalación y actualización). Se puede volver atrás * Feedback (gestor de paquetes) * Control de versiones (changelog de los paquetes)
máquina (no todas requieren los mismos cambios y los repositorios en linux están disponibles para todos) Solución: migasfree (mashup de conceptos ya inventados) → por eso es simple * asignación selectiva (propiedades y calendarios) * feedback (alertas) * recolección automática de datos de equipos (hardware y software)
maquetas manuales no actualizables hasta ser la primera en utilizar paquetes para la GCS y migasfree La única distro con cliente de Novell (con protocolo NCP mejorado)
equipos), pero desde finales de 2012 no se instala en equipos Injerto del cliente de Novell de SLED (y del kernel...) Novell nunca nos ha dado soporte para sus bugs La comunidad openSUSE dejó de dar soporte en 2012 (como XP ahora...) Desde entonces, imposibilidad de actualizar programas... sin hacer “ingeniería de paquetes”
en la actualidad) Independencia total del cliente de Novell → ncpfs Estabilidad y long support al ser LTS Si algo existe en Linux, está siempre para Ubuntu
para... Publicar y difundir nuestro método de trabajo (AZLinux) Es una prueba de concepto para atraer a la gente (qué fácil es crear una distro...) http://github.com/vitalinux/ Las distros generalistas se quedan en el olvido → Augustux, Molinux, Asturix Pero lo realmente importante es que a mí, en mi casa (en mi organización), me funcione Porque yo conozco cómo es mi casa (mi organización), yo tengo el potencial de hacerlo funcionar y que sea práctico para los míos → este es el espíritu y lo que a nosotros nos ha funcionado Para ello se necesita trabajo diario (y mejor si el equipo es interno) * Cambia el hardware (equipos, impresoras, etc.) * Evoluciona el software (mejoras, bugs) * Necesidades distintas para distintas personas * No se puede aplicar la misma receta en todas las organizaciones
Redmine * Bugzilla * Tracker * GitHub El arte de saber pedir Editor de textos IDE (opcional) Estudiar el sistema El oráculo Probar, destrozar, arreglar y volver a probar Seguir las reglas de enfardado Fijarse en cómo están construidos otros paquetes Sistema de control de versiones Construir el paquete Subir el paquete a migasfree Distribuir El arte de saber pedir → como tal, quiero tal, para tal El meollo está en el cambio... Cada aplicación hace las cosas de una manera distinta * FF, TB * .d → sudo, apt * Gconf, Dconf * cups
más fácil y el menos común) * Dependencias (metapaquetes) (requisitos, obsoletos, conflictos) (directivas...) * Cambios en la configuración del sistema (ficheros de otros paquetes, ficheros generados por otros paquetes, configuración de servicios y apps) (vx- migasfree-client, vx-desktop-settings, vx- bootsplash) * Cambios en perfiles de usuario (ficheros generados por otros paquetes) AZLinux (pasión por el detalle) * Combinaciones de todo lo anterior
y AUTOMÁTICO (sin intervención del usuario). Habrá que tomar algunas decisiones (debconf) (la organización manda sobre el usuario) * La instalación y la actualización de un paquete son procesos diferentes (se ejecutan diferentes scripts) * Evitar los conflictos entre paquetes que no pueda resolver el PMS (dependencias incumplidas, conflictos/obsoletos, cuidado al tocar archivos de otros paquetes) * Al desinstalar, dejar todo como estaba (o casi) * Se puede programar un paquete en cualquier lenguaje de script (sh, bash, perl, python, php, ruby) * Idempotencia: instalar N veces un paquete genera siempre el mismo resultado
periódicamente una misma página web, se sobrescribe el PDF generado con el mismo nombre ¿Dónde debería recogerse la petición? → sistema de control de incidencias (Redmine, Bugzilla, etc...)
información sobre el fichero de configuración • Crear un paquete con lo necesario 1. paquete cups-pdf 2. /etc/cups-pdf.conf http://www.debianadmin.com/howto-install-and- customize-cups-pdf-in-debian.html 3. vx-package-new vx-cups-pdf * explicar fichero control (Pre-Depends: cups- pdf, vx-utils) * README * install (¡este no viene en la plantilla!) * preinst, postinst, prerm, postrm * changelog * usr/bin/vx-cups-pdf-renamer * usr/share/vx-cups-pdf/divert/etc/cups-pdf.conf
vx-file • vx-file-insert • vx-file-delete • vx-line-comment • vx-file-get-key • vx-file-set-key • vx-text-get-line-number • vx-divert-add • vx-divert-remove • vx-divert-list-files ¿Cuándo es mejor cada caso? → depende Si es un fichero que puede ser modificado por varios paquetes → no diverger Si sólo hay que comentar/descomentar una línea → no diverger Si es un XML → diverger (es lo más fácil) Si se modifican varios parámetros → diverger www.debian.org/doc/debian-policy/ap-pkg-diversions. html wiki.debian.org/Adding and removing diversions
• Distribuir /etc/migasfree.conf → packager, server vx-build-package vx-cups-pdf (comentar líneas de migasfree-upload) * lintian * errores Migasfree Todo el proceso debe reflejarse en la incidencia
vs. unizar-firefox-bookmarks /usr/lib/firefox/defaults/pref/firefox-unizar.js pref("general.config.filename", "global-unizar- conf.js"); pref("general.config.obscure_value", 0); /usr/lib/firefox/global-unizar-conf.js lockPref(); → http://kb.mozillazine.org/Knowledge_Base /usr/lib/firefox/searchplugins/ / etc/skel/.mozilla/firefox/<perfil>/bookmarkbackups/bookm arks-<fecha>.json Pero, ¿qué hacer con los usuarios ya creados? → postinst vx-user-get-mozilla-profile set -x
la misma ¿Alguna idea de cómo hacerlo? Quitar las versiones posteriores del repositorio es muy cutre... Ver la siguiente diapositiva explicando el pinning
por uno más chulo de la Universidad Existe vx-desktop-settings → unizar-desktop-settings es la mejor opción? Estudiar el sistema → cómo funciona la BD de Dconf → z-unizar.dconf
normas. • Una norma es una política ó regla (habitualmente de seguridad) que controla lo que los usuarios o equipos pueden o no hacer. • Un paquete virtual es un nombre genérico que se le asigna a un paquete para indicar que proporciona una determinada funcionalidad. Esto nos puede resultar útil para la creación de directivas y normas para equipos y usuarios. • Una directiva puede hacerse fácilmente haciendo un paquete que tenga como dependencias un conjunto de normas.
con la misma funcionalidad denominada “rule-admin” donde en uno permitiremos el uso de “sudo su” y en el otro no. • Package: vx-rule-admin-yes – Provides: rule-admin – Conflicts: rule-admin – Replaces: rule-admin • Package: vx-rule-admin-no – Provides: rule-admin – Conflicts: rule-admin – Replaces: rule-admin
años que no se hacen paquetes oficiales para openSUSE 11.2 (TB 3.0) Conseguimos de un repositorio personal los paquetes de TB 17 Tuvimos problemas con glibc porque zypper no gestiona los cambios de arquitectura de paquetes (en algunos equipos) También problemas con la navegación en Firefox en ciertos sitios HTTPS (bug en mozilla-nss) Nunca jugar con: * kernel * glibc * el cliente de migasfree * conectividad red
Afecta a unos 75 puestos de trabajo del Ayto (con Linux) (0.02 %) No se sabe qué preimpresos se usan en cada equipo Hay ficheros que se llaman igual pero el contenido es diferente Resultado: no se puede empaquetar una solución común y cada vez que hay un cambio en un preimpreso, hay que ir al equipo y actualizarlo
que no estaba bien programada. Esto hizo que a la hora de distribuir paquetes, haciendo las demoras por esta propiedad, no consiguiéramos una distribución homogénea a través del tiempo (durante todo el calendario no se actualizaba ningún equipo y cuando llegaba al final, todos de golpe, unos 200 equipos) Cuidado al programar propiedades, fallas y consultas en migasfree!!!
usuario de un sólo uso Después de hacerlo, nos dimos cuenta que Ubuntu viene con uno por defecto (sesión de invitado) https://github.com/vitalinux-kiosk/vx-rule-profile- disposable/tree/d0a84651de22fcda18d2a54701970 01f7522c4d9
Firefox no navega a IPs si se tiene un proxy configurado a nivel de sistema • Deficiente rendimiento del chip gráfico intel 845 en Ubuntu 12.04 • No arranca el gestor LDM en determinado hardware • No se crea un lanzador correcto de LibreOffice al hacer drag & drop desde el menú de aplicaciones
para hacer siempre lo mismo y de la misma forma, ya están las máquinas A mí me motivan los retos, y con este método de trabajo tengo tiempo para afrontarlos Tratamiento incidencias: * No tan inmediato como un cambio manual * Mantenimiento preventivo * Menos llamadas
vuestros!!! ¿Qué nos falta? * Integración continua * Eliminar nuestros bus factors → tenéis que evitarlos a toda costa (hacer paquetes no es alquimia) * Desarrollar más en abierto → Vitalinux y Vitalinux Kiosk son sólo el comienzo La importancia de que el equipo sea interno y realice el ciclo integral * Homologación de equipamiento * Fabricación maquetas y paquetes * Formación de las plataformas * Soporte a usuarios