Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Virtualizare KVM: automatizarea instalării mașinilor virtuale CentOS

24 ianuarie 2018 By Bobses Lasă un comentariu

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:

  1. 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;
  2. 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;
  3. montarea imaginii media CentOS 7 în QEMU/KVM;
  4. pornim instalarea; la apariția primului meniu, selectăm Install CentOS 7 și apăsăm TAB:
  5. 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_

  6. 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

  7. 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.

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Click to share on Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: Tutoriale

Lasă un răspunsAnulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2025 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii {vendor_count} Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}