Instalación desatendida por red de Debian12

Índice

Instalación automática usando un fichero de preseed alojado en un servidor web

Configuración del servidor web

El fichero de preseed para la instalación desatendida de Debian se puede aportar no sólo volcando su contenido al archivo de imagen iso del instalador sino también haciéndolo accesible para el cliente en el que se instala el sistema operativo desde un servidor web alojado en la red. Para usar este método de instalación desatendida, primero es necesario contar con un fichero de preseed correctamente configurado y con un servidor web accesible desde el cliente.

sudo apt install apache2

Este método se puede adaptar a las necesidades de la configuración del servidor web, ya sea creando un virtual host específico para alojar el fichero de preseed o estableciendo una resolución de nombres estática en la red local para que el servidor sea accesible por su nombre de host y no se necesario indicar su IP. Para el propósito de esta documentación, la configuración del servidor web se mantiene sencilla y se opta por la solución más simple: colocar el fichero de preseed en el document root por defecto.

cp preseed.cfg /var/www/html

Esto hace que el fichero sea accesible desde cualquier cliente conectado a la red que acceda a la ruta http://IP_SERVIDOR/preseed.cfg.

Acceso al fichero de preseed desde el instalador

Para que el instalador tenga acceso a este fichero el cliente tiene que arrancar con una iso que cargue el menú de instalación de Debian y, desde él, acceder a las opciones avanzadas y después a instalación automática.

Esto lanza el proceso de instalación y, en un momento determinado, tras la configuración por DHCP del equipo y una vez que la máquina obtiene la configuración de red, se muestra un diálogo en el que se solicita la ubicación del fichero de preseed para ejecutar la instalación desatendida. En este ejemplo el cliente es una máquina virtual creada con libvirt-KVM y el servidor web está instalado en el host, así que la conexión se realiza a través de la red por defecto de libvirt-KVM.

http://192.168.122.1/preseed.cfg

A partir de este punto, el proceso de instalación continúa su ejecución de forma autónoma hasta finalizar con el reinicio del equipo, que en este punto ya cuenta con el nuevo sistema operativo instalado.

Instalación desatendida desde un servidor PXE/TFTP

Para esta instalación es necesario contar en el escenario con un servidor DHCP y un servidor TFTP. Ambos se pueden ejecutar en la misma máquina.

Configuración del servidor TFTP

Como servidor TFTP la guía oficial de Debian recomienda usar tftpd-hpa para un servidor Debian GNU/Linux. Está escrito por el mismo autor del gestor de arranque syslinux, y por ello menos proclive a generar problemas.

sudo apt install tftpd-hpa

Existen dos formas de iniciar TFTP: desde el demonio del sistema o como un demonio independiente. Esta configuración se determina en el fichero /etc/default/tftpd-hpa, en el que se debe incluir la siguiente línea:

  RUN_DAEMON="yes"

Con esta orden se fuerza la ejecución del demonio. A continuación, se debe reiniciar el servicio para cargar esta nueva configuración

sudo systemctl restart tftpd-hpa.service 

Creación del archivo de instalación

A diferencia de las instalaciones que usan medios físicos como CD, DVD o memorias extraíbles USB, donde se usa un fichero de imagen de tipo iso arrancable para cargar e instalar el sistema operativo en el equipo, para las instalaciones por red Debian distribuye imágenes de instalación comprimidas, generalmente, con el nombre netboot.tar.gz. Esta imagen se puede descargar desde los repositorios de Debian.

wget http://ftp.debian.org/debian/dists/bookworm/main/installer-amd64/current/images/netboot/netboot.tar.gz

Para que el archivo de instalación esté disponible desde el resto de equipos conectados a la red hay que descomprimir el contenido de este archivo en el directorio que el servidor TFTP comparte con los clientes.

En este punto se abren dos posibilidades. La primera de ellas es modificar el contenido de este archivo de imagen de forma análoga a cuando se modifica el contenido de una imagen iso, de manera que las órdenes del fichero de preseed se carguen en el fichero initrd de la imagen comprimida y se ejecuten de forma automática durante el proceso de instalación.

La otra opción es instalar junto al servidor TFTP y DHCP de este equipo un servidor web y alojar en él el fichero de preseed. De esta forma, se puede llevar a cabo una instalación automatizada obteniendo el fichero por red tal y como se ha descrito en el apartado anterior. Como este procedimiento ya está documentado se sigue a continuación con la otra opción.

Para volcar la configuración del fichero de preseed al fichero initrd del instalador de Debian hay que seguir unos pasos similares a los que se realizan para crear una imagen iso para la instalación desatendida con la diferencia de que, en este caso, no es necesario utilizar ninguna herramienta específica para descomprimir el archivo de instalación. Así, en primer lugar, se descomprime el archivo de instalación y, a continuación se descomprime también el fichero initrd.gz del directorio debian-installer.

tar -xvf netboot.tar.gz 
gunzip debian-installer/amd64/initrd.gz

A continuación, se vuelca el contenido del fichero de preseed con la configuración para la instalación desatendida en el fichero initrd y se vuelve a comprimir.

echo preseed.cfg | cpio -H newc -o -A -F debian-installer/amd64/initrd
gzip debian-installer/amd64/initrd

Note

Si este procedimiento se realiza en un equipo diferente al servidor TFTP será necesario comprimir de nuevo el archivo de instalación para poder llevarlo al servidor y descomprimirlo en el directorio que el servidor comparte con los clientes.

Con el archivo de instalación modificado para que ejecuta la instalación desatendida gracias a la configuración que aporta el fichero de preseed y todos los ficheros necesarios para la instalación por red ubicados en el directorio correcto del servidor TFTP (por defecto, el directorio /srv/tftp), el siguiente paso es instalar y configurar el servidor DHCP.

Configuración del servidor DHCP

A continuación, hay que configurar el servidor DHCP para que apunte al archivo de imagen con el instalador de Debian que ofrece el servidor TFTP. Como servidor DHCP la guía oficial de Debian recomienda el uso del paquete isc-dhcp-server que instala el servidor dhcpd de ISC.

sudo apt install isc-dhcp-server

En su wiki, Debian recoge un ejemplo de configuración básico del servidor DHCP para habilitar el arranque por PXE en las máquinas cliente que se conecten a la red. En este ejemplo, el servidor TFTP y el servidor DHCP están instalados en máquinas diferentes por lo que en el escenario que se plantea aquí la configuración es un poco más sencilla. Simplemente hay que añadir a la configuración habitual del servidor DHCP la línea filename "pxelinux.0"; dentro del párrafo que identifica la red.

De esta manera, la configuración del fichero /etc/dhcp/dhcpd.conf sería similar a la siguiente:

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

ddns-update-style none;

subnet 10.0.0.0 netmask 255.255.255.224 {
  range 10.0.0.2 10.0.0.20;
  option routers 10.0.0.1;
  allow bootp;
  next-server 10.0.0.1;
  filename "pxelinux.0";
}

Note

No se debe olvidar configurar la interfaz de escucha del servidor DHCP en el fichero /etc/default/isc-dhcp-server con la línea: INTERFACESv4="enp7s0".

Para aplicar la configuración se tiene que reiniciar el servidor.

sudo systemctl restart isc-dhcp-server.service

Si la instalación de Debian requiere instalar paquetes desde los repositorios, el cliente debe tener acceso a internet. Esto se puede conseguir si el servidor DHCP/TFTP actúa también como router. Para ello, hay que activar el bit de forwarding.

echo net.ipv4.ip_forward = 1 > /etc/sysctl.conf 
sudo sysctl -p

Además, también deberá contar con una regla de iptables que permite hacer NAT a los paquetes que reciba desde el cliente.

sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o enp1s0 -j MASQUERADE
sudo iptables-save > /etc/iptables/rules.v4

Tras completar esta configuración, cualquier cliente de la red que arranque usando la opción PXE obtendrá por DHCP la configuración de red que apunta al archivo de instalación almacenado en el servidor TFTP. Cuando el cliente acceda al fichero de arranque al que apunta el servidor DHCP cargará el menú de instalación por red de Debian. Como la imagen de instalación tiene cargadas las órdenes configuradas en el fichero de preseed, al arrancar la instalación desde este menú se produce de forma desatendida.

Instalación desatendida con dnsmasq

Dnsmasq es una herramienta que funciona como un DNS, un servidor DHCP y un servidor TFTP para redes pequeñas al mismo tiempo. Esto permite reducir el flujo de trabajo para la instalación de sistemas operativos por red al tener que usar sólo una herramienta en vez de trabajar con los diferentes servidores por separado.

Para instalar dnsmasq:

sudo apt install dnsmasq

La configuración tanto de DHCP como de TFTP se realizan en el fichero /etc/dnsmasq.conf

interface=enp7s0
dhcp-range=10.0.0.2,10.0.0.200,6h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/srv/tftp

La línea interface indica la interfaz por la que escucha y reparte direcciones el servidor DHCP, con dhcp-range se indica el rango de direcciones y el tiempo de concesión del servidor DHCP, la orden dhcp-boot apunta al fichero de arranque, la línea enable-tftp habilita el servidor TFTP y con tftp-root se apunta a la ruta donde están los ficheros alojados en el servidor TFTP.

Para aplicar los cambios en la configuración se reinicia el servicio.

sudo systemctl restart dnsmasq.service 

El contenido del directorio /srv/tftp y la configuración para que el servidor DHCP/PXE/TFTP haga de router para los clientes es igual al documentado en el punto anterior.

Al encender por red un cliente de la red, el servidor dnsmasq le da una configuración TCP/IP y lo dirige al fichero de arranque del instalador.

iVentoy: una alternativa sencilla

Una alternativa a la creación de un servidor PXE/TFTP es el uso de herramientas más sencillas como iVentoy. Esta herramienta es una versión mejorada de un servidor PXE que permite arrancar e instalar imágenes iso en diferentes máquinas de la red de manera simultánea. Se trata de una herramienta muy sencilla y fácil de usar y que se puede implantar sin hacer casi ninguna configuración. Además, iVentoy cuenta con una interfaz gráfica a la que se accede a través de un navegador web. Soporta una gran variedad de sistemas operativos y arquitecturas.

La herramienta iVentoy es software libre y se distribuye a través de su repositorio de GitHub en forma de archivo comprimido. Para instalarla en el servidor PXE de la red simplemente hay que descargar y descomprimir el archivo y ejecutar el script iventoy.sh que está en el directorio raíz al descomprimir este archivo.

wget https://github.com/ventoy/PXE/releases/download/v1.0.20/iventoy-1.0.20-linux-free.tar.gz
tar -xvf iventoy-1.0.20-linux-free.tar.gz
cd iventoy-1.0.20/
sudo bash iventoy.sh start

Tras ejecutar la herramienta se puede acceder a la interfaz gráfica en el puerto 26000 del servidor.

usuario@preseedsrv:~/iventoy-1.0.20$ sudo bash iventoy.sh start
iventoy start SUCCESS PID=1164

Please open your browser and visit http://127.0.0.1:26000 or 
http://x.x.x.x:26000 (x.x.x.x is any valid IP address)

Desde ella se puede configurar el servidor iVentoy, establecer la configuración de DHCP, arrancar y parar el servicio y establecer una lista de equipos que tienen permiso o no para acceder al servidor.

Para hace accesible una imagen iso a los equipos de la red a través de iVentoy simplemente hay que llevar el archivo de imagen iso al directorio iso/ dentro del directorio de iVentoy.

cp deb12-inst-desatendida.iso iventoy-1.0.20/iso/

Desde la interfaz gráfica se puede también listar las máquinas que se han conectado al servidor para instalar una imagen desde él.

El uso de iVentoy aporta algunas ventajas frente a otras soluciones como la instalación de un servidor PXE/TFTP desde cero. La más evidente es que el proceso de instalación y configuración del servidor es mucho más simple en este caso puesto que no es necesario instalar cada uno de los servidores por separado y establecer la configuración específica para ellos.

Por otra parte, iVentoy facilita el proceso de instalación desatendida de un sistema operativo en múltiples equipos porque permite distribuir imágenes iso, a diferencia del servidor PXE/TFTP que distribuye imágenes en ficheros netboot comprimidos. Esto permite que se pueda distribuir para instalar en un entorno real con múltiples equipos el mismo archivo de imagen iso que se puede instalar en una máquina virtual en un entorno local de pruebas.

comments powered by Disqus

Relacionados

Uso básico de Wireshark

Wireshark es una herramienta que captura del tráfico que circula por una red y permite analizar el contenido de los paquetes que se envían y reciben desde las máquinas conectadas. Este software permite capturar los paquetes que viajan por una red, filtrarlos, y ver su contenido para poder analizar el tipo de tráfico del que se trata.

Leer

Despliegue de aplicaciones escritas en Python

En este post se muestra un ejemplo de flujo de trabajo para desplegar aplicaciones escritas en Python desde el entorno de desarrollo hasta el entorno de producción.

Leer

Configuración NAT en routers Cisco en GNS3

NAT (Network Address Translation o traducción de direcciones de red) es un mecanismo que consiste en modificar la información de direccionamiento en los paquetes IP que atraviesan un router. En este post se muestra un ejemplo de configuración de este mecanismo en un escenario de GNS3.

Leer