Guida alle tecnologie

Installazione automatica di Fedora/CentOS/Red Hat con Kickstart

4 min read Guide tecniche Aggiornato 26 Sep 2025
Kickstart: installazione automatica CentOS/Fedora/Red Hat
Kickstart: installazione automatica CentOS/Fedora/Red Hat

Questa guida spiega come usare Kickstart per automatizzare installazioni di Fedora, CentOS e Red Hat, includendo script post-installazione per installare driver, pacchetti e immagini VM. Fornisce un esempio completo di file kickstart che puoi adattare, insieme a consigli di sicurezza, controllo qualità e una checklist per il deploy.

Perché usare Kickstart

Kickstart è il sistema di installazione automatica per le distribuzioni Red Hat-based: permette di definire partizionamento, pacchetti, utenti e script post-install in un singolo file. È utile quando devi distribuire sistemi su hardware eterogeneo e vuoi ripetibilità e personalizzazione senza ricorrere esclusivamente a immagini disco.

Importante: il file di Kickstart di esempio contiene credenziali e impostazioni d’esempio: trattale come modello, non come configurazione di produzione.

Come verificare un file Kickstart già esistente

Se hai installato Red Hat/Fedora manualmente, controlla /root per il file anaconda-ks.cfg. Quel file è il Kickstart che Anaconda ha generato durante l’installazione e rappresenta un ottimo esempio pratico.

Esempio completo di file Kickstart usato su Fedora

Di seguito il file Kickstart usato in un rollout di laptop Fedora con VMWare Player e immagini VM scaricate via wget (commenti originali preservati):

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

Note e adattamenti consigliati

  • Rimuovi o sostituisci tutte le credenziali in chiaro (user/password, chiavi, hash di root) prima del deploy.
  • Evita FTP in chiaro per trasferire immagini; preferisci SFTP/HTTPS o repository interni sicuri.
  • Valuta l’uso di repository locali o mirror interni per ridurre traffico esterno e dipendenze di rete.
  • Testa il kickstart in un ambiente virtuale (VM) prima di rollare su hardware fisico.

Importante: il file disabilita SELinux e esclude gli aggiornamenti del kernel. Queste scelte vanno valutate in base a policy di sicurezza e compatibilità driver.

Checklist per il deploy (ruoli)

  • Amministratore di sistema
    • Rimuovere credenziali hard-coded
    • Configurare repository interni e proxy
    • Applicare policy SELinux/rpm signing
  • Ingegnere QA
    • Testare installazione su 3 profili hardware differenti
    • Verificare partizionamento LVM e permessi delle directory VM
    • Verificare avvio grafico e driver video
  • Operatore di rete
    • Verificare accesso al server FTP/SFTP/HTTP usato per le immagini
    • Confermare risoluzione DNS per $host

Mini-metodologia: creare, testare, distribuire

  1. Genera un Kickstart di base installando una VM e recuperando /root/anaconda-ks.cfg.
  2. Modifica e rimuovi dati sensibili, aggiungi %packages e %post.
  3. Testa l’installazione in VM con il file kickstart.
  4. Automatizza la distribuzione (PXE/TFTP o media USB) e pianifica rollback.

Alternative e casi in cui Kickstart non è la scelta migliore

  • Se hai hardware identico e vuoi la copia esatta del disco, un’immagine (Ghost/Clonezilla) può essere più veloce.
  • Se devi gestire configurazioni complesse post-install, valuta strumenti di configurazione (Ansible, Puppet, Chef) insieme a Kickstart.
  • Per ambienti Windows-centrici con WDS/RIS, l’integrazione è limitata: Kickstart è specifico per Linux.

Compatibilità e migrazione

  • CentOS, Fedora e Red Hat usano il formato Kickstart con piccole differenze: verifica nomi pacchetto e gruppi.
  • Alcuni pacchetti elencati potrebbero essere deprecati o rinominati in versioni recenti della distro: testa e aggiorna la lista.

Sicurezza e privacy

Note di sicurezza rapide:

  • Non lasciare hash o password condivise nei repository pubblici.
  • Preferisci canali cifrati (SFTP/HTTPS) per trasferire immagini e pacchetti.
  • Controlla i permessi delle directory VM: evita 775 estesi se non necessari.

Riepilogo

Kickstart offre un modo ripetibile e flessibile per automazione d’installazione su macchine Linux based su Red Hat. L’esempio fornito mostra possibilità avanzate (partizionamento LVM, gruppi di pacchetti, script post-install) ma richiede adattamenti di sicurezza e test prima del deploy in produzione.

Se hai domande specifiche su parti del file kickstart o vuoi aiuto a convertirlo per la tua infrastruttura, lascia un commento: risponderò non appena possibile.

Fonte: www.netzensolutions.com.

Autore
Redazione

Materiali simili

Ricerca inversa indirizzo 411: guida completa
Ricerca indirizzi

Ricerca inversa indirizzo 411: guida completa

Disattivare i commenti su Facebook: guida
Social Media

Disattivare i commenti su Facebook: guida

Eliminare la cronologia di Facebook: guida completa
Privacy

Eliminare la cronologia di Facebook: guida completa

Scaricare video da JW Player in modo pratico
Guide tecniche

Scaricare video da JW Player in modo pratico

Come impostare Fuori sede in Microsoft Teams
Microsoft Teams

Come impostare Fuori sede in Microsoft Teams

Leggere messaggi eliminati su WhatsApp
Guida WhatsApp

Leggere messaggi eliminati su WhatsApp