Ajustes

La triangulación de los espárragos blancos.

Ajustes del servidor migasfree

No hay inteligencia allí donde no hay cambio ni necesidad de cambio.

—Herbert George Wells

Los ajustes de configuración del servidor migasfree se asignan en el fichero /var/lib/migasfree/FQDN/conf/settings.py.

Nota

Este es un fichero python, por lo que hay que llevar cuidado con la sintaxis y la indentación.

Ajustes propios de migasfree

MIGASFREE_ORGANIZATION

Valor por defecto: “My Organization”

Establece el nombre de tu organización.

Ejemplo:

MIGASFREE_ORGANIZATION = "ACME Corporation"

MIGASFREE_AUTOREGISTER

Valor por defecto: True

Especifica si los ordenadores pueden autoregistrar la plataforma y el proyecto al ejecutar migasfree --update.

Si no quieres que ningún ordenador registre proyectos y/o plataformas automáticamente, tienes que darlas de alta manualmente y asignar este ajuste a False.

Ejemplo:

MIGASFREE_AUTOREGISTER = False

MIGASFREE_DEFAULT_COMPUTER_STATUS

Valor por defecto: “intended”

Establece el estado por defecto que tendrá el ordenador cuando es añadido en el sistema.

Los valores que se pueden asignar son: “intended”, “reserved”, “unknown”, “in repair”, “available” o “unsubscribed”

Ejemplo:

MIGASFREE_DEFAULT_COMPUTER_STATUS = 'available' # Estado disponible por defecto

MIGASFREE_COMPUTER_SEARCH_FIELDS

Valor por defecto: (“id”, “name”, )

Establece los campos del modelo Computer por los que se podrá buscar un ordenador. El primer campo es importante ya que será el que aparezca en la primera columna de la lista de ordenadores. Si quieres ver el nombre del ordenador en vez del id en la lista de ordenadores, asigna el campo name el primero de la lista.

Se utiliza también para las búsquedas de un CID por los campos especificados. Ver Fórmulas específicas.

Ejemplo:

MIGASFREE_COMPUTER_SEARCH_FIELDS = ("name", "ip_address") # Búsquedas por nombre e IP

MIGASFREE_TMP_DIR

Valor por defecto: “/tmp”

Asigna la ruta donde se alamacenarán los ficheros temporales generados por el servidor.

Ejemplo:

MIGASFREE_TMP_DIR = "/tmp/server"

MIGASFREE_PUBLIC_DIR

Valor por defecto: “/var/migasfree/repo”

Directorio donde se guardarán los paquetes y repositorios de físicos cada uno de los proyectos.

Ejemplo:

MIGASFREE_PUBLIC_DIR = "/var/repositories"

MIGASFREE_SECONDS_MESSAGE_ALERT

Valor por defecto: 1800

Si un ordenador tarda más de los segundos especificados en este ajuste en enviar un mensaje mientras se está actualizando, se considera que el ordenador va retrasado (Delayed). Normalmente, esto ocurre cuando se ha perdido la conexión con el servidor por cualquier circunstancia, por ejemplo cuando el usuario ha apagado el equipo antes de que el cliente termine el proceso de actualización. De esta forma, se queda registrado en el servidor como Delayed.

Un equipo pasando a retrasado

figura 16.1. Un equipo pasando a retrasado.

Ejemplo:

MIGASFREE_SECONDS_MESSAGE_ALERT = 3600 # Una hora

MIGASFREE_HELP_DESK

Valor por defecto: “Put here how you want to be found”

Texto que apacere al ejecutar el comando del cliente migasfree-label para indicar al usuario cómo ponerse en contacto con Asistencia Técnica.

El comando migasfree-label tiene la finalidad de identificar inequívocamente al cliente. Este comando ejecutado en un cliente con entorno gráfico abrirá el navegador web mostrando una pequeña etiqueta que debe ser impresa y pegada en el ordenador con objeto de facilitar la asistencia técnica aún estando el ordenador apagado.

También es posible imprimir la etiqueta de un ordenador desde el servidor desplegando el menú contextual del ordenador y pulsando en Etiqueta [ordenador].

Comando migasfree-label

figura 16.2. Comando migasfree-label.

Ejemplo:

MIGASFREE_HELP_DESK = "Teléfono Asistencia Técnica: 555.12.34.56"

MIGASFREE_EXTERNAL_ACTIONS

Valor por defecto: {}

Este ajuste aparece por primera vez en la versión 4.16 del servidor y sustituye a MIGASFREE_REMOTE_ADMIN_LINK, el cual ha sido eliminado definitivamente en esta misma versión.

El objetivo de este ajuste es ejecutar un código externo al servidor migasfree sobre los elementos relacionados de un determinado objeto (un atributo, un ordenador, un conjunto de atributos, etc).

Veamos un ejemplo de funcionamiento con esta configuración:

MIGASFREE_EXTERNAL_ACTIONS = {
    u'computer': {
        u'ping': {u'title': u'PING', u'description': u'comprobar conectividad'},
        u'ssh': {u'title': u'SSH', u'description': u'control remoto vía ssh'},
    },
    u'deployment': {
        u'check': {u'title': u'CHECK', u'description': u'comprobaciones al despliegue'},
    }
}

Aquí estamos indicando que se añadan al modelo computador las acciones ping y ssh. Además, para el modelo deployment se ha definido una acción llamada check.

El servidor simplemente se encarga de mostrar un botón cuando corresponda con el título de cada acción.

MIGASFREE_EXTERNAL_ACTIONS

figura 16.3. MIGASFREE_EXTERNAL_ACTIONS

Cuando se pulsa sobre una acción determinada en el navegador web, el servidor simplemente redigirá a una página con un protocolo que hemos denominado Migasfree External Action (mea).

Nota

Fijate ahora en la figura 16.3, estamos viendo los objetos relacionados con el conjunto de Atributos AULA-3. Observa que tiene 14 ordenadores relacionados a los que ahora puedes hacer PING y SSH en bloque. Además este Conjunto de Atributos tambien está incluido en 7 Despliegues a los que ahora puedes ejecutar una acción CHECK.

Un ejemplo de redirección al pulsar sobre la acción ping (name: ping) desde el atributo (model: atribute) cuyo id es 18745 (id: 18745) desde el servidor 127.0.0.1 (server: 127.0.0.1) podría ser:

mea://{"name": "ping", "related_model": "computer", "server": "127.0.0.1", "related_ids": [3643, 3635, 5499], "model": "attribute", "id": 18745}

Observa en este ejemplo que el modelo relacionado con el atributo es el ordenador (related_model: computer) y los ordenadores concretos en este caso son tres (related_ids: [3643, 3635, 5499]).

Observa también que se hace uso del protocolo mea://.

El navegador web (en tu propio equipo) es el encargado de interpetrar éste nuevo protocolo y ejecutar un script con los datos que le llegan.

Es necesario, por tanto, configurar adecuadamente el navegador para que reconozca el protocolo MEA.

Las posibilidades son muchas:

PING, SSH, VNC, WOL, etc. sobre 1 o un grupo de ordenadores.

Forzar la sincronización inmediata en ordenadores.

Listados a tu gusto y necesidades.

Interactuar con otras aplicaciones como p.e para abrir una incidencia en Redmine sobre una impresora (o sobre cualquier otro objeto de migasfree).

etc, etc, y etc …

Puedes ver un ejemplo de empaquetado de la configuración para Chromium y Firefox, así como de un script que interpreta el protocolo mea:// en la carpeta acme-migasfree-exetrnal-actions de fun-with-migasfree-examples.

Instrucciones para intalar el paquete acme-migasfree-external-actions:

$ wget https://github.com/migasfree/fun-with-migasfree-examples/archive/master.zip
$ unzip master.zip
$ cd fun-with-migasfree-examples-master/acme-migasfree-external-action
$ debuild --no-tgz-check -us -uc
$ sudo dpkg -i ../acme-migasfree-external-actions_*_all.deb

La configuracion del protocolo MEA para Firefox se encuentra en: usr/lib/firefox/defaults/pref/acme-migasfree-external-actions.js

La configuracion del protocolo MEA para Chromium se encuentra en: usr/share/applications/acme-migasfree-external-actions.desktop

El script que se ejecuta cuando pulsamos en una acción se encuentra en: usr/bin/acme-migasfree-external-actions

Para obtener información de los ordenadores el paquete acme-migasfree-external-actions hace uso de migasfree-sdk.

Puedes instalarlo mediante:

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

Para cada acción se puede especificar:

title: Título de la acción. Es obligatorio especificarlo.

description: «Tooltip» de la acción. Es opcional.

many: Por defecto su valor es True. Si se establece a False indica que el botón de la acción sólo se mostrará cuando el número de elementos sea igual a 1. Si quieres que la acción VNC del ordenador sólo se muestre cuando haya sólo un ordenador relacionado, establécelo como "many": False. Es opcional.

related: Por defecto se muestra la acción para todos los modelos relacionados. Si quieres que la acción solo se muestre sólo desde unos determinados modelos debes especificarlos en una lista. Si quieres que la acción UPDATE del ordenador solo se muestre desde ordenadores y despliegues, pero no desde el resto de modelos relacionados, en ese caso establece "related": ["computer", "deployment"]. Es opcional.

Nota

La primera vez que ejecutes una acción se pedirá la contraseña del usuario reader, empleado para acceder a la API de migasfree. Puedes cambiar ese usuario modificando usr/bin/acme-migasfree-external-actions

Ejemplo:

MIGASFREE_EXTERNAL_ACTIONS = {
    u'computer': {
        u'ping': {u'title': u'PING', u'description': u'comprobar conectividad'},
        u'ssh': {u'title': u'SSH', u'description': u'control remoto vía ssh'},
        u'vnc': {u'title': u'VNC', u'description': u'control remoto vía vnc', u'many': False},
        u'update': {u'title': u'UPDATE', u'description': u'Forzar sincronización', u'related': [u'computer', u'deployment']},
    },
    u'deployment': {
        u'check': {u'title': u'CHECK', u'description': u'comprobaciones al despliegue'},
    }
}

MIGASFREE_HW_PERIOD

Valor por defecto: 30

Período en días para el envío del hardware de los ordenadores al servidor. Si han pasado más días de los especificados, se envía de nuevo toda la información del hardware al servidor.

Ejemplo:

MIGASFREE_HW_PERIOD = 1 # Cada día

MIGASFREE_INVALID_UUID

Valor por defecto =

[
   "03000200-0400-0500-0006-000700080008", # ASROCK
   "00000000-0000-0000-0000-000000000000",
   "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF",
   "00000000-0000-0000-0000-FFFFFFFFFFFF",
]

Es una lista con UUIDs inválidos.

Algunas placas base pueden no tener asignado un UUID único, pudiéndose darse el caso que varios equipos tengan un mismo UUID. Esto provoca que en el servidor se comparta el mismo registro de ordenador.

Para evitarlo, es preciso añadir estos UUIDs en este ajuste.

Cuando un ordenador tiene un UUID inválido, el servidor toma y asigna el nombre del ordenador como UUID.

Puedes hacer UUIDs inválidos añadiendo en /var/lib/migasfree/FQDN/conf/settings.py la siguiente instrucción:

MIGASFREE_INVALID_UUID.extend( my_invalid_UUIDs )

donde my_invalid_UUIDs es una lista de UUIDs invalidos.

Ejemplo:

MIGASFREE_INVALID_UUID.extend( ["00000000-FFFF-FFFF-FFFF-FFFFFFFFFFFF",] )

MIGASFREE_NOTIFY_NEW_COMPUTER

Valor por defecto = False

Si se asigna a True, el sistema añadirá una Notificación cuando un cliente migasfree se registra en el servidor por primera vez.

MIGASFREE_NOTIFY_CHANGE_UUID

Valor por defecto = False

Si se establece a True se creará una Notificación cuando un equipo cambia de UUID.

Esto puede ocurrir en contadas ocasiones y está relacionado con antiguos clientes de migasfree, UUIDs inválidos, o con cambios de placa base en el ordenador.

MIGASFREE_NOTIFY_CHANGE_NAME

Valor por defecto = False

Si se establece a True, se creará una Notificación cuando se detecta que un ordenador ha cambiado de nombre.

Este ajuste puede resultar útil para detectar UUIDs no únicos.

MIGASFREE_NOTIFY_CHANGE_IP

Valor por defecto = False

Si se establece a True se creará una Notificación cuando un ordenador cambia de ip.

Este ajuste puede resultar útil para detectar UUIDs no únicos.

Nota

No actives este ajuste si tienes ordenadores con IP dinámica, ya que se crearán demasiadas notificaciones irrelevantes.

Ajustes de Django

Los ajustes de Django también pueden ser modificados para adaptar el funcionamiento del servidor añadiendo el ajuste en el fichero /var/lib/migasfree/FQDN/conf/settings.py.

El más importante de este tipo de ajustes es:

DATABASES

Valor por defecto:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'migasfree',
        'USER': 'migasfree',
        'PASSWORD': 'migasfree',
        'HOST': '',
        'PORT': '',
    }
}

EMAIL

Otros ajustes importantes son los relacionados con la configuración del correo electrónico. Se emplean para enviar mensajes a los usuarios y así poder restablecer su contraseña. También se usan para enviar a los administradores notificaciones de errores al correo.

EMAIL_USE_TLS = True
EMAIL_HOST = 'webmail.example.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = "myaccount@example.com"
EMAIL_HOST_PASSWORD = "mypassword"
DEFAULT_FROM_EMAIL = "migasfree-server <noreply@example.com>"

ADMINS = [('John', 'john@example.com'), ('Mary', 'mary@example.com')]

Ajustes del cliente migasfree

Uno no debe adaptarse al cambio, sino crearlo.

—Jorge González Moore

Los ajustes de configuración del cliente migasfree se encuentran en el fichero /etc/migasfree.conf

Sección [client]

Server

Valor por defecto: localhost

Nombre del servidor migasfree contra el que se van a realizar las actualizaciones.

Ejemplo:

Server = 192.168.1.10

Project

Valor por defecto: Se basa en la función de python platform.linux_distribution()

Nombre del proyecto migasfree. Sería el equivalente al nombre que le quieras dar a tu distribución personalizada. Es muy recomendable que configures este ajuste, ya que para algunas distribuciones la función platform.linux_distribution() puede producir versiones diferentes al aumentar de release (CentOS sería un ejemplo de esto).

Ejemplo:

Project = MiDistro-1

Computer_Name

Valor por defecto: Se obtiene de la función de python platform.node()

Nombre del ordenador que se mostrará en migasfree. Si por calquier circunstancia se necesita que el nombre del ordenador no sea el hostname, puedes configurar este ajuste para modificarlo.

Ejemplo:

Computer_Name = PC15403

Debug

Valor por defecto: False

Si se establece a True, la salida de los comandos del cliente mostrará información útil para la depuración.

Ejemplo:

Debug = True

GUI_Verbose

Valor por defecto: True

Indica si aparecen más o menos mensajes en el Intefaz Gráfico de Usuario. Si se asigna a False, sólo se mostrarán el primer y último mensaje.

Ejemplo:

GUI_Verbose = False

Auto_Update_Packages

Valor por defecto: True

Determina si al ejecutar migasfree --update se instalan las nuevas versiones de los paquetes ya instalados.

Si se establece este ajuste a False las actualizaciones de paquetes no se producirán al ejecutar migasfree con objeto de que sea el usuario quien decida cuándo quiere realizarlas (siguiendo p.e. la configuración de un gestor de actualizaciones tipo update-manager de Gnome figura 17.1 o ejecutando una actualización desde el front-end del sistema de paquetería).

Este ajuste no afectará en ningún caso a los paquetes a instalar y/o a los paquetes a desinstalar que hubiera definidos en los repositorios de migasfree.

Configuración del Gestor de Actualizaciones.

figura 17.1. Configuración del Gestor de Actualizaciones.

Ejemplo:

Auto_Update_Packages = False

Manage_Devices

Valor por defecto: True

Especifica si en el ordenador se van a administrar impresoras a través del servidor migasfree. Este ajuste está pensado, sobre todo, para aquellos equipos (servidores p.e.) donde ni siguiera cups esté instalado.

Este ajuste está disponible a partir de la versión de cliente 4.17.

Ejemplo:

Manage_Devices = False

Proxy

Valor por defecto: No establecido.

Configuración del proxy.

Ejemplo:

Proxy = 192.168.1.100:8080

Package_Proxy_Cache

Valor por defecto: No establecido.

Permite especificar la dirección de un sistema caché de repositorios como podría ser apt-cacher.

Ejemplo:

Package_Proxy_Cache = 192.168.1.101:1234

Consulta el apartado Servicio de caché de paquetes del capítulo Migasfree en producción.

Sección [packager]

Esta sección se utiliza cuando se suben paquetes al servidor mediante el comando migasfree-upload. Se te pedirá la información que no hayas especificado en estos ajustes.

User

Valor por defecto: No establecido.

Usuario con permisos para subir paquetes al servidor migasfree. Por defecto, la base de dato del servidor migasfree incluye el usuario packager con los permisos adecuados para almacenar paquetes en el servidor.

Ejemplo:

User = packager

Password

Valor por defecto: No establecido.

Contraseña del usuario.

Ejemplo:

Password = packager

Project

Valor por defecto: No establecido.

Indica el nombre del proyecto migasfree al que se van a subir los paquetes.

Ejemplo:

Project = AZLinux-12

Store

Valor por defecto: No establecido.

Almacén en el servidor migasfree donde se guardarán los paquetes. Corresponde al nombre de una carpeta en el servidor donde se situará el Paquete o Conjunto de Paquetes. Puedes ver la lista de almacenes disponibles accediendo a Liberación - Almacenes en la web del servidor migasfree. Si asignas un Almacén que no existe se creará automáticamente al subir el primer paquete.

Ejemplo:

Store = Acme # Sitúa en /var/migasfree/repo/<Project>/STORES/Acme los paquetes.

Variables de entorno

Mediante el uso de variables de entorno podemos modificar también la configuración del cliente migasfree.

MIGASFREE_CONF

Por defecto, el fichero de configuración del cliente migasfree se encuentra en /etc/migasfree.conf pero mediante la variable de entorno MIGASFREE_CONF podemos indicar al cliente que use otro fichero. Esto puede serte útil si tienes que subir paquetes mediante el comando``migasfree-upload`` a distintos servidores migasfree desde la consola.

Ejemplo:

export MIGASFREE_CONF='/etc/migasfree.conf.serverA'
migasfree-upload -f <mipaquete>

Además, todos los ajustes del fichero de configuración del cliente migasfree también pueden ser asignados mediante variables de entorno, siendo estas variables prioritarias frente a los ajustes del fichero de configuración:

MIGASFREE_CLIENT_SERVER

MIGASFREE_CLIENT_PROJECT

MIGASFREE_CLIENT_COMPUTER_NAME

MIGASFREE_CLIENT_DEBUG

MIGASFREE_CLIENT_GUI_VERBOSE

MIGASFREE_CLIENT_AUTO_UPDATE_PACKAGES

MIGASFREE_CLIENT_MANAGE_DEVICES

MIGASFREE_PROXY

MIGASFREE_CLIENT_PACKAGE_PROXY_CACHE

MIGASFREE_PACKAGER_USER

MIGASFREE_PACKAGER_PASSWORD

MIGASFREE_PACKAGER_PROJECT

MIGASFREE_PACKAGER_STORE

Como ejemplo de uso de las variables de entorno, imagina un escenario en el cual tienes un servidor migasfree y muchos centros en los que en cada uno de ellos hay un servicio de caché de paquetes para minimizar el tráfico de Internet. Para configurar cada equipo, deberías tener un paquete de configuración del cliente migasfree por cada centro, pero si tienes muchos centros esto puede resultar costoso. Una solución podría ser tener un sólo paquete de configuración del cliente migasfree para todos los centros y, en la postinstalación del paquete, crear las variables de entorno necesarias en función de la etiqueta del centro.

# Codigo de ejemplo postinst acme-migasfree-client

TAGS=`migasfree-tags -g`
for CENTRO in $TAGS
do
  if [ $CENTRO = "CTR-DELEGACION-BARCELONA" ]; then
    echo "MIGASFREE_CLIENT_PACKAGE_PROXY_CACHE='192.168.96.6:3142'" > /etc/profile.d/migasfree.sh
  fi
  if [ $CENTRO = "CTR-DELEGACION-MADRID" ]; then
    echo ""MIGASFREE_CLIENT_PACKAGE_PROXY_CACHE='192.168.80.4:3142'" > /etc/profile.d/migasfree.sh
  fi
done