OCS Inventory para mantener el inventario de nuestros equipos

Estoy buscando una manera automatizada de hacer y mantener un inventario de todo el hardware y el software que usamos en mi organización. En mi etapa como consultor usé iTop para llevar el inventario más o menos organizado de todo el hardware que vendía a mis clientes, pero la experiencia con él me ha llevado a buscar algo más ágil y automatizado. Y es así como he llegado a OCS Inventory.

¿Qué es OCS Inventory y qué hace?

OCS Inventory (en adelante OCS) es un software libre que nos va a ayudar a hacer el inventario del hardware y software de nuestros equipos. Con OCS no sólo vamos a poder capturar información de nuestros equipos sino que podremos crear configuraciones que luego podremos desplegar. Además, OCS puede intgrarse con GLPI para automatizar la sección de inventario.

OCS se basa en 4 servicios que podemos montar en un solo equipo o distribuitrlos en varios. Estos servicios son :

  • El servicio de base de datos es el encargado de almacenar los datos del inventario.
  • El servicio de comunicaciones gestiona las comunicaciones a través de HTTP entre el servicio de base de datos y los agentes instalados en los equipos.
  • La consola de administración permite a los administradores acceder a los datos del inventario a través de un interface web.
  • El servicio de despliegue almacena las configuraciones que después se desplegarán en los equipos.

Si vamos a gestionaar por encima de 1000 agentes, se recomienda instalarlo de manera distribuida para equilibrar la carga. En mi caso, voy a instalarlo todo en el mismo equipo ya que no tengo tantos agentes.

Prerrequisitos

Voy a instalar OCS Inventory en un equipo que ejecuta Ubuntu 16.04. Este equipo dispone de la IP 192.168.56.21. De acuerdo a lo especificado en la documentación, detallo la lista de paquetes que vamos a necesitar. Al final de la lista he añadido otros paquetes que son necesarios aunque no se especifiquen en la documentación.

  • MySQL.
  • Apache.
  • Módulo de Apache mod_perl y sus archivos de desarrollo.
  • PHP con el módulo zip.
  • Módulo de Apache mod_php.
  • PERL.
  • Módulos de  Perl  :
    • XML::Simple.
    • Compress::Zlib.
    • DBI.
    • DBD::Mysql.
    • Apache::DBI.
    • Net::IP.
    • Archive::Zip
    • Apache2:SOAP
    • SOAP::Lite.
    • XML::Entities.
  • Otros paquetes no listados en la documentación oficial de  OCS.
    • El paquete Build Essentials que necesitaremos para compilar los módulos de Perl que no vienen paquetizados para Ubuntu.
    • Módulos de PHP mbstring, mysql, gd, soap, xml y curl.
    • unzip

Para instalar la mayoría de paquetes, usaremos primero apt.

apt-get install mysql-server perl apache2 libapache2-mod-perl2 libapache2-mod-perl2-dev libapache2-mod-php php php-cli php-zip libxml-simple-perl libdbi-perl libdbd-mysql-perl libapache-dbi-perl libnet-ip-perl libsoap-lite-perl build-essential libyaml-perl php-mbstring php-gd php-mysql php-soap php-xml php-curl unzip

Durante la instalación se nos pedirá que creemos la contraseña para que el usuario root pueda acceder al MySQL. La teclearemos dos veces y la instalación continuará.

Diálogo para crear la contraseña del root en MySQL

Una vez finalizada la instalación de paquetes, vamos a utilizar la herramienta cpan para descargar, compilar e instalar los módulos de Perl que nos faltan. Es necesario que el paquete Build Essentials esté instalado ya que nos proporciona un compilador y la herramienta make.

cpan -i XML::Entities Compress::Zlib Archive::Zip Apache2::SOAP

Si es la primera vez que ejecutamos el comando cpan, se nos preguntará

Would you like to configure as much as possible automatically? [yes]

Pulsamos intro para continuar y se ajustarán todos los parámetros de manera automática. Una vez instalados todos los módulos de Perl necesitamos configurar la base de datos. Para ello ejecutamos el cliente MySQL con el comando :

mysql -p

Tecleamos la contraseña que hemos creado anteriormente y accederemos a la consola. Para crear la base de datos y darle los permisos necesarios teclearemos (respetando los punto y coma finales):

create database ocsinventory;
grant select, insert, update, delete, create, drop, references, index, alter, create, lock tables on ocsinventory.* to ocsiuser@localhost identified by 'Ajwedzsd2esdw'
flush privileges;
quit

Vamos a configurar Apache para que atienda peticiones https con un certificado autogenerado. Para hacerlo, lo primero es generar el certificado. Este certificado contiene también la clave pública.

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/ocs.crt

Durante el proceso de generación nos pedirá por un lado el commonName, en el que indicaremos el nombre canónico (FQDN) del servidor. En mi caso tecleo ocs.virtual y le doy al botón Aceptar.

Ventana en la que indicamos el nombre canónico (FQDN) del equipo.

Después introducimos otros nombres, direcciones IP o URLs para los que va a servidor este certificado. Como sólo lo voy a usar en local y por IP, nada más voy a definir el valor IP:192.168.56.21. Pulso Aceptar para finalizar la generación del certificado.

Ventana en la que definimos nombres adicionales para el certificado digital

Ahora ya podemos editar el archivo del dominio virtual SSL por defecto para que cargue nuestro certificado autogenerado. Editamos el archivo /etc/apache2/sites-available/default-ssl.conf y localizamos las líneas

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

A la línea que empieza por SSLCertificateFile le cambiamos la ruta del certificado por la de nuestro certificado autogenerado quedando :

SSLCertificateFile /etc/ssl/private/ocs.crt

Y la línea que empieza por SSLCertificateKeyFile la comentamos añadiendo el carácter # al inicio de la misma, quedando de la siguiente forma :

# SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Vamos a añadir una configuración de directorio para que no permita listar ficheros en caso de que no exista el fichero index.html. Esta configuración la hemos de añadir al final, siempre antes de la etiqueta </VirtualHost>

<Directory /var/www/html>
 Options -Indexes
</Directory>

Finalmente, voy a añadir un par de redirecciones que me llevarán siempre a la página de validación de usuario en caso de intentar aceder a una página que no existe o un directorio vacío. Estas directovas deben añadirse  -igual que en el caso anterior- antes de la etiqueta </VirtualHost>.

ErrorDocument 403 https://192.168.56.21/ocsreports/index.php
ErrorDocument 404 https://192.168.56.21/ocsreports/index.php

Guardamos y salimos. Activamos el módulo SSL de Apache y el dominio virtual por defecto con SSL :

a2enmod ssl
a2ensite default-ssl

Vamos a forzar a Apache que redireccione todas las peticiones http a https. Para hacerlo, editamos el archivo /etc/apache2/sites-available/000-default.conf y lo modificamos para que quede de la siguiente manera :

<VirtualHost *:80>
    RewriteEngine on
    RewriteCond %{SERVER_ADDR} =192.168.56.21
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
 </VirtualHost>

Guardamos la configuración y salimos del editor. Sólo nos queda eliminar el archivo index.html de la raiz del dominio virtual y  reiniciar Apache para que cargue las nuevas configuraciones.

rm /var/www/html/index.html
service apache2 restart

Instalación y configuración de OCS

Descargamos los paquetes de OCS. Podemos hacerlo directamente desde GitHub o ir a la web de OCS y buscar el menú de descarga que nos permitará descargar el paquete desde GitHub. Nosotros hemos descargado directamente de GitHub. Descomprimimos y movemos la carpeta a la ruta /opt. La carpeta que estamos descargando va a ser en la que vamos a trabajar.

 cd /tmp
 wget -c https://github.com/OCSInventory-NG/OCSInventory-Server/archive/master.zip -O Server.zip
 wget -c https://github.com/OCSInventory-NG/OCSInventory-ocsreports/archive/master.zip -O OCS-Reports.zip
 unzip Server.zip
 unzip OCS-Reports.zip
 mv OCSInventory-ocsreports-master ./OCSInventory-Server-master/ocsreports
 cd OCSInventory-Server-master

Ejecutamos el fichero de instalación

./setup.sh

El proceso de instalación nos va a ir haciendo una serie de preguntas que debemos ir respondiendo. Todas las preguntas tienen un valor por defecto que en la mayoría de casos nos va a servir. He indicado con [intro] que aceptamos la opción por defecto. Entre pregunta y pregunta podremos visualizar cierta información sobre la configuración o  los procesos que lleva a cabo. Yo la omito para que no se haga muy largo.

Do you wish to continue ([y]/n)? [intro]
Which host is running database server [localhost] ? [intro]
On which port is running database server [3306] ? [intro]
Where is Apache daemon binary [/usr/sbin/apache2ctl] ? [intro]
Where is Apache main configuration file [/etc/apache2/apache2.conf] ? [intro]
Which user account is running Apache web server [www-data] ? [intro]
Which user group is running Apache web server [www-data] ? [intro]
Where is Apache Include configuration directory [/etc/apache2/conf-available] ? [intro]
Where is PERL interpreter binary [/usr/bin/perl] ? [intro]
Do you wish to setup Communication server on this computer ([y]/n)? [intro]
Where to put Communication server log directory [/var/log/ocsinventory-server] ? [intro]
Where to put Communication server plugins configuration files [/etc/ocsinventory-server/plugins] ? [intro]
Where to put Communication server plugins Perl modules files [/etc/ocsinventory-server/perl] ? [intro]
Do you wish to setup Rest API server on this computer ([y]/n)? n
To ensure Apache loads mod_perl before OCS Inventory NG Communication Server, Setup can name Communication Server Apache configuration file 'z-ocsinventory-server.conf' instead of 'ocsinventory-server.conf'. Do you allow Setup renaming Communication Server Apache configuration file to 'z-ocsinventory-server.conf' ([y]/n) ? [intro]
Do you wish to setup Administration Server (Web Administration Console) on this computer ([y]/n)? [intro]
If you choose to move directory, YOU MUST MOVE 'download' directory to Administration Server writable/cache directory (by default /var/lib/ocsinventory-reports), especially if you use deployment feature. Do you wish to continue ([y]/n)? [intro]
Where to copy Administration Server static files for PHP Web Console [/usr/share/ocsinventory-reports] ? [intro]
Where to create writable/cache directories for deployment packages, administration console logs, IPDiscover and SNMP [/var/lib/ocsinventory-reports] ? [intro]

Una vez finalizada la instalación, necesitamos activar las configuraciones de OCS para Apache. En nuestro caso son las del OCS Reports para conectarnos vía web y el servidor OCS que permite que los agentes envíen sus configuraciones al servidor de manera automatizada. Lo hacemos ejecutando los comandos :

a2enconf ocsinventory-reports
a2enconf z-ocsinventory-server
service apache2 restart

Cambiamos los permisos de la carpeta /var/lib/ocsinventory-reports para que el grupo que ejecuta Apache pueda acceder.

chgrp www-data /var/lib/ocsinventory-reports -fR
chmod 775 /var/lib/ocsinventory-reports -fR

Es momento de abrir el navegador y conectar a la consola web de administración. En mi caso, la dirección a la que accederé es http://192.168.56.21/ocsreports. Se nos pedirán los datos de la base de datos para poder cargar las tablas y los datos maestros. Se los proporcionamos y pulsamos el botón Send.

Configuración de los datos para la creación de tablas

Tras la creación de las tablas y los datos maestros ya podemos acceder a la pantalla de acceso aunque aún queda cambiar la configuración de la base de datos por defecto. Para ello necesitamos editar el fichero /etc/apache2/conf-available/z-ocsinventory-server.conf dejando las directivas de configuración de la base de datos tal y como se especifica a continuación :

PerlSetEnv OCS_DB_NAME ocsinventory
PerlSetEnv OCS_DB_LOCAL ocsinventory
PerlSetEnv OCS_DB_USER ocsiuser
PerlSetVar OCS_DB_PWD Ajwedzsd2esdw

Finalmente, eliminaremos el fichero de instalación de la carpeta web y recargaremos de nuevo Apache para use la nueva configuración de bases de datos.

rm /usr/share/ocsinventory-reports/ocsreports/install.php
service apache2 reload

Ahora ya podemos acceder a la consola de administración. El usuario por defecto es admin y la contraseña admin.

Acceso a OCS Inventory Reports

Instalación del agente OCS

El agente lo voy a instalar en un equipo Windows 10. Para poder descargar el ejecutable, debemos ir a la sección de descargas de la web de OCS Inventory y selecccionar el agente para Windows. Tras dejar nuestro correo electrónico en el formulario, podremos acceder al paquete binario listo para ser descargado e instalado en Windows.

Una vez descomprimido, ejecutamos el instalador llamado OCSNG-Windows-Agent-2.3.1.1.

 de instalación de OCS Inventory Agent para Windows
Se nos pedirá si permitimos que el agente OCS haga cambios en el dispositivo. Indicamos que para continuar.

Ventana para autorizar la instalación del agente OCS

 

Se inicia el asistente de instalación del agente. Hacemos clic en Next para iniciar.

Ventana de inicio del asistene de instalación del agente de OCS

Hemos de aceptar los términos y condiciones antes de proceder a la instalación. Hacemos clic en el botón I Agree para continuar.

Ventana de aceptación de la licencia del agente OCS

Seleccionamos los paquetes que queremos instalar de las opciones que dispone el agente. Dejaremos desactivada la opción Local inventory ya que nuestra intención es que se conecte a nuestro servidor de inventario. Pulsando Next avanzamos al siguiente paso.

Ventana donde debemos seleccionar los módulos de OCS que vamos a instalar.

Configuramos la URL del servidor al que el agente enviará la información. En nuestro caso es https://192.168.56.21/ocsinventory. No es necesario usuario ni contraseña para comunicar inventarios. Desmarcaremos la opción Validate Certificates. Si no lo desmarcamos fallará la conexión al no haber generado e instalado en el cliente un certificado de Autoridad de Certificación para nuestro servidor (CA). Hacemos clic en Next para continuar.

Ventana donde vamos a indicar cómo conectar con el servidor OCS

 

En el apartado de propiedades del servidor proxy no vamos a introducir ningún valor ya que el servidor OCS y los agentes se encuentran en la misma red y son accesibles mútuamente. Pulsamos el botón Next para avanzar.

 

Ventana de configuración del proxy que permita acceder a OCS

 

En las propiedades del agente, indicamos que la etiqueta que vamos a usar para este agente será TEST. De esta manera, toda la información que llegue de este agente vendrá con esa etiqueta y nos permitirá mejorar la legibilidad de los datos des de la herramienta de administración. También vamos a marcar la opción Immediately launch inventory para que ejecute el agente nada más finalizar la instalación. hacemos clic en Next para seguir.

Ventana de opciones de ejecución del agente OCS

 

Indicamos la ruta de instalación del agente. Dejamos la opción por defecto y pulsamos el botón Install.

V entana para indicar la ruta de instalación del agente OCS

Tras finalizar la instalación dejaremos activada la casilla Start OCS Inventory NG Systray Applet para que se inicie el programa y se quede en el area de notificaciones de Windows. Pulsaremos el botón Finish para cerrar el asistente de instalación.

Finalización de la instalación.

 

Una vez finalizada la instalación, el agente quedará operativo en la barra de notificaciones y hará un primer inventariado del equipo que enviará al servidor OCS.

La vista desde la consola de administración

Si accedemos a la consola de administración web y pulsamos el menú Todos los computadores, podremos comprobar que nos ha llegado la primera configuración al inventario.

 

Listado de equipos que comunican su inventario

Haciendo clic sobre el nombre del equipo podremos ver los detalles. En el lateral izquierdo tenemos acceso a las diferentes categorías del inventario de este equipo tales como Hardware, Software, Red o Dispositivos.

Detalle del inventario reportado por un agente OCS

Y hasta aquí este tutorial de instalación. Espero que os sea útil. Si te ha gustado y te es útil, ayúdame a darle difusión a través de las redes sociales.

Ubunturista

@ubunturista en Twitter.

Deja un comentario