Guía de tecnologías

Instalación automática con Kickstart para CentOS, Fedora y Red Hat

4 min read Linux Actualizado 26 Sep 2025
Kickstart para CentOS/Fedora — instalación automatizada
Kickstart para CentOS/Fedora — instalación automatizada

Resumen rápido

  • Kickstart captura las opciones de instalación y permite instalar paquetes y ejecutar scripts tras la instalación.
  • El ejemplo incluye particionado, grupos de paquetes, un extenso %packages y un %post para configuración adicional.
  • Probar en máquinas virtuales y evitar contraseñas en texto claro son pasos críticos antes del despliegue en producción.

Introducción

Trabajar en soporte TI suele implicar reinstalar sistemas con CentOS, Fedora y Red Hat. Un archivo Kickstart automatiza la instalación, instala paquetes y ejecuta scripts de postinstalación. Si ya instalaste una distribución Red Hat, revisa /root/anaconda-ks.cfg para ver un archivo Kickstart generado por el instalador y aprender por ejemplo.

A continuación se muestra un ejemplo real usado para desplegar portátiles Fedora con VMware Player y un par de imágenes virtuales descargadas por wget. Preferí Kickstart y scripts sobre herramientas de imagen como Ghost porque permite reutilizar la misma instalación en distintos tipos de hardware y adaptar instalaciones fácilmente con scripts.

Ejemplo de archivo Kickstart

A continuación está el kickstart usado en los equipos Fedora (comentarios traducidos y compactados arriba). El bloque de código se preserva exactamente; adáptalo según tus necesidades.

text
install
cdrom
lang en_US.UTF-8
keyboard uk
timezone --utc Europe/London
rootpw  --iscrypted $$nndedddewfooofcerd3r434
selinux --disabled
# Custom user added
user --name=kevinmitnick --groups=users --password=HackThePlanet
authconfig --enableshadow --passalgo=sha512 --enablefingerprint
firewall --service=ssh
# 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 --all --drives=sda
ignoredisk --only-use=sda
part /boot --fstype=ext2 --asprimary --size=500
part /OtherOS --fstype=ext4 --asprimary --size=10240
part swap --asprimary --size=2048
part pv.fedora1000 --grow --asprimary --size=500
volgroup fedora --pesize=32768 pv.fedora1000
logvol /centosVM --fstype=ext4 --name=centosVM --vgname=fedora --size=30720
logvol /home --fstype=ext4 --name=home --vgname=fedora --size=81920
logvol / --fstype=ext4 --name=root --vgname=fedora --size=25600
logvol /windowsVM --fstype=ext4 --name=windowsVM --vgname=fedora --size=40960
bootloader --location=mbr --driveorder=sda --append="nomodeset rhgb quiet"
# setup the network with DHCP
network --device=eth0 --bootproto=dhcp
# packages that will be installed, anything starting with an @ sign is a yum package group.
%packages
@admin-tools
@authoring-and-publishing
@base
@core
@development-libs
@development-tools
@dial-up
@editors
@education
@electronic-lab
@engineering-and-scientific
@eclipse
@fedora-packager
@fonts
@gnome-desktop
@gnome-software-development
@graphical-internet
@graphics
@hardware-support
@input-methods
@java
@java-development
@kde-desktop
@kde-software-development
@legacy-fonts
@office
@online-docs
@printing
@sound-and-video
@system-tools
@text-internet
@x-software-development
@base-x
kpackagekit
system-config-network
scribus
xfsprogs
mtools
gpgme
gpm
rpmdevtools
koji
mercurial
lua
pylint
rpmlint
plague-client
cmake
mock
bzr
pptp
kdeedu-marble
minicom
opencv
yum-priorities
plotutils
openoffice.org-opensymbol-fonts
qtcurve-gtk2
gvfs-obexftp
glibmm24-devel
gnome-vfs2-devel
libsigc++20-devel
libart_lgpl-devel
kdepim
konversation
ImageMagick
digikam
kipi-plugins
kdegraphics
gypsy
gpsd
hdparm
m17n-db-tamil
m17n-db-gujarati
m17n-db-kannada
m17n-db-hindi
gok
m17n-db-oriya
m17n-db-bengali
m17n-contrib-sinhala
m17n-db-assamese
m17n-db-punjabi
iok
m17n-db-telugu
m17n-db-malayalam
xorg-x11-fonts-ISO8859-1-100dpi
urw-fonts
ghostscript-fonts
kdepim
vorbis-tools
amarok
jack-audio-connection-kit
kaffeine
kdemultimedia
vbetool
gssdp
geoclue
createrepo
radeontool
PackageKit-command-not-found
obexftp
enca
festival
ntpdate
xsel
gupnp
rdesktop
fuse
ncftp
mesa-libGLU-devel
xorg-x11-apps
xscreensaver-gl-extras
gdm
xscreensaver-extras
xscreensaver-base
xterm
xorg-x11-resutils
gitk
git-gui
dia
tftp
python-crypto
boost-devel
valgrind
subversion
cvs
thunderbird-lightning
python-sqlite2
asciidoc
glibc-static
tcllib
python-psycopg*
ssh*
perl-ExtUtils-MakeMaker
perl-Net-Telnet
perl-HTML-FromText
libICE.so.6
libSM.so.6
libXmu.so.6
libXp.so.6
libXpm.so.4
libXt.so.6
help2man
cscope
ctags
git
kernel-devel
tftp-server
texlive-latex
texi2html
cmake
transfig
alsa-lib
libXScrnSaver
qt
qt-x11
libasound.so.2

libXss.so.1
libQtDBus.so.4
libQtGui.so.4
pulseaudio
alsa-plugins-pulseaudio
pulseaudio-esound-compat
pulseaudio-libs
pulseaudio-libs-glib2
pulseaudio-module-zeroconf
pulseaudio-libs-zeroconf
xmms-pulse
pulseaudio-module-gconf
wine-pulseaudio
xine-lib-pulseaudio
pulseaudio-utils
pulseaudio-module-bluetooth
padevchooser
paman
paprefs
pavucontrol
pavumeter
ncurses-devel.i686
%end
%post --log=/root/my-post-log
exec < /dev/tty3 > /dev/tty3
chvt 3
echo
echo "################################"
echo "# Running Post Configuration   #"
echo "################################"
# prevent future yum updates pulling down & install new kernels (and breaking VMware & video drivers).
echo "exclude=kernel*" >> /etc/yum.conf
# update the system
yum update -y 
# install rpm fusion repo
rpm -Uvh \
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
# disable rpmfusion repo, to prevent a yum update contaminating the system with rpmfusion rpms.
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/rpmfusion-*
# install video drivers - enabling rpmfusion repos on the command line.
yum -y --enablerepo=rpmfusion-nonfree --enablerepo=rpmfusion-free  --enablerepo=rpmfusion-free-updates --enablerepo=rpmfusion-nonfree-updates install kmod-nvidia xorg-x11-drv-nvidia-libs.i686 xorg-x11-drv-nvidia-libs.x86_64 akmod-nvidia
# start akmods on boot
chkconfig akmods on
# add pcadmin to sudoers
echo "kevinmitnick ALL=(ALL)       ALL" >> /etc/sudoers
# set perms on vmware partitions so users in the users group can create vm's
chown :users /windowsVM && chmod 775 /windowsVM
chown :users /centosVM && chmod 775 /centosVM
# Make sure the system boots X by setting the system to run level 5
sed -i 's/id:3:initdefault:/id:5:initdefault:/g' /etc/inittab
# install openvpn & configure
wget ftp://$host/pub/VPN/OpenVPN/Linux/openvpnclient-custom-settings-1.6-3.i386.rpm
rpm -ivh openvpnclient-custom-settings-1.6-3.i386.rpm
cd /etc/openvpn/
rm client.conf-*
wget ftp://$host/pub/VPN/OpenVPN/Linux/64bit/client.conf-1
mv client.conf-1 client.conf-0
rm -f /openvpnclient-custom-settings-1.6-3.i386.rpm
# add Kevin Mitnick to group users
usermod -a -G users kevinmitnick
# pull down vmware images
cd /windowsVM/
wget --user=magicinstaller --password=hacktheplanet ftp://magicinstaller:fubar@ftp.$host.com/images/windowsVM.tar.gz
tar -xvzf windowsVM.tar.gz
cd /centosVM/
wget --user=magicinstaller --password=hacktheplanet ftp://magicinstaller:fubar@ftp.$host.com/images/centosVM.tar.gz
tar -xvzf centosVM.tar.gz
# create symlink as instructed
cd /usr/lib; ln -s libtinfo.so libtermcap.so.2
# confirm perms are set correctly
chown -R :users /windowsVM && chmod -R 775 /windowsVM
chown -R :users /centosVM && chmod -R 775 /centosVM
# swap to console 1
chvt 1

Explicación de las secciones clave

  • Encabezado: “text”, “install”, “cdrom” determinan modo de instalación. “lang” y “keyboard” configuran localización.
  • rootpw / user: “rootpw –iscrypted” indica contraseña cifrada. Evita almacenar contraseñas en texto claro; usa hashes.
  • Particionado: clearpart/part/volgroup/logvol configuran particiones y LVM.
  • network: configura la red por DHCP en eth0.
  • %packages: lista paquetes y grupos que se instalarán.
  • %post: scripts de postinstalación; aquí se actualiza el sistema, se añaden repos, drivers y se descargan imágenes.

Important: revisa cada comando del %post—wget con credenciales en texto claro y ediciones en /etc/sudoers requieren atención de seguridad.

Post-instalación y personalización

El bloque %post es donde automatizas tareas adicionales: instalar repositorios, drivers propietarios, añadir usuarios a grupos, cambiar permisos y restaurar imágenes. Siempre redirige logs (como –log=/root/my-post-log) para depurar.

Alternativas y cuándo Kickstart falla

  • Imágenes completas (Ghost, Clonezilla): mejores para duplicar una configuración exacta en hardware idéntico. Fallan al cambiar mucho el hardware.
  • Kickstart: ideal para instalaciones reproducibles y adaptables a distintos hardware pero requiere scripting para ajustes hardware-específicos.
  • Herramientas de gestión (Ansible/Puppet): complementan Kickstart para configuración postarranque y continuo.

Mini-metodología para un despliegue confiable

  1. Captura: instala manualmente en VM y guarda /root/anaconda-ks.cfg.
  2. Limpieza: elimina contraseñas en texto y sustituye por hashes o variables seguras.
  3. Prueba: ejecuta el kickstart en VMs que simulen distintos discos y redes.
  4. Audita: revisa %post por comandos peligrosos o credenciales expuestas.
  5. Despliega por fases: imagen piloto → 10% → 50% → resto.

Checklist de despliegue (roles)

  • Administrador de sistemas:
    • Probar kickstart en VM.
    • Verificar particionado y volúmenes LVM.
    • Validar arranque gráfico (runlevel / systemd target).
  • Equipo de soporte de escritorio:
    • Confirmar drivers propietarios (VMware, NVIDIA) y licencias.
    • Verificar permisos de carpetas compartidas (/windowsVM, /centosVM).
  • Seguridad:
    • Eliminar contraseñas en texto claro.
    • Revisar /etc/sudoers y añadir reglas con visudo.

Decision tree para elegir método (Mermaid)

flowchart TD
  A[¿Hardware homogéneo?] -->|Sí| B[Usar imagen completa]
  A -->|No| C[¿Necesitas flexibilidad y scripts?]
  C -->|Sí| D[Usar Kickstart + %post]
  C -->|No| B
  D --> E[Complementar con Ansible/Puppet]

Seguridad y privacidad

  • Nunca incluyas credenciales en texto claro en repositorios o en archivos compartidos.
  • Usa –iscrypted para rootpw y genera hashes con herramientas oficiales.
  • Evita editar /etc/sudoers sin visudo; una línea errónea puede bloquear acceso.
  • Si manejas datos personales, aplica políticas GDPR/locales: minimiza datos en imágenes y registra auditoría de accesos.

Nota: el ejemplo incluye nombres y contraseñas demostrativos; cámbialos antes de cualquier uso real.

Pruebas y criterios de aceptación

  • Una instalación limpia arranca hasta el login gráfico.
  • Paquetes importantes (p. ej. ssh, sudo) están instalados y configurados.
  • Scripts %post completan sin errores en /root/my-post-log.
  • Permisos de /windowsVM y /centosVM permiten acceso por el grupo users.

Resumen

Kickstart es una herramienta potente para automatizar instalaciones Linux y, combinada con scripts de postinstalación y herramientas de configuración, ofrece flexibilidad alta frente a imágenes estáticas. Prueba siempre en entornos controlados, audita scripts y evita credenciales en texto claro.

Importante: adapta el ejemplo a tu infraestructura, elimina credenciales de ejemplo y prueba en máquinas virtuales antes de su uso en producción.

Fuentes y comentarios: guía original provista por www.netzensolutions.com. Si tienes preguntas, deja un comentario y el autor responde cuando sea posible.

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach