Kickstart este sistemul Red Hat pentru automatizarea instalării mașinilor virtuale. Dintr-un fișier text sunt furnizate diferite răspunsuri programului de instalare RHEL/CentOS 7. Cu aceste răspunsuri, programul de instalare funcționează automat, fără a mai fi nevoie de intervenția utilizatorului uman pentru a oferi parola de root, nume utilizator obișnuit, pachete instalate, rețea, etc. În acest mod, pot fi instalate sute de mașini virtuale identice - este ceea ce practică, de fapt, firmele furnizoare de webhosting și care oferă virtualizare KVM.
Una din problemele instalării automatizate prin intermediul fișierului Kickstart este că nu sunt incluse setările personalizate după ce instalarea de bază a fost completată. Întotdeauna trebuie să aveți încredere în cunoștințele voastre. Totuși, dacă veți încerca să finalizați cu bine construirea fișierului kickstart fără să urmați instrucțiunile de mai jos, fie sunteți foarte buni în ceea ce faceți, fie v-a surâs zeița Fortuna mai ceva ca lui Elmer Sherwin. ATENȚIE! Dacă cineva rău intenționat are acces la acest fișier, poate afla parola de root folosită și să ne compromită sistemele!
Pașii de instalare automată sunt următorii:
- configurarea și editarea fișierului anaconda-ks.cfg după necesități (voi descrie mai jos cum se face) - pentru ușurință, putem redenumi fișierul în ks.cfg;
- mutarea acestui fișier pe un server ftp cu acces public - de aceea am explicat într-un articol anterior cum se creează în câțiva pași un server ftp minimal; fișierul va putea fi accesat la o adresă de forma ftp://192.168.122.1/pub/ks.cfg;
- montarea imaginii media CentOS 7 în QEMU/KVM;
- pornim instalarea; la apariția primului meniu, selectăm Install CentOS 7 și apăsăm TAB:
- va apărea o linie asemănătoare cu cea de mai jos, iar la urmă cursorul:
> vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet_
- la final vom adăuga locul unde se află fișierul kickstart (câteva exemple mai jos):
ks=ftp://192.168.122.1/pub/ks.cfg
sau
ks=cdrom:/ks.cfg
sau
ks=hd:sdb1:/ks.cfg
sau
ks=http://192.168.122.1/ks.cfg
sau
ks=nfs:192.168.122.1:/ks.cfg - ENTER pentru a porni instalarea folosind datele din fișierul Kickstart.
Există două metode pentru a crea fișierul de configurare Kickstart:
1. Articolul pornește de la premisa că deja ați instalat prima mașină virtuală CentOS 7 și ați făcut setările necesare în timpul acestei instalări. Din proaspăt-instalatul sistem virtual CentOS 7, copiați pe sistemul local (mașina gazdă) fișierul /root/anaconda-ks.cfg:
Vom folosi acest fișier ca template pentru a realiza fișierul Kickstart din care vom face instalările viitoare. Tot ce trebuie să facem este să edităm acest fișier. Un exemplu de fișier Kickstart este mai jos:
$ cat ks-bun.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda
# Accept Eula
eula --agreed
# Reboot afer installing
reboot
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8# Network information
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network --hostname=test.despre-linux.eu# Root password
rootpw --iscrypted $6$VLj4eYxOHhgjIANwjCrQvIyzBx.D9JOmhrDqqRsxskrFrnkqk2sgws5VUQnXxM2QSj7bkH0
# System services
services --disabled="chronyd"
# System timezone
timezone Europe/Bucharest --isUtc --nontp
user --groups=wheel --name=bobses --password=$6$0iQP2qNj6I4GRObqZGX2rnNZHG.iUgjY8OeBxMwqQp.EIVLPulPjWK0 --iscrypted --gecos="Bobses"
# X Window System configuration information
xconfig --startxonboot
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --ondisk=vda --size=512
part pv.252 --fstype="lvmpv" --ondisk=vda --size=8703
volgroup cl --pesize=4096 pv.252
logvol / --fstype="xfs" --size=6647 --name=root --vgname=cl
logvol swap --fstype="swap" --size=1024 --name=swap --vgname=cl
logvol /home --fstype="xfs" --size=1024 --name=home --vgname=cl# Selinux State
selinux --permissive%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
kexec-tools
%end%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty
%end%post
yum -y upgrade%end
Nu voi insista prea mult pe fiecare componentă a acestui fișier, căci sunt destul de clar explicate în liniile comentate. Mai mult, vom vedea că interfața grafică a configurării fișierului kickstart este și mai explicită.
Comanda auth setează Shadow Password Suite (--enableshadow) și algoritmul de criptare SHA 512 (--passalgo=sha512). O parolă criptată cu SHA 512 începe cu $6:
auth --enableshadow --passalgo=sha512
Următoarea linie este simplă și arată că instalarea va începe folosind CD-ROM-ul:
cdrom
La fel de bine, putem specifica sursa fișierelor de instalare ca fiind pe un server NFS, unul FTP sau HTTP:
nfs --server=192.168.122.1 --dir=/inst
sau
url --url ftp://192.168.122.1/pub/inst
sau
url --url http://192.1686.122.1/inst
Dacă fișierul ISO cu CentOS 7 există pe o partiție locală, putem specifica acest lucru:
harddrive --partition=/dev/sda8 --dir=tmp/bobses
Comanda --firstboot=enable e mai mult decât clară: rulează agentul de configurare la primul boot.
Directiva --ignoredisk specifică volumele virtuale vda.
Comanda lang stabilește limba folosită în timpul procesului de instalare; comanda keyboard se explică singură:
lang en_US.UTF-8
keyboard --vckeymap=us --xlayouts='us'
Directiva eula (EULA = End User License Agreement) nu mai are nevoie de explicații:
eula --agreed
Urmează o linie care stabilește rețeaua ce va fi folosită de noua mașină virtuală: network. Stabilim dacă vom folosi un server DHCP, interfața de rețea, dar și dacă vrem activarea IPv6. De asemenea, aici se poate seta și hostname-ul noii instalări:
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network --hostname=test.despre-linux.eu
Un exemplu în care stabilim un IP static, adresa gateway și serverul DNS este mai jos (toate informațiile directivei network trebuie să fie pe o singură linie):
network --bootpro static --device=eth0 --gateway=192.168.122.1 --ip=192.168.122.150 --netmask=255.255.255.0 --noipv6 --nameserver=192.168.122.1 --activate
Urmează stabilirea parolei de root în format criptat, dar și directiva timezone pentru viitoarea mașină virtuală.
Directiva user permite crearea unui user obișnuit în timpul instalării, precum și stabilirea parolei sale (după cum se observă, este adăugat și în grupul wheel, care îi permite userului să fie administrator de sistem):
user --groups=wheel --name=bobses --password=$6$0iQP2qNj6IAruoOm$XPWIHmjKtx1ww --iscrypted --gecos="Bobses"
Mai departe, se configurează informații despre serverul X și dacă sistemul va porni automat în mod grafic:
xconfig --startxonboot
Stabilim cum va fi SELinux (disabled, permisive sau enforcing); de asemenea, directiva firewall poate fi adăugată pentru a specifica serviciile permise de firewall:
selinux --permissive
firewall --service=ssh
Se pot specifica informații despre bootloader (default este GRUB2) - poate fi instalat pe un anume disc sau pe prima partiție; directiva append specifică câțiva parametri adiționali pentru kernel:
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda
Putem specifica informații despre partițiile viitoarei instalări de CentOS 7 (atenție ce specificați aici - cel mai bine este să testați de câteva ori până ajungeți la ceea ce doriți):
part /boot --fstype="xfs" --ondisk=vda --size=512
part pv.252 --fstype="lvmpv" --ondisk=vda --size=8703
volgroup cl --pesize=4096 pv.252
logvol / --fstype="xfs" --size=6647 --name=root --vgname=cl
logvol swap --fstype="swap" --size=1024 --name=swap --vgname=cl
logvol /home --fstype="xfs" --size=1024 --name=home --vgname=cl
Putem adăuga un repo suplimentar:
repo --name=repoid [--baseurl=<url>|--mirrorlist=url]
Pentru a fi siguri că sistemul s-a instalat complet, putem include una din directivele shutdown, reboot, halt sau poweroff.
La urmă, putem specifica pachetele suplimentare care vor fi instalate:
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
...
%end
După indicarea pachetelor care se vor instala, se pot specifica comenzi post-instalare prin directiva %post:
%post
yum -y upgrade
%end
2. A doua metodă pentru configurarea kickstart este prin intermediul utilitarului Kickstart Configurator:
sudo yum install system-config-kickstart
Tot ceea ce am discutat în rândurile de mai sus poate fi adăugat în fișierul kickstart cu ajutorul Kickstart Configurator:
Pentru a edita un fișier ks.cfg cu Kickstart Configurator, rulăm comanda:
# system-config-kickstart /cale/către/fișierul/ks.cfg
După ce am făcut fișierul kickstart pe gustul nostru, este necesară validarea sa prin verificarea sintaxei:
ksvalidator ks.cfg
O documentație completă despre configurarea fișierului kickstart pe distribuțiile din famila Red Hat poate fi consultată aici - există mult mai multe directive cu mult mai multe opțiuni decât cele câteva explicate de mine.
Local, documentația kickstart poate fi consultată în fișierul /usr/share/doc/pykickstart-*/kickstart-docs.txt - este instalat de către pachetul pykickstart.
Lasă un răspuns