Inventory Libre

De GuiaMigraciones

Contenido

Inventory Libre

Introducción

Buena parte de las Administraciones Públicas involucradas en el proyecto no disponen de un inventario de hardware exhaustivo. Tampoco disponen de control total sobre el software que se instala en ellos, pues no disponen de la tecnología necesaria para impedir que los usuarios instalen aplicaciones si así lo desean. La situación descrita no es homogénea. En algunas de las administraciones estudiadas este fenómeno tiene menos impacto que en otras. Así, se hace imprescindible realizar un inventario completo por las siguientes razones:

  1. Es necesario conocer el hardware con detalle para saber que rendimiento pueden obtener los equipos con la distribución de software a implantar.
  2. Es necesario predecir el rendimiento de la máquina con el nuevo software.
  3. Es necesario conocer con mucho detalle los periféricos que utilizan los usuarios.
  4. En ocasiones los equipos disponen de componentes instalados que no están a la vista de los usuarios.
  5. Es importante poder conocer los drivers que deben incluirse en la nueva distribución software a implantar.
  6. Se necesita conocer las configuraciones relacionadas con la resolución de la pantalla, teclados y ratón pues son variables.

Las Administraciones Públicas y las grandes corporaciones disponen de un parque heterogéneo de equipos conectados en red. Asimismo, las aplicaciones instaladas suelen variar tremendamente en función de su organización funcional y distribución geográfica.

Teniendo en cuenta estos antecedentes, se concluyó que existe la necesidad de desarrollar un sistema de inventario que permita conocer información clave de cada equipo, tanto en el apartado hardware como software, a gran escala.

Requisitos

Los requerimientos establecidos son los siguientes:

  1. Sistema de inventario a gran escala: escalabilidad
  2. Sistema no invasivo. Sistema Done&Go
  3. Rapidez
  4. Flexibilidad
  5. Respuesta ante varios escenarios de equipos conectados en red a través de cable.
  6. Independencia de la infraestructura del cliente. Sistema autónomo.
  7. Bajo requerimiento en cuanto a los conocimientos técnicos de los ejecutores.

Objetivos

El principal objetivo del sistema es poder realizar inventarios de hardware y software instalado, además de la obtención de información adicional, a través de un sistema rápido y limpio para entornos heterogéneos con un gran número de equipos conectados en red a través de cable. Este sistema no debe instalar software alguno en las máquinas pues eso requeriría, no sólo un tiempo importante de instalación, sino la modificación de contratos de mantenimiento o la necesaria intervención de terceros, encargados del mantenimiento del sistema instalado que se pretende migrar.

Este sistema permite la realización de inventarios de cientos de máquinas en cuestión de horas, obteniendo gran cantidad de información en formato estándar para su posterior procesado en función de las necesidades del cliente. Asimismo el personal requerido para la ejecución de Inventory Libre no requiere una alta cualificación técnica en buena parte de sus actores, lo que confiere al programa una rentabilidad mayor si cabe. La principal dificultad de la realización de los inventarios radica en la necesidad de arrancar los clientes con un sistema linux. Para ello, debe utilizarse cualquiera de los muchos sistemas presentes en el mercado que cumpla una serie de requisitos que serán desarrollados con posterioridad.

Descripción del sistema

Definición de Inventory Libre

Inventory Libre es un conjunto de programas, scripts y procedimientos orientados a la realización de inventarios de hardware y software a gran escala para equipos conectados en red sin instalación de agente o programa alguno en los equipos a inventariar. Inventory Libre (en adelante IL1.0) se inocula en un cliente, que ha arrancado un sistema linux (a través de LTSP o Live CD), desde un servidor, se ejecuta en el cliente recogiendo la información necesaria y la almacena en dicho servidor. Posteriormente se produce un apagado semiautomático de los equipos clientes debido a requerimientos de trabajo (no por razones técnicas).

Actualmente el desarrollo ha llegado a su versión 2.0 que se explicará más adelante en este documento. Todos los programas utilizados, son software libre. Los scripts y la documentación desarrollada se publican igualmente con licencias libres.

Componentes de Inventory Libre

Inventory Libre se compone de los siguientes elementos:

  1. Actores
  2. Procedimientos
  3. Scripts
  4. Programas
  5. Servidor
  6. Cliente

Actores

Para la ejecución del inventario se han definido tres roles diferentes que, de manera coordinada, pueden ejercer una o más personas. Con el fin de identificarlos claramente en la documentación, se le han asignado nombres concretos. Estos roles son:

  1. Pinche: técnico encargado del arranque y apagado de clientes a inventariar.
  2. Escriba: técnico encargado apuntar la mac de los equipos en la aplicación y en referencia en plano. Su función es la de controlar el proceso de arranque y apagado, asegurando que todos los equipos se inventarien.
  3. Chef: técnico encargado de controlar el sistema de inventario desde el servidor.

En general, la ejecución de inventarios se ha realizado utilizando a una persona para cada rol, salvo en inventarios a gran escala.

Procedimientos

Procedimiento a seguir para iniciar el inventario, si falla el procedimiento a causa de hardware antiguo o problema similar se seguirá el procedimiento alternativo.

Scripts

Scripts que realizan el procedimiento ordenado y automático del inventariado.

Programas

Software del sistema que analizan el hardware.

Servidor

Máquina VirtualBox o Máquina física con Debian Lenny o Ubuntu - Dirección IP 172.16.23.254/23 - Servidor web con soporte a php - PostgreSQL - Métodos PHP


En /var/www/servidor se encuentran los script PHP que hace uso inventory.py

En /usr/share/inventory se encuentran los scripts de inventariado.

En /usr/bin/ se encuentra el ejecutable inventory-client que ejecuta todo el inventariado


Se usa una BD PostgreSQL llamada Inventory


En php.ini tienen que estar desactivados los notices,warnings... ya que la clase php que se utiliza para acceder a postgreSQL no los admite.

Ubicación ejecutables:

/sbin/parted

/usr/sbin/dmidecode

/usr/sbin/hwinfo

/usr/bin/lspci

/bin/mount

/bin/umount

/usr/bin/find

/bin/grep

/bin/dmesg

Cliente

LiveCD Ubuntu

Configuración TCP/IP por DHCP al servidor (IP 172.16.23.254/23)

Autologin del usuario ubuntu

Paquetes extras:

python

python-soappy

hwinfo

¿Cómo funciona Inventory Libre?

Descripción funcional general

El funcionamiento básico de IL1.0 puede describirse de la forma siguiente:

IL1.0 es un sistema residente en una máquina virtual (instalada en un equipo portátil en nuestro caso) basado inicialmente en LTSP 4.2 (www.ltsp.org), que se conecta a la red de la sede a inventariar. Un vez conectado y comprobado su funcionamiento, se arrancan los equipos a inventariar como clientes LSTP a través de cualquiera de los métodos sugeridos en por los proyectos Etherboot o gpxe. Un vez arrancado el cliente, el servidor le envía un sistema básico LTSP sobre el que se han realizado una serie de modificaciones para la realización del inventario a través de unos scripts que llaman a programas básicos y conocidos de GNU/Linux que portan información sobre el sistema, además de obtener el árbol de directorios de las particiones Windows del sistema. La información obtenida, se almacena en el servidor en archivos de texto, para su posterior procesamiento y análisis.

Puesto que existen equipos cuyo hardware genera problemas en alguno de los pasos enumerados antes, se establecen diferentes formas de arrancar los equipos. Algunas de ellas requieren un proceso de inoculación de los scripts y posterior almacenamiento de la información en el servidor distinto al establecido por defecto. Estos casos extraordinarios son difícilmente predecibles, tanto en sus causas como en las acciones a tomar para su inventariado. Se describen algunos procedimientos utilizados en estos casos particulares.

Posteriormente se ha desarollado la versión 2.0 que comentaremos en más detalle a continuación. Ya que el procedimiento cambia.

El servidor Inventory Libre

  1. Arranque de equipos como clientes ligeros
  2. Los equipos a inventariar son arrancados como clientes ligeros siguiendo varios métodos. Los principales son:
    1. Arranque PXE
    2. Arranque a través de diskette, CD o USB utilizando gpxe

Si el sistema reconoce la tarjeta de red y puede asignarle el driver adecuado, el equipo cliente cargará en memoria el sistema LTSP antes de ejecutar los scripts que llaman a los programas utilizados para la obtención de información.

Si el sistema no reconoce el chip de la tarjeta de red o no puede adjudicarle un driver adecuado, el equipo será arrancado utilizando una distribución live, bien a través de CD o de usb, preferiblemente. Con el fin de que sea posible inocular Inventory Libre en estos equipos clientes, se levantará el servidor ssh del cliente. Si no estuviera presente el paquete, será instalado. (Comentario) Un análisis detallado de los procedimientos descubrirá que este apartado es el más complejo. Si bien Inventory Libre no tiene que ver directamente con él, aportamos información a este respecto basada en la experiencia adquirida en la realización de diversos inventarios.

El funcionamiento básico de IL2.0 puede describirse de la forma siguiente:

  1. Está basado en una comunicación cliente-servidor mediante Webservices, esto lo hacemos gracias al protocolo SOAP.
  2. La parte que actúa como servidor está hecha en PHP con la ayuda de la librería nusoap.
  3. La parte cliente está hecha en Python, con la ayuda de varias librerías, destacando SOAPpy para la comunicación con el servidor.
  4. El sistema está formado por varios scripts en el cliente que extraen información del hardware del sistema, software y aporta información de las particiones de windows. Toda esta información se almacena en una Base de datos PostgreSQL en el servidor.
  5. La red será una subred de clase B para admitir un total de 510 hosts:
    1. Dirección de red: 172.16.22.0
    2. Máscara de subred: 255.255.254.0
    3. Dirección de broadcast: 172.16.23.255
    4. Rango de Hosts: 172.16.22.1 - 172.16.23.254

Detección de discos:

el LiveCD tiene que detectar que NO montar los discos duros, ya que es un paso del procedimiento de inventariado sacar información del disco duro y distintas particiones.

GDM:

Inicia liveCD sin modo gráfico pero ofrece la posibilidad de lanzarlo.

Ejecución del sistema Inventory Libre

Versión 1.0

Una vez arrancados los clientes, el sistema que se carga ha sido modificado para que, en lugar de conectarse a un servidor X, se ejecuten una serie de scripts que llaman a unos programas que realizan las siguientes actividades:

  1. Se obtiene información relevante sobre el hardware del equipo.
  2. Se montan los discos duros presentes. Reconocen las particiones Windows
  3. Se realiza un escaneado del árbol de directorios de las particiones Windows
  4. Se almacena la información en el servidor siguiendo una nomenclatura preestablecida.
  5. Muestran por pantalla la MAC del equipo para ser apuntada.
  6. Se comprueba que la información ha sido debidamente almacenada.
  7. Algunos de los programas necesarios no se encuentran por defecto en el sistema LTSP básico, por lo que han sido incluidos expresamente para este sistema. Asimismo, se han realizado algunas configuraciones en el sistema básico LTSP para adaptarlo a los requerimientos. Todas estas acciones están procedimentadas asumiendo la participación en el inventario de tres actores o personas (ver apartado correspondiente).

Versión 2.0

El modo de ejecución del sistema IL2.0 es el siguiente:

  1. Se introduce un cd en sistema.
  2. Arranca una live-cd sin sistema gráfico.
  3. En el proceso de arranque la live-cd pide al servidor una ip mediante DHCP.
  4. Una vez tenemos ip, el sistema hace autologin del usuario ubuntu. Éste usuario tiene privilegios de administrador.
  5. Una vez hecho autologin, ejecutamos el script de inventariado con el comando “sudo inventory-client”, el sistema ejecuta el script "inventory.py" que comienza con un requerimiento de tag_pc para el sistema, que se mostrará por pantalla. A continuación el sistema comienza a inventariar mediante Python y el uso de comandos propios de Linux (hwinfo,lspci,parted...) parseando las salidas de esos comandos mediante Regex (Expresiones Regulares). Con los resultados de esos "parseos" se obtienen estructuras de datos que se pasan a los métodos mediante SOAP en el servidor que los almacena en base de datos.
  6. Los resultados de estos procesos se irán mostrando por pantalla.


Procedimientos asociados a Inventory Libre

Procedimiento general

A continuación se enumeran los procedimientos relacionados con la realización de un inventario tipo en el que participan los tres actores descritos. Se recomienda seguir el procedimiento de manera estricta:

Versión IL1.0

  1. Revisión del material adecuado.
  2. Inicio de inventariado
  3. Arranque de clientes por ltsp
    1. Arranque clientes ltsp para el chef
  4. Chequeo de recepción de datos procedentes del sistema.
    1. Control de equipos por escriba.
    2. Fallo de cliente ltsp.
      1. Arranque de clientes con live cd
      2. Procedimiento Inoculación del gusano
        1. Live cd desde el punto de vista del chef
        2. Live cd sin entorno gráfico
      3. Chequeo de recepción de datos procedentes del sistema.
  5. Inventariado equipos
  6. Revisión de inventarios por chef.
  7. Apagado
  8. Cierre.

Versión IL2.0

  1. Revisión del material adecuado.
  2. Inicio de inventariado.
  3. Arranque de clientes con LiveCD Inventory
    1. Arranque clientes por pinche.
  4. Chequeo de recepción de datos procedentes del sistema.
    1. Control de equipos por escriba.
    2. Fallo de LiveCD Inventory.
      1. Arranque de clientes con live cd Opensuse o Knoppix
      2. Procedimiento ejecución de ejecutables (hwinfo...)
        1. Almacenar datos obtenidos para posterior subida al servidor
    3. Chequeo de recepción de datos procedentes del sistema.
  5. Inventariado equipos
  6. Revisión de inventarios por chef.
  7. Apagado
  8. Cierre.

Pruebas Realizadas

Inventory Libre ha sido probado con éxito en dos proyectos relevantes de migración a software libre.:

  1. Proyecto de Migración a Software Libre de la Mancomunidad Costa del Sol Oriental - La Axarquía.
  2. Proyecto de Migración de la Consejería de Economía, Comercio e Innovación de la Junta de Extremadura, dentro del concurso Toma de datos, análisis y asignación de entorno operativo para los puestos clientes.
  3. Para el primer proyecto, se han realizado inventarios utilizando Inventory Libre en las siguientes administraciones públicas:
    1. Ayto. Totalán
    2. Mancomunidad de la Axarquía (Torre del Mar)
    3. Ayto. Almáchar
    4. Ayto. Periana
    5. Ayto Moclinejo
    6. Ayto Rincón de La Victoria

Indice de error

El 13% de los ordenadores inventariados dio errores diversos y tuvo que procederse a inventariados con LiveCD Knoppix o LiveCD Opensuse. Para ello una vez iniciado con el LiveCD y lanzar los comandos que analizan el sistema y están incluidos en los script. Una vez extraída la información necesaria se debe hacer la inserción en la Base de datos.

Estos errores han servido para depurar todo el sistema de inventariado.

Módulos adicionales

Visitas de uso

Módulo adicional a IL que complementa la información sobre la entidad analizada, concretamente aporta información sobre cada departamento y sus distintos usuarios,equipos,periféricos.

Pudiendo así reflejar información sobre que software se usa realmente en cada equipo , que equipos usa cada usuario, que periféricos usa...

La visita de uso es necesaria para extraer la información real de cada puesto, la información software que se extrae del inventariado puede estar obsoleta y no ser usada realmente por el equipo, por lo que la visita de uso complementa la información obtenida por el inventariado.

La visita de uso se hará en modo de entrevista usuario por usuario y todos los datos obtenidos se almacenarán en la base de datos Inventory. La forma de almacenar la información en la base de datos es a través de los formularios que aporta el módulo Visitas de uso.

Dicho módulo estará instalado en el servidor.

Puede descargar el manual de uso del módulo de visita de uso:


Manual_modulo_visitas_de_uso.pdf (tamaño de archivo: 1,17 MB; tipo MIME: application/pdf)

Screenshots

Descargar

Descargar Rama completa del proyecto desde launchpad

- Teniendo instalado el paquete bzr(sudo apt-get install):

bzr branch lp:inventory 

Imágenes Preparadas

Client ISO: http://inventory.migramos.org/inventory-client.iso

Server Virtualbox machine: http://inventory.migramos.org/inventory-libre-server-debian.vdi.gz

Manuales

Manual_modulo_visitas_de_uso.pdf (tamaño de archivo: 1,17 MB; tipo MIME: application/pdf)

Guia_de_puesta_en_marcha.pdf (tamaño de archivo: 59 KB; tipo MIME: application/pdf)

Liberación

Inventory Libre y su módulo de visitas de Uso han sido liberados desde su versión 2.0 en Launchpad bajo licencia GNU GPL v2.

https://launchpad.net/inventory

Launchpad  es una aplicación web y un sitio web que apoya el desarrollo de software,
en particular el de software libre. Está desarrollada y mantenida por Canonical Ltd..
La Licencia Pública General de GNU o más conocida por su nombre en inglés GNU General Public License 
o simplemente sus siglas del inglés GNU GPL, es una licencia creada por la Free Software Foundation
en 1989 (la primera versión), y está orientada principalmente a proteger la libre distribución, modificación y 
uso de software. Su propósito es declarar que el software cubierto por esta licencia es software libre y protegerlo
de intentos de apropiación que restrinjan esas libertades a los usuarios.

Instalación

1.-Instalación base ubuntu

libpq5 postgresql-8.3 postgresql-client-8.3 postgresql-client-common postgresql-common
apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 libapr1
libaprutil1 libmysqlclient15off mysql-common php5-common php5-pgsql
phppgadmin postgresql-doc postgresql-doc-8.3


postgresql-8.3 phppgadmin

2.- Ejecutar:

cp -r visitasdeuso /var/www/

cp -r servidor /var/www/

chmod -R 744 /var/www/visitasdeuso/

chown -R www-data /var/www/visitasdeuso/

chmod -R 744 /var/www/servidor/

chown -R www-data /var/www/servidor/

gzip -d sql-schema/dump.sql.gz

chown postgres sql-schema/dump.sql

mkdir -p /usr/share/inventory/tmp

mkdir -p /usr/share/inventory/files

chown www-data /usr/share/inventory/files/

chown www-data /usr/share/inventory/tmp/

3.-Creación bd postgresql:

su postgres

createdb inventory

4.-volcado de datos sql:

psql inventory < dump.sql

exit

5.- sed -i 's/md5/trust/g' /etc/postgresql/8.3/main/pg_hba.conf

gedit /etc/php5/apache2/php.ini

Buscamos la linea 313 y la descomentamos quitando el ;    ;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 
Buscamos la linea 317 y la comentamos con ;     error_reporting  =  E_ALL & ~E_NOTICE

gedit /etc/phppgadmin/config.inc.php

Buscamos la linea 73 y cambiamos el valor true por false $conf['extra_login_security'] = true;
$conf['extra_login_security'] = false;

7.-

/etc/init.d/postgresql-8.3 restart

/etc/init.d/apache2 restart

8.- Y por último accedemos a para gestionar la aplicación de visitas de uso:

http://localhost/visitasdeuso

Si queremos editar tablas en la base de datos accedemos a :

http://localhost/phppgadmin

9.-

apt-get install dhcp3-server

echo INTERFACES=\"eth0\" > /etc/default/dhcp3-server

echo "subnet 172.16.22.0 netmask 255.255.254.0 {

option subnet-mask 255.255.254.0;

default-lease-time 3600;

max-lease-time 7200;

range dynamic-bootp 172.16.22.1 172.16.23.253;

option broadcast-address 172.16.23.255; } " > /etc/dhcp3/dhcpd.conf

/etc/init.d/dhcp3-server restart

10.-

Asignar ip estática 172.16.23.254 255.255.254.0

Paquetes extras:

dhcpd

python

python-soappy

hwinfo

apache

postgresql

python-xml

Procedimiento de puesta en marcha

El sistema de inventariado consta de una arquitectura cliente-servidor. El servidor se encuentra en un equipo con Ubuntu instalado y que habremos instalado según los pasos descritos anteriormente . El cliente se encuentra en forma de LiveCD y con nombre Inventory-client.iso


Tanto cliente como servidor deben estar en el mismo rango de IP, y debemos conocer la IP que asignamos al servidor. Para ello en el procedimiento de instalación del servidor le asignamos la IP 172.16.23.254/23 . El cliente hace una petición DHCP para poder tener red por lo que es necesario que se deshabiliten todos los DHCP de la red y pueda comunicarse exclusivamente con el servidor.


El servidor tiene los siguientes usuarios:

Usuario: inventory → Contraseña: emergya Usuario: root → Contraseña: emergya


Iniciamos el equipo cliente con el LiveCD que hayamos grabado desde la imagen Inventory-client.iso


Una vez configuradas las interfaces de red de cliente y servidor para que se encuentren en la misma red podemos hacer un ping desde el cliente al servidor para verificar la conectividad entre ambos.

Ejecutamos: ping 172.16.23.254



Si necesitamos modificar los ficheros de configuración para indicar al cliente que dirección IP tiene el servidor, dichos ficheros se encuentran en /usr/share/inventory/ . Aunque esto no debería de ser necesario si hemos configurado la red tal y como se ha indicado anteriormente.

Abrir el fichero inventoryLibre.py linea 414 y sustituir la IP por la que corresponda al servidor.

Abrir el fichero inventory.py linea 10 y sustituir la IP por la que corresponda al servidor.


Ejecutamos:

sudo inventory-client y ya comienza el inventariado.


Una vez concluido el proceso de inventariado, deberemos de asignar ese pc a su correspondiente departamento. Para ello, nos dirijimos a http://ipservidor/visitasdeuso

Suponiendo que ya esten creadas las entidades, sedes y departamentos. Nos dirijimos a la sección "MAC inventario", pulsamos en "Menu edición" y seleccionamos el departamento al que queremos asignar el pc inventariado. A continuación, escribimos en TAG_PC el TAG que nos mostró el cliente durante el proceso de inventariado y pulsamos en "Guardar cambios".

Ya esta asignado el pc cuyo TAG hemos indicado a su departamento correspondiente.

Archivo:Puesta en marcha inventory libre 2.0.odt

Inglés
El artículo que pides no existe en Inglés.
Mancomunidad de Municipios Costa del Sol - Axarquia
Herramientas personales