[[PageOutline(2-5,Índice)]] = Instalación y configuración de OpenGnSys paso a paso = El objetivo es describir la instalación y configuración de todo el sistema OpenGnSys partiendo de una instalación mínima y limpia del servidor. == Introducción a OpenGnSys == === Tipos de servidor OpenGnSys === Un sistema OpenGnSys está formado por dos tipos de servidor, según los servicios que presta: * Servidor de Administración: Único para cada sistema OpenGnSys, ofrece los servicios de administración a través de la consola web y ejecuta el demonio (ogAdmServer) que distribuye las tareas configuradas desde la consola web entre los diferentes servidores de repositorio. * Servidor de Repositorio: Puede haber tantos como se desee. Ofrece los servicios de arranque por PXE, comparte por Samba los directorios necesarios para los clientes, almacena las imágenes de los discos de los clientes, recibe del servidor de administración las tareas que debe ejecutar los clientes y, en general, ofrece todos los servicios que utilizan directamente los clientes. === Descripción del proceso de instalación === Se realizan los siguientes procesos: * Obtención de los parámetros básicos de la red. * Comprobación de paquetes instalados. * Descarga e instalación de las dependencias que faltan. * Creación de la estructura básica de directorios de OpenGnSys. * Descarga del repositorio de código en un directorio temporal ({{{/tmp/opengnsys_installer}}}). * Compilación e instalación de los servicios de OpenGnSys. * Configuración básica de los servicios de red DHCP, PXE y Samba, a partir de los parámetros de conexión. * Copiar ficheros complementarios de gestión del servidor. * Creación de la base de datos y configuración del servidor web de OpenGNSys Web Admin Console. * Copiar los ficheros de las páginas web de Web Console. * Copiar la estructura de directorios de OpenGnSys Client. * Descargar y configurar la imagen de arranque de OpenGnSys Client. * Configuración básica de los servicios de OpenGnSys a partir de los parámetros de red. * Arranque de los servicios de OpenGnSys. == Instalación de un sistema OpenGnSys == === Servicios necesarios === Los siguientes servicios son necesarios para el funcionamiento del sistema OpenGnSys pero no tienen por que residir en los servidores dedicados al mismo, aunque el instalador nos dará la opción de instalarlos y configurarlos si así lo deseamos. Otros servicios también pueden estar alojados fuera, pero por simplificar la instalación se incluyen en el proceso de instalación del tipo de servidor que los utiliza. * Servidor DHCP: Es necesario un servidor DHCP que redireccione el arranque de los clientes al servidor de repositorio de su zona. Puede instalarse el servicio DHCP a partir del siguiente paquete: * En versiones de Ubuntu 10.10 y anteriores: {{{sudo aptitude install dhcp3-server}}} * En versiones de Ubuntu 11.04 y posteriores: {{{sudo aptitude install isc-dhcp-server}}} Un ejemplo de como podría quedar el archivo de configuración {{{dhcpd.conf}}} para un servidor que da direcciones en el rango de 10.1.12.100 - 10.1.12.200 y cuyo servidor de repositorio tiene la dirección IP 10.1.12.1 {{{ ddns-update-style none; option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 10.1.12.0 netmask 255.255.252.0 { range 10.1.12.100 10.1.12.200; option domain-name-servers 192.168.0.10; option routers 10.1.12.1; option broadcast-address 10.1.12.255; default-lease-time 600; max-lease-time 7200; # Parametros para el PXE next-server 10.1.12.1; filename "grldr"; } }}} === Información necesaria === Los datos que se deben conocer antes de instalar son lo siguientes: * Si se instala un servidor de Administración: * IP local y puerto donde debe escuchar el demonio ogAdmServer (puerto por defecto, 2008). * Nombre del catálogo del servidor MySQL donde se creará la base de datos (por defecto ogBDAdmin). * Si se instala un servidor de Repositorio: * IP del servidor de Administración del que depende el repositorio. * Puerto del servidor de Administración donde escucha el demonio ogAdmServer (por defecto 2008). * Dirección de red y máscara de los ordenadores cliente (para exportar los directorios por NFS). * Si se instala un servidor DHCP: * Servidores DNS que utilizarán los clientes. * Dirección de la subred de la que se darán las IPs. * Rango de direcciones IP a utilizar dentro de la subred. * Dirección de broadcast de la subred. * Dirección del servidor de Respositorio para esa subred. === Instalando el sistema mínimo === Partimos del disco de instalación de Ubuntu Server, a partir de la versión 9.04, tanto para 32 como para 64 bits. Cuando presente la pantalla de instalación pulsamos F4 para elegir el tipo de instalación "Máquina virtual mínima". Cuando presente la lista de paquetes a instalar marcamos únicamente el OpenSSH Server. Al reiniciar reconfiguramos la red, para utilizar dirección IP estática. Está IP será por la que habrá que sustituir en los ficheros de configuración cuando en estos ponga "IPLocal". === Instalación de los componentes comunes === ==== Utilidades necesarias ==== * wget {{{ sudo aptitude install wget }}} * Utilidades para la compilación de los servicios(se podría realizar en otra máquina con la misma arquitectura) {{{ sudo aptitude install build-essential libmysqlclient15-dev }}} * Subversion: para la descarga del sistema desde el repositorio {{{ sudo aptitude install subversion }}} ==== Descarga de los componentes del sistema ==== Descargamos en un directorio temporal (/tmp/opengnsys) la última versión de los componentes desde el repositorio: {{{ svn co http://www.opengnsyss.es/svn/trunk /tmp/opengnsys }}} ==== Creación de los directorios ==== Se crea el directorio del proyecto en /opt {{{ mkdir /opt/opengnsys }}} y a continuación los directorios necesarios para los distintos componentes: para los binarios del servidor {{{ mkdir /opt/opengnsys/bin }}} para los archivos de configuracion creamos el directorio dentro del proyecto y lo enlazamos desde /etc/opengnsys {{{ mkdir /opt/opengnsys/etc ln -s /opt/opengnsys/etc /etc/opengnsys }}} creamos el directorio donde estarán los componentes que se exportan por NFS a los clientes, aquí están los ejecutables con el motor de clonación y las utilidades asociadas. {{{ mkdir -p /opt/opengnsys/client/lib/engine/bin mkdir /opt/opengnsys/client/cache mkdir -p /opt/opengnsys/client/etc/init mkdir /opt/opengnsys/client/etc/preinit mkdir /opt/opengnsys/client/etc/startpages }}} creamos el directorio para las librerias de las utilidades {{{ mkdir /opt/opengnsys/lib }}} los directorios de logs y enlazamos desde /var/log/opengnsys {{{ mkdir /opt/opengnsys/log mkdir /opt/opengnsys/log/client ln -s /opt/opengnsys/log /var/log/opengnsys }}} repositorio donde se almacenarán las imagenes de particiones y discos {{{ mkdir /opt/opengnsys/images }}} Para la consola de administración web {{{ mkdir /opt/opengnsys/www }}} === Instalación de un servidor de Administración === ==== Servicios ==== * Apache {{{ aptitude install apache2 }}} * PHP {{{ aptitude install php5 }}} * MySQL y conector php5-mysql {{{ aptitude install mysql-server aptitude install php5-mysql }}} El instalador pide la contraseña de root para mysql. Si no lo hiciera, o para otras distribuciones, ejecutar como root o mediante el comando sudo, {{{ /usr/bin/mysqladmin -u root password ''nuevaclave'' }}} ==== Crear la base de datos ==== Crear en el gestor de base de datos el usuario con el que se accederá desde el gestor web con todos los privilegios: {{{ mysql -p <<<"CREATE DATABASE ogBDAdmin; GRANT ALL PRIVILEGES ON ogBDAdmin.* TO usuog@localhost IDENTIFIED BY 'passusuog'" }}} Volcar el contenido del fichero SQL de la base de datos y establecer los permisos de acceso para que coincidan con los ficheros del web. {{{ mysql -u usuog -p ogBDAdmin < /tmp/opengnsys/trunk/admin/Database/ogBDAdmin.sql }}} ==== Instalación de la consola web ==== Copiamos el directorio desde el repositorio: {{{ cp -pr /tmp/opengnsys/trunk/admin/WebConsole/* /opt/opengnsys/www }}} renombramos el /var/www original por si acaso y creamos un enlace simbólico al del proyecto {{{ mv /var/www /var/www.orig ln -s /opt/opengnsys/www /var/www }}} Modificamos el propietario del directorio por el usuario y grupo que lanza el servidor web {{{ chown www-data:www-data /opt/opengnsys/www -R }}} Modificamos la configuración en el fichero /opt/opengnsys/www/includes/controlacceso.inc, sustituyendo "IPLocal" por la IP que le hayamos asignado al servidor donde se está instalando {{{ $cnx="IPLocal;usuog;passusuog;ogBDAdmin;sqlserver"; // Cadena de conexión a la base de datos $ips="IPLocal"; // IP del servidor ogAdmServer $prt="2008"; // Puerto de comunicación con el servidor $wer="http://IPLocal/pagerror.php"; // Página de redireccionamiento de errores $wac="http://IPLocal/acceso.php"; // Página de login de la aplicación }}} === Compilación e instalación del servidor ogAdmServer === Nos situamos dentro del repositorio en el directorio trunk/admin/ogAdmSources/ogAdmServer y creamos el ejecutable: {{{ make }}} copiamos el ejecutable al directorio de binarios del servidor y el archivo de configuración al de configuraciones: {{{ cp ogAdmServer /opt/opengnsys/bin/ cp ogAdmServer.cfg /opt/opengnsys/etc/ }}} modificamos el archivo de configuración /opt/opengnsys/etc/ogAdmServer.cfg con los datos de nuestra configuración: {{{ IPhidra=IPLocal Puerto=2008 AulaUp=0 Usuario=usuog PassWord=passusuog DataSource=IPLocal Catalog=ogBDAdmin }}} === Instalación de un servidor de Repositorio === Antes de poder lanzar este proceso hay que dar de alta este repositorio en el gestor web, para que permita el acceso al demonio ogAdmRepo que recoge los datos de configuración y tareas de los clientes introducidos en la consola web. NFS: Para exportar los directorios con las utilidades que utilizarán los clientes que arranquen utilizando este sistema. {{{ aptitude install nfs-kernel-server }}} TFTP: Para servir las imagenes de arranque por PXE a los clientes. {{{ aptitude install tftpd-hpa }}} udpcast: Distribución por multicast de las imagenes de las particiones a clonar. {{{ aptitude install udpcast }}} bittorrent: Distribución por bittorrent de las imagenes de las particiones a clonar. {{{ aptitude install bittorrent }}} Syslinux {{{ aptitude install syslinux }}} === Instalando los servicios opcionales === Servidor DHCP (Si es necesario): Para la asignación de direcciones y configuración de red. {{{ aptitude install dhcp3-server (ignorar el mensaje de error, lo configuraremos más tarde) }}} === Instalando las utilidades necesarias === === Instalando las utilidades recomendadas === memtest86+ === Compilación e instalación del servidor de repositorio ogAdmRepo === Nos situamos dentro del repositorio en el directorio trunk/admin/ogAdmSources/ogAdmRepo y creamos el ejecutable: {{{ make }}} copiamos el ejecutable al directorio de binarios del servidor y el archivo de configuración al de configuraciones: {{{ cp ogAdmRepo /opt/opengnsys/bin/ cp ogAdmRepo.cfg /opt/opengnsys/etc/ }}} modificamos el archivo de configuración /opt/opengnsys/etc/ogAdmRepo.cfg con los datos de nuestra configuración: {{{ IPlocal=10.2.0.12 IPhidra=10.2.0.12 Puerto=2008 }}} == Configuración NFS == Los clientes arrancan por red recibiendo un sistema operativo mínimo para reducir el tiempo de arranque, para poder realizar las tareas relacionadas con la clonación necesitan acceder además a tres directorios del servidor: * /opt/opengnsys/client/ que contiene los ejecutables con el motor de clonación y las utilidades asociadas. * /opt/opengnsys/images/ lugar de almacenamiento de las imagenes de las particiones y discos para crear/restaurar. * /opt/opengnsys/log/clients donde se graban los logs con el resultado de la ejecución de las diferentes tareas. para poder utilizar estos directorios hay que crear los directorios en el servidor y hacer que se exporten por NFS y, en el cliente, montarlos al inicio. La parte cliente la realiza el script loadenviron.sh que se ejecuta en el proceso de arranque del mismo. Hay que modificar el fichero /etc/exports con las siguientes líneas: {{{ /opt/opengnsys/client/ 10.2.1.0/255.255.255.0(ro,no_subtree_check,no_root_squash,sync) /opt/opengnsys/images/ 10.2.1.0/255.255.255.0(rw,no_subtree_check,no_root_squash,sync,crossmnt) /opt/opengnsys/log/client 10.2.1.0/255.255.255.0(rw,no_subtree_check,no_root_squash,sync) }}} y por último reiniciamos el demonio NFS para que recoja las modificaciones: {{{ /etc/init.d/nfs-kernel-server restart }}} En este ejemplo los clientes reciben por DHCP direcciones ip pertenecientes a la subred 10.2.1.0, si hubiera más subredes habría que añadir estas tres líneas para cada una de ellas. == Configuración del sistema para los clientes == === Arranque por PXE === Preparación del sistema de arranque por red para los ordenadores cliente: Copiamos el fichero de arranque por PXE al directorio desde el que se lo descargarán los clientes, creamos el directorio donde se almacenan las diferentes opciones de arranque por cliente y copiamos del repositorio el fichero con la configuración de arranque por defecto. {{{ cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/ mkdir /var/lib/tftpboot/pxelinux.cfg cp trunk/server/PXE/pxelinux.cfg/default /var/lib/tftpboot/pxelinux.cfg/ }}} === OpenGNSys Client Boot === Copiamos desde el repositorio los scripts y ficheros, ejecutables directamente desde el servidor de OpenGNSys, y que son necesarios para configurar los procesos de arranque de los clientes: * initrd-generator:Script de generación de los básicos de arranque del cliente(initrd y kernel). * upgrade-clients-udeb.sh: Script de descarga de paquetes udeb, que serán incluidos en el directorio de librerías importadas por los clientes. * udeblist.conf: Fichero de configuración que incluye la lista de paquetes udeb que deben ser descargados o eliminados. {{{ cp trunk/client/boot/initrd-generator /opt/opengnsys/bin/ cp trunk/client/boot/upgrade-clients-udeb.sh /opt/opengnsys/bin/ cp trunk/client/boot/udeblist.conf /opt/opengnsys/etc/ }}} Generamos los ficheros básicos de arranque del cliente y los colocamos para que los cojan los clientes PXE: {{{ /opt/opengnsys/bin/initrd-generator mv linux /var/lib/tftpboot/ mv initrd.gz /var/lib/tftpboot/ }}} Descarga de los paquetes udeb que se deben exportar a los clientes {{{ /opt/opengnsys/bin/upgrade-clients-udeb.sh }}} Copiamos el motor de clonación desde el repositorio {{{ cp trunk/client/engine/* /opt/opengnsys/client/lib/engine/bin/ }}} === Compilación e instalación del cliente ogAdmClient === === Compilación e instalación del browser ===