May 31, 2010

Distribución automática de software con Opsi (I)

Opsi (open pc server integration) es una aplicación open source basada en Linux que permite gestionar de forma remota, la instalación y el mantenimiento del software relacionado con equipos Microsoft Windows.

Entre sus principales características cabe destacar la posibilidad de instalar de forma automática sistemas operativos (Windows 2000, XP, Vista y Server 2003/2008) a través de imágenes (arranque PXE), despliegue automático de software y control de versiones, inventarios hardware y software, etc.

Opsi está basado en una arquitectura cliente-servidor. En cada una de las máquinas Windows que se quiera gestionar a través de Opsi se instalará un agente (wInst - Windows Installer). A su vez, dentro del servidor se depositará el software que se quiera desplegar en dichas máquinas y éste recogerá de forma centralizada la información de todos sus nodos.

Cuando arranque el sistema Windows, el cliente se logueará en el módulo preLoginLoader del servidor, y examinará si existe alguna actualización disponible. En caso afirmativo, wInst comenzará de forma automática la tarea de instalación. El servidor proporcionará los scripts de instalación y los paquetes software a través de un espacio de almacenamiento compartido (Samba).

Antes de que los paquetes puedan ser instalados por wInst, deben de prepararse en formato Opsi. Comentar también que en los sistemas Windows puede instalarse el módulo loginblocker para prevenir que un usuario se loguee antes de que el proceso de instalación/actualización de wInst haya finalizado.

Opsi se encuentra disponible a través de un repositorio para sistemas basados en Debian y derivados, aunque también se puede utilizar directamente a través de una máquina virtual creada específicamente para VMware, o instalar directamente a través de una ISO, la cual está formada por una imagen de Debian con los paquetes de Opsi ya configurados.

Vamos a instalar y configurar la última versión estable de Opsi, la 3.4, en una Ubuntu Server 10.04 cuyo nombre será opsiserver.ubuntu.local. En primer lugar vamos a instalar una serie de paquetes requeridos por Opsi.

root@opsiserver:~# aptitude install wget lsof host python-mechanize p7zip-full cabextract openbsd-inetd

También será necesario instalar Samba.

root@opsiserver:~# aptitude install samba samba-common smbclient smbfs samba-doc

Opsi guarda por defecto todos los datos de los inventarios y del tema de licencias en ficheros de texto planos. Si queremos que en lugar de emplear dichos archivos se utilice una base de datos, instalaremos MySQL. Después de instalarlo, ejecutaremos la aplicación mysql_secure_installation con el objetivo de establecer el password para el usuario 'root', remover el usuario 'anonymous' y eliminar la base de datos test.

root@opsiserver:~# aptitude install mysql-server

root@opsiserver:~# mysql_secure_installation

Para instalar la parte servidora de Opsi vamos a tener que añadir la siguiente línea al fichero sources.list. Posteriormente instalaremos los paquetes opsi-atftpd, opsi-depotserver y opsi-configed.

root@opsiserver:~# cat /etc/apt/sources.list
...
deb http://download.uib.de/debian lenny opsi3.4

root@opsiserver:~# aptitude update

root@opsiserver:~# aptitude install opsi-atftpd opsi-depotserver opsi-configed

Durante la instalación de Opsi, el asistente nos hará una serie de preguntas de cara a la generación de un certificado electrónico. También nos solicitará la password para el usuario 'pcpatch'.

El siguiente paso que haremos será crear un usuario administrador (lo llamaremos opsi), el cual será dado de alta también para Samba.

root@opsiserver:~# useradd -m -s /bin/bash opsi

root@opsiserver:~# passwd opsi

root@opsiserver:~# smbpasswd -a opsi

root@opsiserver:~# adduser opsi opsiadmin

root@opsiserver:~# adduser opsi pcpatch

Si queremos que Opsi no actué como servidor DHCP, eliminaremos el servicio.

root@opsiserver:~# /etc/init.d/dhcp3-server stop

root@opsiserver:~# update-rc.d -f dhcp3-server remove

root@opsiserver:~# update-rc.d dhcp3-server stop 20 2 3 4 5 .

Por último, sólo nos quedará por configurar la base de datos en donde Opsi guardará el inventario de los nodos. Para ello ejecutaremos el script init-opsi-mysql-db.py.

También modificaremos dos variables dentro del fichero 30_vars.conf para indicar a Opsi que utilice MySQL para almacenar los datos del inventario hardware y software.

root@opsiserver:/usr/share/opsi# ./init-opsi-mysql-db.py

root@opsiserver:/etc/opsi/backendManager.d# cat 30_vars.conf
...
self.swinventBackend = BACKEND_MYSQL
self.hwinventBackend = BACKEND_MYSQL
self.licenseBackend = BACKEND_MYSQL
...

root@opsiserver:~# service opsiconfd restart

1 comment:

  1. buenas tarde Sr Jose me puede dar su correo para comunicarme con usted...

    ReplyDelete