Kickstart: Instalaciones automatizadas en Red Hat, Centos o Rocky Linux

Hoy vamos a ver una de las herramientas más potentes y desconocidas para automatizar instalaciones en sistemas basados en Red Hat Enterprise Linux, como Rocky Linux 9, AlmaLinux o CentOS Stream: el método de instalación Kickstart.

Kickstart permite a los administradores de sistemas generar un único fichero que describe todos los pasos que normalmente realizaríamos durante una instalación manual: idioma, particionado, paquetes, red, usuarios, políticas de seguridad, postinstalación, etc.

Este archivo puede almacenarse en un servidor central, distribuirse por PXE, o integrarse directamente dentro de una ISO personalizada. Gracias a ello podemos desplegar decenas o cientos de máquinas de forma idéntica, reproducible y sin intervención humana.

En esta guía te mostraré cómo crear un entorno básico para generar una ISO personalizada de Rocky Linux 9 utilizando un fichero Kickstart propio.

Descargar y crear un recurso de instalación para Rocky Linux

Voy a ir bastante al grano. Antes de crear el guion del Kickstart, debemos descargar la ISO en la que nos basaremos, en nuestro caso la penúltima versión de Rocky Linux, que es la versión 9.

sudo yum install wget -y
wget https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.0-x86_64-dvd.iso

Montamos la imagen en una ubicación del sistema que utilicemos para trabajar.

sudo mkdir /mnt/iso
sudo mount Rocky-9.0-x86_64-dvd.iso /mnt/iso

Una vez montado copiamos el contenido a una carpeta:

sudo mkdir -p /opt/kickstart/rocky9
sudo cp -r /mnt/iso/* /opt/kickstart/rocky9/

Y ya podemos desmontar la ISO

sudo umount /mnt/iso

Crear el fichero de Kickstart para Rocky Linux 9

El fichero que vamos a crear se llamará «ks.cfg», y estará ubicado dentro de la ruta /opt/kickstart/rocky9/. Antes de continuar, os recomiendo que echéis un vistazo al aparto de documentación de Red Hat, que contiene una herramienta vía web que nos facilita la generación de estos ficheros: Red Hat Kickstart Labs

Un contenido básico, que he creado para esta entrada:

# Kickstart básico para Rocky Linux 9
 
# --- Contraseña de root (usar hash SHA-512) ---
rootpw --iscrypted $6$GENERATUHASHAQUI$...
 
# --- Idioma, teclado y zona horaria ---
lang en_US
keyboard es
timezone Europe/Madrid --utc
 
# --- Primera configuración ---
firstboot --enable
 
# --- Ignorar discos no usados ---
ignoredisk --only-use=sda
 
# --- Modo instalación ---
text
cdrom
 
# --- Repositorios desde la ISO ---
repo --name="BaseOS" --baseurl=file:///run/install/repo/BaseOS
repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream
 
# --- Bootloader ---
bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
 
# --- Particionado ---
zerombr
clearpart --all --initlabel
 
part /boot --fstype=ext4 --size=1024
part pv.1 --size=1 --grow
 
volgroup vg_root pv.1
 
logvol /     --fstype=xfs --name=lv_root --vgname=vg_root --size=5120
logvol /opt  --fstype=xfs --name=lv_opt  --vgname=vg_root --size=5120 --fsoptions="nodev"
logvol /var  --fstype=xfs --name=lv_var  --vgname=vg_root --size=5120 --fsoptions="nodev"
logvol /tmp  --fstype=xfs --name=lv_tmp  --vgname=vg_root --size=2048 --fsoptions="nodev,noexec,nosuid"
logvol /home --fstype=xfs --name=lv_home --vgname=vg_root --size=5120 --fsoptions="nodev"
logvol swap  --fstype=swap --name=lv_swap --vgname=vg_root --size=2048
 
# --- Seguridad ---
firewall --disabled
selinux --permissive
 
# --- Servicios ---
services --disabled="chronyd"
 
# --- Autenticación ---
authselect select minimal --force
 
# --- Reiniciar al finalizar ---
reboot
 
# --- Paquetes a instalar ---
%packages
@^server-product-environment
@standard
@network-tools
@security-tools
 
wget
lsof
bind-utils
git
ruby
net-tools
sg3-utils
nfs-utils
rpcbind
cloud-init
dnf-plugins-core
 
%end

Este Kickstart está adaptado a Rocky Linux 9 y utiliza prácticas recomendadas actuales (XFS, authselect moderno, particionado LVM seguro…).

Otro fichero muy importante es el ubicado en «isolinux/isolinux.cfg», primero guardamos el fichero original:

cp -p /opt/kickstart/rocky9/isolinux/isolinux.cfg /opt/kickstart/rocky9/isolinux/isolinux.cfg.original

Y añadimos la siguiente configuración al fichero «isolinux.cfg»

Primero guardamos el fichero original:

cp -p /opt/kickstart/rocky9/isolinux/isolinux.cfg \
      /opt/kickstart/rocky9/isolinux/isolinux.cfg.original

Editamos isolinux.cfg y añadimos una entrada personalizada:

default vesamenu.c32
timeout 600
menu clear
 
label kickstart
    menu label ^Instalar Rocky Linux 9 (Kickstart Davidochobits)
    kernel vmlinuz
    append initrd=initrd.img inst.ks=cdrom:/ks.cfg inst.stage2=hd:LABEL=Rocky-9-0-x86_64 inst.text ipv6.disable=1 net.ifnames=0 biosdevname=0

Una vez hecho esto guardamos y salimos.

Es importante que apuntemos la LABEL, ya que la necesitaremos en el siguiente paso.

Podemos comprobarla con:

isoinfo -d -i Rocky-9.0-x86_64-dvd.iso | grep -i "Volume id"

Antes de nada vamos a validar el fichero «ks.cfg» con la herramienta, para ello vamos a instalar el paquete «pykickstart«:

sudo dnf install pykickstart -y

Tal y como se ve en la imagen:

Instalamos pykickstart

Una vez hecho esto validamos el fichero:

ksvalidator  ks.cfg

Si nos muestra algún mensaje, debemos seguir las instrucciones que nos indica hasta que no tengamos ningún error ni aviso.

Ahora toca la última parte, que es crucial, debemos generar la ISO, para eso, en mi caso lo haré de la siguiente manera, primero instalaremos el paquete «xorriso» (sí, se llama así de verdad), que es un emulador del «mkisofs«, tal y como se ve en la imagen:

Instalamos mkisofs

Y ahora sí, creamos la ISO, indicando como os dije antes, la LABEL, tras el parámetro «-V«, tal y como se observa:

mkisofs -o RockyLinux9Davidochobits.iso \
-b isolinux/isolinux.bin \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-R -J -v \
-V "Rocky-9-0-x86_64" \
-T /opt/kickstart/rocky9

Vemos el resultado:

Finaliza la generación de la ISO

Una vez generada la imagen la copiamos fuera de la máquina virtual, que es lo que yo estoy utilizando, para poder utilizar la ISO para crear una nueva máquina y probarla.

Fuente Interesante: https://www.lisenet.com/2021/configure-pxe-boot-server-for-rocky-linux-8-kickstart-installation/