Changes between Initial Version and Version 1 of Reunion210317


Ignore:
Timestamp:
Mar 29, 2017, 11:40:37 AM (8 years ago)
Author:
irina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Reunion210317

    v1 v1  
     1[[TOC(heading=Índice)]]
     2= Acta videoconferencia 21 de marzo de 2017 =
     3Asisten: Teruel, Málaga, Huelva y Sevilla \\
     4Próxima reunión: 4 de abril a las 11:30
     5
     6Nota: En algunos temas se repasa la reunión anterior.
     7
     8== Máquina virtual para entorno de desarrollo ==
     9
     10=== Instalación de la nueva consola ===
     11Se ha incluido en el vagrantfile el código para que instale todo lo necesario para la consola web nueva. Hay que descomentarlo.
     12
     13Realiza los siguientes pasos:
     14 * Instala los requisitos.
     15 * Instala Angular.
     16 * Instala algunas dependencias que faltaban (provisional).
     17 * Copia el código de la nueva web.
     18
     19
     20=== Cómo crear una máquina virtual con vagrant ===
     21
     22 * Renombrar el fichero [source:branches/version1.1/installer/vagrant/Vagrantfile-devel-vbox Vagrantfile-devel-vbox] a Vagrantfile.
     23 * vagrant up → despliega el servidor por ser la máquina por defecto.
     24 * vagrant up ogclient01 → equipo modelo con Ubuntu 16.04.
     25 * vagrant up ogclient0N → crea cliente número N como equipo vacío.
     26
     27
     28
     29=== Variables que se pueden configurar ===
     30{{{
     31# Number of OpenGnsys clients (accepted values: from 2 to 9).
     32NCLIENTS = 4
     33# Repository virtual disk: file and size (GB).
     34REPODISK = "ogRepo.vdi"
     35REPOSIZE = 50
     36# Amount of memory for server and clients (MB)
     37SERVERMEM = 1024        # Minimum: 512
     38CLIENTMEM = 512         # Minimum: 256
     39# Clients MAC address prefix.
     40MACPREFIX = "08:00:27:0E:65:"
     41NETPREFIX = "192.168.2."
     42# Local port to access OpenGnsys Server. (1)
     43LOCALWEBPORT = 8443
     44}}}
     45
     46(1) El servidor no tiene instalado entorno gráfico. !VirtualBox permite redirigir un puerto de una máquina virtual a uno del hipervisor. Para ver la consola web de administración redirigimos el puerto 80 al $LOCALWEBPORT.
     47
     48La direcciones IP de las máquinas son el NETPREFIX.1N, siendo N el número del cliente. Para el servidor en NETPREFIX.10.
     49
     50=== Creación de la máquina ogAdministrator ===
     51Pasos de este proceso:
     52 * Toma como base un sistema operativo Ubuntu 14.04.
     53 * Instala opengnsys versión 1.1.
     54 * Utiliza setserveraddr para cambiar la ethernet del servidor que ha tomado la instalación por la correcta.
     55 * Incluye clientes en el dhcp.
     56
     57Opcional (Hay que descomentar el código):
     58 * Incluye cliente en la base de datos.
     59 * Genera la configuración de arranque PXE para los clientes: ogClient01 con usuario administrador y el resto como usuario sin privilegios.
     60 * Instala entorno de desarrollo de Angular.
     61
     62Al final muestra un mensaje informando de las url's para ver la consola web actual y la nueva realizada con angular.
     63
     64Manualmente hay que modificar en virtualbox las máquinas virtuales de los clientes deshabilitando la primera tarjeta de red (NAT), de esta forma la segunda arrancará por PXE.
     65
     66=== Instalación del equipo modelo ===
     67
     68En la  máquina del equipo modelo se puede instalar el nuevo agente de forma opcional:
     69 * Instala dependencias.
     70 * Instala nuevo agente.
     71 * Parchea la configuración con la IP del servidor.
     72
     73== Cambios en la versión 1.1 ==
     74=== !OgLive 64bits ===
     75Los portátiles Lenovo no funcionan con el ogLive actual debido a que está basado en Ubuntu 32bit. Se crea un ogLive de 64bits que resuelve el problema.
     76
     77 * Hay que generarlo de nuevo, porque contiene una errata.
     78 * Ocupa un poco más que el anterior, ya que a demás de las librerías 64bits hay que incluirle el paquete de las librerías de 32 bits para que se pueda ejecutar el browser.
     79 * Al montar el segundo sistema de ficheros con unionfs hay que añadir una carpeta más para las "lib32".
     80
     81Está poco probado, por ahora ha ido bien.
     82
     83=== HTTPS ===
     84En el archivo de configuración de apache se incluye una regla de reescritura para obligar a que el acceso a la consola y a la API REST sea por http.
     85
     86En la página de inicio de la consola se elimina la redirección que se hacía en las cabecera con el mismo objetivo.
     87
     88=== Directorio para los grupos ===
     89En el script de instalación crea un directorio groups dentro del directorio images. Dentro de él se pueden crear los subdirectorios de cada uno de los grupos (aulas).
     90
     91Existen dos funciones para facilitar la postconfiguración según el grupo del equipo:
     92 * ogGetGroupName devuelve el nombre del grupo del equipo.
     93 * ogGetGroupDir  devuelve el directorio del grupo con el formato: /opt/opengnsys/images/groups/$nombre_grupo.
     94
     95=== Script actualización e imágenes sincronizadas ===
     96Uno de los pasos de la actualización es comprobar los permisos del directorio de OpenGnsys, se ha modificado para que no cambien los permisos del contenido de las imágenes sincronizadas (tipo directorio).
     97
     98Al crear las sincronizadas se utiliza la opción de rsync --numeric-ids, que transfiere los archivos identificando a su propietario por el identificador numérico (no teniendo que ser usuarios existentes en el servidor).
     99
     100=== Imágenes sincronizadas ===
     101
     102==== Espacio en disco: Btrfs y cloneImage ====
     103
     104Se han hecho pruebas con zfs, pero al realizar una actualización de la cache el cliente se quedaba completamente colgado.
     105
     106Para comprimir las imágenes sincronizadas se va a usar el sistema de ficheros btrfs para la cache.
     107 * Permite montarlo con compresión, realizándose de forma transparente al leer o escribir en el disco.
     108 * Si posteriormente se monta sin compresión los archivos siguen siendo accesibles, pero los que se escriban en este momento no serán comprimidos.
     109 * Comprimiendo con zlib se alcanza casi un 50% de compresión.
     110
     111No podremos saber cuando ocupa una imagen en cache.
     112 * El comando du da la información de lo que ocuparían los datos sin comprimir.
     113 * El comando df sí da la información del uso de sistema de fichero teniendo en cuenta la compresión.
     114
     115
     116Por otro lado, hasta ahora para crear una imagen se partía de un directorio vacío en el repositorio y se sincronizaba con la partición del equipo modelo. Nota: el sistema de ficheros estaba empaquetado en archivo que se montaba al crear o restaurar la imagen.
     117
     118Ahora antes de sincronizar si existe una imagen del mismo sistema operativo se crea una copia con enlaces duros, por lo que no ocupa en espacio en disco. Después al sincronizar sólo ocuparán los archivos que cambien.
     119
     120Para ello se han creado:
     121 * el script de servidor '''cloneimage''':
     122{{{
     123cloneimage: Copia con enlaces "duros" una imagen sincronizada tipo directorio.
     124     Formato: cloneimage image_name new_image_name
     125     Ejemplo: cloneimage Windows7 Win7Office
     126}}}
     127 * la función '''ogInitImage''':
     128{{{
     129ogInitImage: Inicializa la imagen tipo directorio: clona una similar o crea un directorio vacío.
     130     Formato: ogInitImage [ REPO | CACHE ] image [ num_disk ] [ num_part ]
     131     Ejemplo: ogInitImage REPO Ubuntu16 1 1
     132     Ejemplo: ogInitImage CACHE Windows10
     133}}}
     134
     135 ogInitImage Antes de clonar la imagen elige la más parecida: busca si hay alguna del mismo sistema operativo y si son varias clona la del tamaño más parecido.
     136   - Al crear la imagen toma los datos de tamaño y tipo de sistema operativo de la partición de origen.
     137   - Al actualizar la cache toma estos valores de la imagen del repositorio.
     138
     139Habría que crear una función ogCloneImage similar al script de servidor para que la elección de la imagen a clonar se pueda realizar manualmente.
     140
     141Las pruebas se ha documentado en [wiki:SyncronizeZfs#PruebasconBtrfs Pruebas con Btrfs]
     142
     143==== Transferencia multicast ====
     144Para aumentar la velocidad de restauración se está probando la transferencia multicast de las imágenes sincronizadas. El proceso tiene tres pasos:
     145 * En cada cliente con rsync se crea un listado con los ficheros que hay que modificar y se envían al servidor (unificándolo con los que ya se hayan mandado).
     146 * El servidor envía a todos los clientes los ficheros del listado por multicast.
     147 * Cada cliente vuelve a ejecutar rsync para comparar los atributos y enlaces.
     148
     149En el segundo paso el conjunto de ficheros que se envían se empaquetan en un tar, de forma que sólo se envía un archivo que se desempaqueta en el destino.
     150
     151Hay un punto débil que es que cada cliente crea el listado de los ficheros que necesitan y luego los manda al servidor. En el momento que se inicia la transferencia multicast en el servidor si algún cliente no ha mandado su listado puede que le falten archivos. No habría problema, sólo supondría que el paso tercero con rsync tardaría más tiempo.
     152
     153=== API REST ===
     154
     155En los datos de configuración de los discos del cliente, en la información de cada partición se incluye el número de disco. Hasta ahora calculaba el número de disco por el orden de los datos que envía el cliente, pero en el formato JSON los datos no tienen que estar ordenados.
     156
     157En la ruta para solicitar el estatus de los clientes se incluyen dos estado nuevos:
     158 * macos: cuando el equipo está con el agente de macOs.
     159 * unknow: cuando no ha devuelto información. Por ejemplo en un fallo de las comunicaciones.
     160
     161Se cambiarán la denominación "ogclient" por "oglive" en todos los lugares donde aparezca.
     162
     163=== ogAgent ===
     164Funcionalidades: Permiten apagar, reiniciar, solicitar el estado y, en Linux y Windows, ejecutar un script.
     165
     166En Windows hay que tener en cuenta que hay que escapar las contrabarras para que el código se ejecute correctamente.
     167
     168__Para Mac__
     169
     170Crear el entorno de desarrollo tarda mucho, pero lo que es la creación del paquete para la instalación es rápida.
     171
     172Para realizar la instalación en el equipo modelo:
     173{{{
     174   - Instalar dependencias (la instalación debe realizar estas operaciones):
     175        sudo easy_install pip
     176        sudo pip install netifaces requests six
     177   - Descargar el fichero e instalar el agente:
     178        sudo installer -pkg OGAgentInstaller-Version.pkg -target /
     179   - Configurar el agente:
     180        sudo sed "/remote=/ s,remote=.*,remote=https://IPServidorOpenGnsys/opengnsys/rest/," /Applications/OGAgent.app/cfg/ogagent.cfg > /tmp/ogagent.cfg
     181        sudo mv /tmp/ogagent.cfg /Applications/OGAgent.app/cfg/ogagent.cfg
     182   - Iniciar el servicio (se iniciará automáticamente en el proceso de arranque):
     183        sudo ogagent start
     184}}}
     185
     186Cuando se hayan hecho más pruebas con el cliente nuevo se decidirá si en está versión se ofrece sólo el agente nuevo o si también se mantiene el antiguo.
     187
     188El agente actual, al ser la comunicación persistente, si hay algún microcorte en la red puede a dejar el sistema operativo sin acceso a internet. El nuevo agente no tiene esté problema.
     189=== Cambio de grub4dos a grub2 ===
     190
     191Se está probando a arrancar los equipos por pxe con grub2, por ahora hemos encontrado las siguientes ventajas.
     192
     193   * Soporta UEFI. La mayoría de los equipos nuevos viene con está característica y tenemos que ponerlo en modo "heredado" para que funcionen con OpenGnsys.
     194   * Está actualizado. Grub4dos no se mantiene desde hace 7 u 8 años.
     195
     196Trae muchos módulos para reconocer discos, sistemas de archivos, ...
     197
     198Preparar el servidor para utilizar grub2 cpn PXE se realiza con un solo comando.
     199
     200El formato de la configuración del arranque de los clientes varía, por lo que habrá que modificar las plantillas. Los archivos PXE se almacenarán en un directorio diferente de  las de grub4dos, /opt/opengnsys/tftpboot/boot, que dentro contendrá un subdirectorio templates.
     201
     202También se probará si es posible el arranque en caliente de Windows, que desde el kernel 3.7 no es posible con grub4dos.
     203
     204Aunque se ve avance muy importante, no se esperará a que este acabado este ticket para sacar la versión.
     205
     206=== Foro: ogCreateMbrImage ===
     207Hay [message:662 una pregunta] sobre un error de la función ogCreateMbrImage con Windows 10.
     208
     209Aparentemente se debe a que no tiene permisos de escritura en el repositorio. Se responde al mensaje.
     210
     211== Errores detectados ==
     212
     213=== Imagen duplicada ===
     214
     215En Sevilla tenemos problemas cuando un equipo además del monitor tiene conectado un videoproyector o una pizarra interactiva, a veces no duplica la pantalla o incluso no se enciende el monitor si no está arrancado el proyector. Huelva también tiene el mismo problema. Hay que probar si cargando los módulos de vídeo de grub2 se soluciona.
     216
     217=== ogSetPartitionId ===
     218Da error cuando el equipo tiene una única partición y no realiza el cambio.
     219
     220Se debe a que se manda un sentencia al comando fdisk, que en caso de ser una única partición necesita un dato menos, y el comando no la entiende, saliéndose con error.
     221
     222=== Configuración PXE ===
     223En la mayoría de las propiedades que afectan el arranque del equipo, cuando son cambiadas se regenera el archivo PXE. Cuando se mueve un equipo de grupo no se realiza el cambio.
     224
     225Hay que revisarlo.
     226
     227=== default.sh y variable OG_IP ===
     228El fichero /opt/opengnsys/client/etc/preinit/default.sh permite cargar un script de arranque personalizado atendiendo a la IP o el grupo del cliente. Para el primer valor se usa la variable OG_IP que parece que no está definida en ningún lugar.
     229
     230Se definirá en /opt/opengnsys/client/etc/locadenviron.sh.
     231
     232La función ogGetIpAddress utiliza la variable IPV4ADDR, si existe toma este valor y si no utiliza el comando ip para obtenerla. Se plantea utilizar está variable en default.sh para que no haya dos variables con el mismo significado.
     233
     234== ogLive ==
     235El ogLive tiene una serie de recursos compartidos. Habría que revisar su uso y realizar un reestructuración de los mismos.
     236
     237== Imágenes de sólo lectura ==
     238Interesaría poder marcar la imagen como sólo lectura, de forma que no se pudiera modificar.
     239
     240Es útil en el caso de un servidor en cada centro (OU) con las imágenes del mismo más un servidor de imágenes básicas que es accesible por todos los centros pero que no permitiera modificarlas.
     241
     242Aspectos a tener en cuenta:
     243 * Desde la consola ¿quién marcaría la imagen como sólo lectura? ¿los usuarios/OU's tendrían permisos diferenciados: unos de sólo lectura y otros de lectura y escritura? Esto sólo se podrá realizar la consola permita distintos perfiles de usuario.
     244 * Para la línea de comando podríamos tener un fichero "readOnly" donde esté el listado de las imágenes que son sólo lectura, de forma que los comandos que modifican la imagen lo consulten antes de empezar.
     245 * Una opción rápida, y provisional, es tener el directorio de las imágenes, o cada imagen concreta, con permisos de sólo lectura para el usuario de OpenGnsys.
     246 * El repositorio podría tener dos partes, una compartida con las demás OU, y otra sólo local para los equipos de mi OU.
     247
     248De este entorno también surge el ticket de que puedan existir imágenes con igual nombre canónico en distintas unidades organizativas.
     249
     250
     251
     252
     253