¿Qué es OCS Inventory? [Fuente: Wikipedia]
Open Computer and Software Inventory Next Generation (OCS) es un software libre que permite a los usuarios administrar el inventario de sus activos de TI. OCS-NG recopila información sobre el hardware y software de equipos que hay en la red que ejecutan el programa de cliente OCS ("agente OCS de inventario"). OCS puede utilizarse para visualizar el inventario a través de una interfaz web. Además, OCS comprende la posibilidad de implementación de aplicaciones en los equipos de acuerdo a criterios de búsqueda. Además, tiene muchas opciones más como escanear la red por medio del IPDiscovery, o instalar aplicaciones remotamente creando Builds.
Motivación
Después pelear unos días con la instalación y configuración de OCS Inventory, he decidido publicar este post para detallar la instalación en un servidor Ubuntu Server 12.04. Ya tengo mis notas de instalación, pero me apetecía mucho escribir este post y compartir con todos vosotros la experiencia.
Si bien es cierto que para Debian GNU/Linux y Ubuntu hay paquetes disponibles, tanto para la versión "servidor" como "agente", mi experiencia no es muy satisfactoria instalando OCS desde un repositorio.
Consejos
- aptitude update && aptitude upgrade antes de nada.
- Un mysqldump y un tar cf apache2.tar /etc/apache2 tampoco están de más.
- No intentéis la instalación en un servidor en producción directamente, en teoría nunca pasa nada, pero en la práctica siempre "pasa algo.
- Usad si o si SSL .
- Cerrar acceso al /ocsreports con directivas Allow en Apache2.
Instalación servidor
Instalación de paquetes necesarios. Partimos de la base de que ya disponemos de un servidor LAMP correctamente configurado y operativo.
apt-get install libapache2-mod-perl2 libapache-dbi-perl libxml-simple-perl libio-compress-perl libdbi-perl libdbd-mysql-perl libnet-ip-perl php5-gd php5-mysql nmap snmp make
Si queremos habilitar el acceso vía webservice, debemos instalar los módulos Perl necesarios
perl -MCPAN -e 'install SOAP::Lite'
Para Apache2::SOAP
cd /usr/src
wget http://www.cpan.org/authors/id/R/RK/RKOBES/Apache2-SOAP-0.73.tar.gz
tar zxf Apache2-SOAP-0.73.tar.gz
mkdir /usr/include/apache2
perl Makefile.pl && make && make install
Descargamos en el directorio /usr/src la última versión de OCS Inventory NG Management Server desde la URL http://www.ocsinventory-ng.org/en/download/download-server.html
cd /usr/src
wget https://launchpad.net/ocsinventory-server/stable-2.1/2.1rc1/+download/O…
tar zxf OCSNG_UNIX_SERVER-2.1rc1.tar.gz
rm -rf OCSNG_UNIX_SERVER-2.1rc1.tar.gz
Ejecutamos el script de instalación dentro del directorio OCSNG_UNIX_SERVER-2.1rc1
cd OCSNG_UNIX_SERVER-2.1rc1
/setup.sh
La primera preguntas que debemos responder corresponden con la localización del ejecutable, usuario y ficheros de configuración de Apache. Si has instalado Apache2 desde los repositorios oficiales de Ubuntu, acepta todas las propuestas. Idem para la configuración de MySQL Server/MariaDB.
El siguiente paso en la instalación es la ubicación del fichero de configuración de OCS, por defecto el script de instalación lo ubicará en /etc/apache2/conf.d . Es muy importante que recuerdes la localización de este fichero para futuros cambios.
Avanzamos confirmando el PATH para intérprete de Perl(/usr/bin/perl en mi caso). Imprecindible instalar "make", de lo contario la instalación no podrá continuar. Llegados a este punto confirmamos el directorio dónde OCS guardará los logs (/var/log/ocsinventory-server), importante tomar nota para un futuro por si tenemos "problemas". El asistente comprobará si están instalados en el sistema los módulos necesarios para el correcto funcionamiento de OCS.
+----------------------------------------------------------+
| Checking for required Perl Modules... |
+----------------------------------------------------------+
Checking for DBI PERL module...
Found that PERL module DBI is available.
Checking for Apache::DBI PERL module...
Found that PERL module Apache::DBI is available.
Checking for DBD::mysql PERL module...
Found that PERL module DBD::mysql is available.
Checking for Compress::Zlib PERL module...
Found that PERL module Compress::Zlib is available.
Checking for XML::Simple PERL module...
Found that PERL module XML::Simple is available.
Checking for Net::IP PERL module...
Found that PERL module Net::IP is available.
Es probable que recibamos un "warning" del tipo
*** Warning: PERL module Apache2::SOAP is not installed ! o *** Warning: PERL module XML::Entities is not installed !
La instalación de este módulo sólo es necesaria(lo indica el instalador) si queremos utilizar SOAP WebService, no es el caso. Continuamos la instalación.
Do you wish to continue ([y]/n] ?y
Después de realizar las comprobaciones necesarias(módulos Perl instalados), en script de instalación pregunta si queremos permitir al instalador que modifique el fichero de configuración 'ocsinventory-server.conf', renonbrándolo a 'z-ocsinventory-server.conf'. Respondemos si(Y)
+----------------------------------------------------------+
| OK, Communication server setup sucessfully finished ;-) |
| |
| Please, review /etc/apache2/conf.d/z-ocsinventory-server.conf
| to ensure all is good. Then restart Apache daemon. |
+----------------------------------------------------------+
Momento de configurar el acceso web OCS. En esta parte de la instalación he modificado la propuesta de directorios basada en FHS :
/var/lib/ocsinventory-reports => "download directory" para almacenar datos de los equipos, datos SNMP e IPDiscover
/var/www/ocsreports => ficheros PHP para Web Console
Momento de configurar el acceso web OCS. En esta parte de la instalación he modificado la propuesta de directorios basada en FHS :
/var/lib/ocsinventory-reports = "download directory" para almacenar datos de los equipos, datos SNMP e IPDiscover
/var/www/ocsreports = ficheros PHP para Web Console
Configuración del servidor web OCSReports
La configuración por defecto permite acceder al directorio /ocsreports desde cualquier virtualhost configurado en el máquina. En el escenario que he utilizado para documentar la instalación, usamos un subdomonio con SSL activado e incluímos la configuración dentro del propio fichero de configuración de Apache y eliminamos el fichero /etc/apache2/conf.d/ocsinventory-server.conf para evitar el acceso a /ocsreports. Muy importante en este punto, a la hora de generar el certificado, que el FQDN coincida con el nombre DNS de la máquina, de lo contrario, no los "agentes" no se podrán comunicar con el servidor pues recibirán un error de validación del certificado.
Generamos el certificado para el servidor:
cd /etc/apache2/ssl && mkdir ocs-certs
cd ocs-certs
openssl req -new -x509 -days 3650 -nodes -out ocs.crt -keyout ocs.key
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:ACoruna
Locality Name (eg, city) []:Ames
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CannibalCorpse
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:ocs.cannibalcorpse.net
Email Address []:
NOTA : Common Name (e.g. server FQDN or YOUR name) []:ocs.cannibalcorpse.net , debe coincidir con el valor de la directiva ServerName de virtualhost de Apache2
NOTA II: Copiamos el fichero ocs.crt al fichero cacert.pem y lo incluimos dentro de la carpeta del instalador del agente Windows(en mi caso). Luego veremos en qué paso lo usuaremos.
Continuamos. Voy a incluir el fichero configuración del virtualhost de Apache2, pero antes de nada, movemos el fichero ocsinventory-server.conf a un lugar seguro
mv /etc/apache2/conf.d/ocsinventory-server.conf /root/stuff
El contenido del fichero lo podéis descargar desde esta URL:
https://dl.dropboxusercontent.com/u/6108202/vhost_ocs.txt
Descargamos el fichero y comprobamos la sintaxis
alex@cannibalcorpse.net:/etc/apache2/sites-available# apachectl -t
Syntax OK
Si no hay ningún error, activamos el módulo SSL, habilitamos el sitio y recargamos la configuración.
a2enmod ssl &&2ensite oscannibalcorpsenet
service apache2 restart
En teoría ya podemos acceder a https://ocs.cannibalcorpse.net/ocsreports y finalizar la configuración del cliente web. El primer paso es crear una base de datos(MySQL/MariaDB) y un usuario con privilegios. Es muy sencillo.
mysql>; CREATE DATABASE ocs;
mysql>; GRANT ALL PRIVILEGES ON ocs.* TO 'ocs'@'localhost' IDENTIFIED BY 'UNPASSWORDQUETECAGASDECOMPLEJO' WITH GRANT OPTION;
NOTA III: Muy importante actualizar el fichero /etc/apache2/conf.d/z-ocsinventory-server.conf con las credenciales de acceso correctas a la base de datos que hemos creado.
Detalle del fichero z-ocsinventory-server.conf con las credenciales modificadas
# Name of database
PerlSetEnv OCS_DB_NAME ocs
PerlSetEnv OCS_DB_LOCAL ocs
# User allowed to connect to database
PerlSetEnv OCS_DB_USER ocs
# Password for user
PerlSetVar OCS_DB_PWD UNPASSWORDQUETECAGASDECOMPLEJO
Recargamos la configuración de Apache2
service apache2 reload
Eliminamos el fichero install.php
cd /var/www/ocsreports/ocsreports && rm -rf install.php
echo "Instalación finalizada. Salud"