may 20, 2011
Automatizar instalaciones de CentOS con Kickstart
Kickstart/Anaconda permite realizar instalaciones desatendidas de sistemas CentOS (y por ende Red Hat y derivados) de modo que podamos instalar y configurar todos los equipos que queramos sin realizar la instalación uno a uno. Además podemos añadir tareas pre y post instalación para instalar software extra, realizar configuraciones, etc. Por supuesto esto es extremadamente útil para instalaciones masivas de sistemas.
Básicamente se tiene que crear un fichero (ks.cfg) en el cual se especifican las ordenes que tienen que realizarse en la instalación, esto incluye tanto los pasos de particionado como de configuración de red, paquetes, método de instalación, etc. Para aprender en profundidad las opciones que nos ofrece Anaconda y el fichero Kickstart os recomiendo encarecidamente leer la documentación oficial de Red Hat ya que aquí vamos a tratarlo por encima por ser demasiado extenso (hay incluso una GUI para hacerlo de forma gráfica).
Si necesitáis un fichero ks.cfg base, sabed que en cualquier sistema RHEL, CentOS cuando se termina la instalación automáticamente se guarda un fichero en /root/anaconda-ks.cfg que muestra como sería el fichero ks.cfg si quisieramos hacer una instalación igual de forma desatendida.
En este caso vamos a utilizar el siguiente ks.cfg, de nuevo os recomiendo leer la documentación de Red Hat citada anteriormente para saber personalizarlo al máximo:
install cdrom url --url http://ftp.udl.es/pub/centos/5.6/os/i386 lang en_US.UTF-8 keyboard es network --device eth0 --bootproto static --ip 192.168.0.157 --netmask 255.255.255.0 --gateway 192.168.0.1 --nameserver 80.58.0.33 --hostname pruebacentos.com rootpw --iscrypted $1$OarXPadVzGFPz3wjA0GwkkW3dp/ad/ firewall --enabled --port=22:tcp authconfig --enableshadow --enablemd5 selinux --disabled timezone --utc Europe/Madrid bootloader --location=mbr --driveorder=hda clearpart --linux --drives=hda part /boot --fstype ext3 --size=100 --ondisk=hda part pv.2 --size=0 --grow --ondisk=hda volgroup VolGroup00 --pesize=32768 pv.2 logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=256 --grow --maxsize=512 logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow %packages @core %post /usr/bin/yum -y update
Alguna particularidad de este ejemplo es que usamos la instalación desde un cdrom, que se trata de un netinstall y que descargamos la imagen desde FTP, que asignamos una IP estática, la clave de root, el particionado, únicamente instalamos el paquete base (@core) y que tras finalizar la instalación actualizamos el sistema con yum.
Existen varias formas de decirle a nuestra instalación que tiene que usar Kickstart, ya sea desde un Diskette, CD-ROM o desde la red. Esto podemos especificarlo en el momento del boot del instalador (boot prompt).
Instalación desde Diskette
linux ks=hd:fd0:/ks.cfg
Instalación desde CD
Especificamos la ruta directa en el CD al fichero Kickstart
linux ks=cdrom:/ks.cfg
Instalación desde red/url
En este caso tendríamos que tener un servidor DHCP que le asignara IP al equipo para poder acceder a la URL
linux ks=http://192.168.0.111/ks.cfg
De esta forma hay un problema, que tenemos que manualmente especificar la ruta al Kickstart en el boot prompt. El paso final para evitar esto es modificar la ISO de CentOS y especificar ahí este punto, de modo que no requiera intervención por nuestra parte en ningún punto.
Para ello, descargamos la ISO, en mi caso del NetInstall y la montamos como si fuera una ruta local:
# sudo mount -o loop -t iso9660 CentOS-5.6-i386-netinstall.iso /media/iso_centos
Ahora tenemos que modificar el fichero isolinux.cfg y modificar el boot así que copiamos todo a otra ruta (el CD se monta como solo lectura) y modificamos este fichero:
# cp -R /media/iso_centos/ /home/alex/
Ahora modificamos el fichero isolinux/isolinux.cfg y modificamos:
Antes:
label linux kernel vmlinuz append initrd=initrd.img
Después:
label linux kernel vmlinuz append initrd=initrd.img ks=cdrom:/isolinux/ks.cfg
En este caso copiaremos el fichero ks.cfg en la carpeta “isolinux”, y como luego lo quemaremos en un CD usamos la opción de cdrom. Si fuerais a cogerlo desde la red, en vez de cdrom ponéis la url del ks.cfg y solucionado.
Ahora solo nos quedaría hacer una nueva iso con nuestro netinstall modificado, podemos usar el comando mkisofs. Debemos especificarle el boot para que cree una ISO booteable:
cd /home/alex/iso_centos/ && mkisofs -o /home/alex/centos_5.6_kickstart.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-info-table -boot-load-size 4 -R -J -T .
Una vez que tenemos la iso creada solo falta grabarla a CD y arrancar con ella el servidor/PC, toda la instalación se debería hacer de forma automática y desatendida.

Comentarios recientes