El tema de moda es el de Cloud Computing y existen muchas soluciones de despliegue de máquinas en una red de manera automatizada, en este post hablaremos de una de ellas y que lleva con GNU/Linux muchos años. Para ahorrarnos royos largos y aburridos copiamos de Wikipedia
PXE hace referencia al entorno de ejecución de prearranque (Preboot eXecution Environment). Es un entorno para arrancar e instalar el sistema operativo en ordenadores a través de una red, de manera independiente de los dispositivos de almacenamiento de datos disponibles (como discos duros) o de los sistemas operativos instalados.
La versatilidad de contar con un servidor de esta clase en la red son prácticamente ilimitadas, para mi red virtual, la monte sobre VirtualBox como un servidor, se encarga de dar IP (DHCP), Archivos (lftp, proftp) y sistemas operativos tanto en LiveCD como lanzando la instalación.
La instalación es sencilla. Sobre una Debian Lenny (5.0.3). Tras instalar el sistema base procedemos a instalar las herramientas necesarias
aptitude install netkit-inetd tftpd-hpa dhcp3-server lftp proftpd rsync
El tftpd-hpa es bastante problemático en modo independiente y es mejor lanzarlo desde inetd, para ello, deshabilitamos los niveles de ejecución de init.d
update-rc.d -f tftpd-hpa remove
y nos aseguramos que disponemos de la línea correspondiente en inetd.conf
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
Como vemos, la raíz del servidor pxe está en /var/lib/tftpboot y es ahí donde iremos añadiendo las distintas distribuciones que queremos lanzar en nuestra red.
La configuración por defecto de DHCP que viene con Debian es No Autoritaria que significa, que para que asigne una IP a una máquina tiene que conocerla previamente, por la mac normalmente, no nos vale y tenemos que hacer que asigne IP a todas las máquinas que la pidan. También tenemos que definir los parámetros para que funcione el PXE, debe quedar así:
option domain-name-servers 145.253.2.75, 213.191.92.86; default-lease-time 86400; max-lease-time 604800; authoritative; subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.254; filename "pxelinux.0"; option subnet-mask 255.255.255.0; option broadcast-address 192.168.2.255; option routers 192.168.2.1; }
Listo, con estas opciones ya tenemos la infraestructura necesaria para desplegar máquinas en la red. No he profundizado mucho porque está basado en un artículo mejor aquí. Pero si queria comentar dos distribuciones que monté en PXE en modo Live que son Clonezilla y Trinity Rescue Kit. La primera se usa para clonar discos duros y recuperar esas imágenes de copia de seguridad. La segunda contiene antivirus para scannear máquinas windows (Linux continua sin virus a pesar de los FUD). También quería mostrar como automatizar una instalación de CentOS apoyandonos en esta infraestructura y con su sistema KickStart. Vamos a ello.
Clonezilla necesita de tftp para lanzar su imagen de memoria, que pasará a memoria del sistema huésped, que a sido arrancado a través de PXE. Disponemos de todos los componentes, así que vamos:
Primero descargamos el zip desde aquí, y lo descomprimimos en la raiz del servidor tftp, que no olvidemos es /var/lib/tftpboot aunque recomiendo, sobretodo si vamos a tener muchas distros, crear un directorio clonezilla
unzip -j clonezilla-live-*.zip live/vmlinuz live/initrd.img live/filesystem.squashfs -d /var/lib/tftpboot/clonezilla/
Ahora, añadimos las opciones para lanzarlo en /var/lib/tftpboot/pxelinux.cfg/default
label clonezilla_live menu label rlonezilla Live kernel clonezilla/vmlinuz append initrd=clonezilla/initrd.img boot=live union=aufs noswap noprompt vga=788 fetch=tftp://192.168.2.2/clonezilla/filesystem.squashfs
Y listo, podemos arrancar cualquier máquina de la red y lanzar este magnífico proyecto para clonar, copiar y restaurar imágenes de disco duro. Tiene soporte para todos los modos de copia y transferencia de datos.
Para el caso de Trinity, ya escribí como proceder aquí.
Y para CentOS necesitamos del servidor NFS para el fichero de kickstart y del ftp para recuperar los paquetes que elijamos instalar. No entraré en detalles de cómo configurar el FTP, ya que la instalación de ProFTP ya es funcional y sólo necesitamos un directorio donde poner el contenido del DVD. Para el archivo de kickstart, necesitamos una compartición de NFS y el contenido puede ser como sigue:
install text url --url ftp://nordri:passwd@192.168.2.2//home/centos lang es_ES.UTF-8 keyboard es network --device eth0 --bootproto dhcp rootpw --iscrypted $1$IRrk/Y9t$Yg%mL6rpN86QRQm.ElDHB/ firewall --enabled --port=22:tcp authconfig --enableshadow --enablemd5 selinux --disabled firewall --disabled timezone --utc Europe/Madrid bootloader --location=mbr --driveorder=hda user --name=nordri --groups=users --homedir=/home/nordri --password=secreto # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart --linux part / --bytes-per-inode=4096 --fstype="ext3" --size=5000 part swap --bytes-per-inode=4096 --fstype="swap" --size=200 part /home --bytes-per-inode=4096 --fstype="ext3" --grow --size=1 %packages @editors @text-internet @dialup @core @base @clustering @spanish-support device-mapper-multipath
Más información sobre kickstart aquí.
Para su entrada en default pondriamos:
label centos5.3_i386_linux kernel centos/5.3/i386/vmlinuz append initrd=centos/5.3/i386/initrd.img ks=nfs:192.168.2.2:/var/lib/tftpboot/centos/net-install/ks.cfg
Listo, toda máquina que iniciemos en la red eligiendo CentOS será formateada e instalada con esta distribución.
Nota sabionda: Fedora es igual y puedes conseguirte un buen automatizador para máquinas de escritorio.
Conclusiones
Montar esta infraestructura en un nivel básico como el que se muestra aquí no lleva más de unas pocas horas (contando con las descargas) se puede mejorar en seguridad pero me extendería demasiado, le doy uso en el despacho principalmente a CentOS donde el archivo kickstart está optimizado para incorporar nuevas máquinas al Cluster y el TRK para limpiar un poco los virus de los usuarios windows. En casa, es una máquina de mi red virtual y la uso para montar máquinas nuevas (Debian sobre todo) y probar cosas nuevas.
Pingback: nordri's Blog » nordri VS Asus EeePC 1201HA
Pingback: nordri's Blog » Clonando Equipos en Red con MClone y Trinity Tool Kit