miércoles, 18 de junio de 2014

Instalación desatendida en sistemas RedHat con Anaconda y Kickstart

Como Sys Admins en ocasiones necesitamos instalar un sistema GNU/Linux en varios equipos, y para ser eficientes, hacemos uso de un servidor de PXE. En adición a esto, cuando se trata de distribuciones derivadas de Red Hat como Scientific Linux, CentOS y Fedora (aunque no obligatoriamente), el asunto mejora aún más debido a que podemos hacer que entre en escena Kickstart.

Kickstart es un método que permite la instalación de un sistema operativo completo sin la intervención humana (desatendido o automatizado), previo a la creación de un fichero de configuración donde se establecen los parámetros a responder a las preguntas que comúnmente hace un proceso de instalación.

A continuación veremos cómo usar Kickstart para hacer una instalación desatendida de CentOS 6 Minimal de 32 o 64 bits.

El fichero de Kickstart puede compartirse desde un servidor para que los clientes (máquinas donde habremos de instalar el sistema) accedan al mismo durante el arranque de la instalación. El método más común, pero no el único, para compartir dicho fichero es un servidor Web (Apache, Ngnix, etc.).

En el contexto de nuestro Servidor PXE, Kickstart encaja perfectamente, ya que simplemente podemos agregar el parámetro correspondiente a la línea append initrd= para que busque el fichero de Kickstart y trabaje la instalación en base al mismo.

También es posible hacerlo durante el arranque de un CD/DVD, deteniendo el proceso y editando la opción del menú (presionando la tecla TAB) que instala el sistema para agregarle el mismo parámetro del fichero de Kickstart.

Dicho parámetro sería: ks=http://IP-SERVIDOR-WEB/RUTA/AL/fichero.cfg


Para el Servidor PXE deberíamos tener una entrada como la siguiente.
label centos32ks
 menu label ^1) CentOS 6.4 (Minimal 32bits Kickstart)
 kernel images/centos/32/vmlinuz
 append initrd=images/centos/32/initrd.img ip=dhcp ks=http://10.0.2.1/images/centos/ks/minimal-ks.cfg
Y el fichero de configuración de que se trata es el siguiente. Los comentarios trantan de explicar lo que hace cada parámetro.
#El orden de los siguientes parámetros no es importante.

#Configuración de la instalación
install #nueva instalación
autostep #pasar automáticamente al siguiente paso
firstboot --disable #no iniciar el agente de configuración luego de la instalación
text #instalación en modo texto, la gráfica es por defecto

#Configuración de red
network --device eth0 --bootproto dhcp #indicando a la interfaz eth0 modo automático 

#Origen de la instalación
url --url=http://10.0.2.1/images/centos/32/ #le pasamos la url del servidor PXE

#Crear el password de root
rootpw --iscrypted $1$g2SDnz8W$YNLiVPYZ2auVxzSj93AJw0 #creamos un hash en base a un password y lo colocamos aquí

#Configuración del login
authconfig --enableshadow --passalgo=sha512 --enablefingerprint #autenticación con password oculto (no muestra asteriscos) y algoritmo SHA512

#Configuración del gestor de arranque
bootloader --location=mbr #gestor de arranque en el MBR

#Limpiar/inicializar discos o particiones (usar con cuidado)
clearpart --all --initlabel #elimina todas las particiones

# Particionamiento del disco creando las particiones básicas correspondientes
part / --fstype="ext4" --size=30000
part /boot --fstype="ext4" --size=1000
part /home --fstype="ext4" --size=50000
part swap --fstype="swap" --size=4000

#Limpiar tablas de particiones inválidas
zerombr yes

#Reiniciar después de la instalación
reboot

#Configuración del firewall: habilitado y permitiendo los servicios indicados durante la instalación
firewall --enabled --http --ftp --ssh --telnet --smtp

#Configuración de SELinux para la instalación
selinux --disabled

#Configuración del escritorio
skipx
lang en_US.UTF-8
#keyboard 'la-latin1'
keyboard 'us-acentos'
timezone America/Santo_Domingo --isUtc

#Paquetes a ser instalados. Podemos incluir categrías completas con @ al principio o nombres de paquetes individuales como el caso de nano.
%packages --ignoremissing --excludedocs
@core
nano
%end #fin de la instalación de paquetes.
A continuación un vídeo donde podemos ver todo el proceso partiendo del arranque vía PXE hasta el login de la nueva instalación.


Todo esto funcionaría igual con cualquier otra distribución derivada como Fedora o Scientific Linux. De hecho, al finalizar una instalación siempre queda un fichero Kickstart en la ruta /root/anaconda-ks.cfg, el cual tiene todos los parámetros que indicamos manualmente durante la instalación. Estudiarlo nos da una idea más precisa de cómo trabaja este método.

También existe la herramienta gráfica system-config-kickstart, con la que podemos generar ficheros Kickstart haciendo clic en opciones organizadas por categorías.





Referencias y recursos:
https://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html
https://www.centos.org/docs/5/html/Installation_Guide-en-US/ch-redhat-config-kickstart.html

1 comentario: