Quando devi installare molti server o vuoi rifare più volte lo stesso server puoi ricorrere al Kickstart Linux.
L’installazione del sistema operativo Linux RedHat, e sue versione community come la CentOS, è stata semplificata e velocizzata di release in release, tuttavia per installare da zero il sistema operativo devi ripetere alcuni passaggi che possono essere automatizzati con il kickstart linux.
La definizione da Wikipedia:
The Red Hat Kickstart installation method[1] is used primarily (but not exclusively) by the Red Hat Enterprise Linux operating system to automatically perform unattended operating system installation and configuration.
Il kickstart è un file di configurazione .cfg contenente una serie di opzioni che Anaconda ( l’installer dei SO Red Hat, CentOS, … ) è in grado di leggere ed eseguire in modo automarico.
Generare il Kickstart Linux
La creazione del kickstart Linux puoi ottenerla con diversi metodi:
- scrivendolo a mano, ossia compilando un file di testo ( con estensione .cfg ) che contenga le opzioni per anaconda;
- utilizzando uno strumento come il system-config-kickstart tool messo a disposizione dalle distribuzioni basate su RedHat e anaconda;
- partendo dal file anaconda-ks.cfg presente nel path /root/ dopo una installazione manuale;
Un esempio del kickstart linux
Prendo ad esempio il file anaconda-ks.cfg presente sulla mia ultima installazione CentOS release 6.4 (Final):
# Kickstart file automatically generated by anaconda. #version=DEVEL install cdrom lang en_US.UTF-8 keyboard it2 network --onboot no --device eth0 --bootproto dhcp --noipv6 network --onboot no --device eth1 --bootproto dhcp --noipv6 rootpw --iscrypted $6$UDsM8.eWFIW70$cndt1NEM9sCxk8doprgmKItZ/BPJsb.13/jJh.5vT.SM5AjuQ4TEIKbe17xbmJ4bKNMUD8LOoLmKxb6H. firewall --service=ssh authconfig --enableshadow --passalgo=sha512 selinux --enforcing timezone --utc Europe/Rome bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # 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 #part /boot --fstype=ext4 --asprimary --size=200 #part pv.008002 --grow --size=200 #volgroup vg_root --pesize=4096 pv.008002 #logvol / --fstype=ext4 --name=lv_root --vgname=vg_root --size=18228 #logvol swap --name=lv_swap --vgname=vg_root --size=2048 %packages --nobase @core %end
il file è molto corto perchè:
- ho installato la CentOS come minimal ossia con un ridottissimo numero di pacchetti
- non ci sono le configurazioni post installazione ( ne parlerò in un prossimo articolo )
Leggendo il file dalle prime linee noti che quelle precedute dal carattere # sono dei commenti;
linea 04: indica che vuoi eseguire una nuova installazione;
linea 05: l’installazione sarà eseguita dal cdrom, nella realtà le ultime release di CentOS si installano da DVD ma l’opzione è rimasta cdrom;
linea 06: imposta il linguaggio del sistema operativo, io installo sempre i SO in Inglese;
linea 07: imposta il tipo di tastiera, essendo la mia una tastiera italiana estesa ho messo it2;
linee 08-09: imposta le due schede di rete eth0 ed eth1 per non partire al boot, non attivare l’IPv6 e recuperare l’IP dal DHCP;
linea 10: imposta la password di root in modo criptato, è una opzione di sicurezza che ti evita il rischio di diffondere la tua password di root se qualcuno legge il file di configurazione del kickstart linux;
linea 11: imposta la presenza del firewall e la regola che ti permetterà di accedere alla tua installazione via ssh;
linea 12: imposta il login mediante /etc/shadow e crypt delle passord con l’algoritmo SHA512;
linea 13: imposta l’selinux in modalità enforcing;
linea 14: imposta il timezone su Roma necessario alla sincronizzazione dell’ora del server;
linea 15: questa linea contiene alcune delle opzioni di start del SO, queste opzioni sono impostate per il bootloader ossia la fase di boot del sistema ed indicano ad anaconda di installare il bootloader nella mbr del disco sda ( il primo ed unico disco presente nel mio server ) mettendo in coda al comando di boot le opzioni contenute nel parametro “append”
le linee 16-27 sono commentate perchè ritenute da anaconda pericolose se eseguite senza controllo, ricorda che questo file è stato generato in automatico, nel file che crei tu per la tua installazione dovrai controllare che le opzioni descritte sono corrette e decommentarle;
linea 20: esegui la pulizia delle partizioni qualora fossero presenti sul disco, pensa ad una reinstallazione su hw già installato;
linee 22-23: crei due partizioni, la prima per il /boot, di tipo ext4, primaria, di 200Mb sufficienti ed abbondanti per ospitare l’immagine di boot del SO. La linea 23 crea una partizione di tipo PhisicalVolume (pv) 8e ( LVM ) di 200Mb;
linee 25-27: crei il VolumeGroup ed i LogicalVolume relativi alla / ( root ) in cui installeremo il sistema operativo e la particione di swap;
linea 29: inizia la sezione relativa all’installazione dei pacchetti che vuoi trasferire sul server con il kickstart linux;
linea 30: imposti i pacchetti di tipo @core la @ è utilizzata per indicare un gruppo di pacchetti, in questa mia installazione è l’unico gruppo che desidero installare;
linea 31: chiudi la sezione relativa all’installazione dei pacchetti.
Cosa avrai al termine dell’installazione
Il sistema operativo che installerai con questo kickstart linux è una versione CentOS 6.4 ( se parti dal Dvd della CentOS 6.4 ) in inglese con tastiera italiana estesa ed i pacchetti minimi installati.
Il sistema avrà una partizione di /boot da 100Mb e una SWAP di 2Gb oltre al filesystem principale di 17Gb circa;
Inoltre avrai già configurato le due schede di rete perchè non siano avviate al boot e quando le attiverai mediante linea di comando andranno a cercare un server DHCp da cui ottenere le informazioni di configurazione.
Come si usa il kickstart linux
Puoi creare tutti i file .cfg che desideri e includerli in un file immagine .img, se non sai creare un file img con Linux ti invito a leggere questo articolo.
In Fase di installazione avrai bisogno sia del floppy.img sia del Dvd della CentOS 6.4 o altra versione Red Hat.
Se stai installando una macchina virtuale linux, ad esempio una Vbox i passaggi, dopo la creazione della Vbox Linux sono:
Step 2:
Step 3:
Step 4:
Step 5:
Step 6:
Step 7:
Avvia la Vbox, Step 8:
Step 9:
Step 10:
Step 11:
Al termine dell’installazione con il Kickstart Linux la Vbox si riavvia in automatico e dovrai deselezionare il Floppy ed il CDRom per consentire al tuo nuovo server di avviarsi correttamente dall’HD locale su cui è installato.
Buon lavoro !!!
4 commenti
Vai al modulo dei commenti
Ciao Mauro,
potresti postare una configurazione del file kickstart con un esempio di postinstall?!
Inoltre volevo chiederti come fai ad aggiungere altri pacchetti alla nuova iso. Io sto cercando per esempio di aggiungere gli rpm di docker, ma ogni volta che creo l’ISO, mi da un errore riguardo alla scelta del software da installare. Non capisco bene come creare le repository nella ISO. Potresti aiutarmi?
Grazie mille,
Fabrizio
Autore
Ciao Fabrizio,
è da molto tempo che non rivedo i miei kickstart, l’articolo è del 2013 e molte cose sono cambiate, ti consiglio di far riferimento alla documentazione ufficiale sia per le impostazioni di postinstall.
In merito ai pacchetti da aggiungere che errore ti restituisce? potrebbero mancarti delle dipendenze?
La cosa migliore è riferirti al repository del sw che desideri aggiungere ed in fase di postinstall installare i pacchetti che i occorrono.
Ciao Mauro,
grazie per la risposta! No non mi da un errore riguardo le dipendenze. Quando carico l’ISO in virtualbox, inizia a caricare e poi mentre sta iniziando ad installare mi mostra una schermata con diverse voci, tra cui la selezione del software scelto e affianco a questa un punto esclamativo. Dopodiche’ l’installazione non va piu’ avanti.
Ho usato il comando
repo –name=”nome repo” –baseurl=”link della repo con i pacchetti”
e poi ho aggiunto in %packages docker-ce. E probabilmente per questo motivo che mi da errore. Ma non so come creare una repo nella ISO.
Se invece creo una repo nella sezione %postinstall allora funziona tutto. Tuttavia’ non capisco perche’ non il comando repo non va.
Autore
Ciao Fabrizio,
come hai creato il repository nella ISO? Se non riscordo male, come ti ho scritto è molto tempo che non creo nuovi kickstart, dovresti usare un comando tipo “createrepo –update -g [repodata/…..xml] .”
Che va eseguito nella directory dei pacchetti da aggiungere al Dvd nel path in cui hai montato la ISO e copiato i nuovi pacchetti.
che genera un nuovo files nella repodata che dovrai aggiungere sul CD o Dvd.
Nel sito RedHat o Centos ci dovrebbe essere un’ottima guida sui kickstart che puoi seguire.