Guida alle tecnologie

Virtualizzazione: reti virtuali, file kickstart e installazione dei guest

6 min read Virtualizzazione Aggiornato 18 Oct 2025
Virtualizzazione: reti, kickstart e virt-install
Virtualizzazione: reti, kickstart e virt-install

Introduzione

Virtualizzazione: creare e gestire macchine virtuali e reti virtuali usando gli strumenti libvirt (virt-manager, virt-install). Definizione rapida: libvirt è un insieme di tool per gestire hypervisor e risorse virtuali.

Importante: esegui virt-manager come root o con privilegi sufficienti. Chiudi virt-manager quando non lo usi per evitare uso eccessivo di memoria.

1. Reti virtuali

Segui questi passi nel Virtual Machine Manager (virt-manager) per creare reti isolate denominate public1 e private1.

Avviare virt-manager

Esegui come root:

virt-manager

Dovrebbe aprirsi la finestra Virtual Machine Manager. Vedrai Domain-0 (il dominio host) e le risorse in uso.

1.a Creare la rete virtuale public1

  • Dal menu, clicca su Edit e poi su Host details.
  • Nella finestra Host Details vedrai “default” nel frame sinistro. Sotto, clicca su Add.
  • Apparirà la finestra “Create a new virtual network”, clicca forward.
  • Usa il nome public1 e prosegui (forward).
  • Network: imposta 192.168.222.0/24 poi avanti.
  • DHCP range: Start: 192.168.222.128 End: 192.168.222.254 poi avanti.
  • Seleziona Isolated virtual network e avanti.
  • Rivedi il riepilogo:
    • Network Name: public1
    • IPV4 network:
      • Network: 192.168.222.0/24
      • Gateway: 192.168.222.1
      • Netmask: 255.255.255.0
    • DHCP
      • Start address: 192.168.222.128
      • End address: 192.168.222.254
    • Forwarding:
      • Connectivity: Isolated virtual network
  • Clicca Finish.

La voce public1 apparirà nella finestra Host Details.

Creare la rete virtuale private1

Ripeti gli stessi passaggi con i seguenti parametri:

  • Network Name: private1
  • IPV4 network:
    • Network: 192.168.100.0/24
    • Gateway: 192.168.100.1
    • Netmask: 255.255.255.0
  • DHCP
    • Start address: 192.168.100.128
    • End address: 192.168.100.254
  • Forwarding: Isolated virtual network

Quando hai finito, in Host Details clicca File > Close per tornare alla finestra principale di Virtual Machine Manager. Poi File > Quit.

Nota: se lasci virt-manager aperto consuma molta memoria. Se il sistema diventa lento, potrebbe essere necessario riavviare Xen.

Una volta create, le interfacce vnet0 e vnet1 saranno visibili con:

ifconfig

Esempio di output (informativo):

   vnet0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
              inet addr:192.168.222.1  Bcast:192.168.222.255  Mask:255.255.255.0
              inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0

              TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:7782 (7.5 KiB)
    
    vnet1      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
              inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
              inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:7712 (7.5 KiB)

2. File kickstart

Fornisco un file kickstart esempio per node01 che puoi riadattare per node02 modificando hostname e indirizzi IP.

2.a Kickstart per node01

Usa esattamente il seguente file. I blocchi di configurazione e i comandi devono rimanere intatti.

#START of node01_ks.cfg
install
text
reboot
#uncomment the line you want to use
# for nfs
nfs --server=192.168.222.1 --dir=/var/ftp/pub/centos5u1
##url --url ftp://:@/
# this will be an anonymous ftp access
#url --url ftp://192.168.222.1/pub/centos5u1/i386
#key --skip
lang en_US.UTF-8
keyboard us
skipx
# private
network --device eth1 --bootproto static --ip 192.168.100.10 --netmask 255.255.255.0 
# public - disabled on initial install
network --device eth0 --bootproto static --ip 192.168.222.10 --netmask 255.255.255.0 --gateway 192.168.222.1 --nameserver 192.168.222.1 --hostname node01.example.com
## password is n0de01pass
rootpw --iscrypted $1$Lqk1Y$Y8TIWCMLiiPjVt1GjRS0F1
## password is n0de02pass
#rootpw --iscrypted $1$Rn47b$DDwgrOv3IFGf3HVhsxv9X0
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Singapore
services --disabled ipsec,iptables,bluetooth,hplip,firstboot,cups,sendmail,xfs
bootloader --location=mbr --driveorder=xvda,xvdb --append="rhgb quiet"
clearpart --all --initlabel --drives=xvda
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
%packages
@development-libs
@system-tools
@gnome-software-development
@text-internet
@x-software-development
@dns-server
@core
@authoring-and-publishing
@base
@ftp-server
@network-server
@legacy-software-development
@java
@legacy-software-support
@smb-server
@base-x
@web-server
@printing
@server-cfg
@sql-server
@admin-tools
@development-tools
emacs
lsscsi
gnutls-utils
hwbrowser
audit
iptraf
mesa-libGLU-devel
kexec-tools
device-mapper-multipath
vnc-server
xorg-x11-utils
xorg-x11-server-Xnest
xorg-x11-server-Xvfb
imake
iscsi-initiator-utils
ypserv
-sysreport

%post
cat <> /etc/hosts
# private  or replace with nodeXY-
192.168.100.10  node01-priv
192.168.100.20  node02-priv
192.168.100.1   node00-priv

#public or replace with nodeXY
192.168.222.10 node01
192.168.222.20 node02
192.168.222.1  node00
EOT

# yum local repo
mv /etc/yum.repos.d/*.repo /tmp
cat > /etc/yum.repos.d/centos5.repo << EOF
[centos5-Server]
name=CEntos5 Server
baseurl=http://node00/centos5u1/i386
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
EOF

#change default runlevel
ed /etc/inittab << EOF

,s/id:5:initdefault:/id:3:initdefault:/g
.
w
EOF

# vncserver stuff
cat << EOT > /opt/vnc_xstartup
#!/bin/sh

# run vncserver and copy to your $HOME/.vnc/xstartup file
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 130x30+12+12 -ls -bg black -fg green -title "$VNCDESKTOP Desktop" &
mwm &
EOT
# END of nod01_ks.cfg

2.b Kickstart per node02

Copia node01_ks.cfg in node02_ks.cfg e modifica gli indirizzi IP e il nome host (hostname) appropriati per node02.

3. Installazione dei sistemi guest (node01 e node02)

Useremo virt-install da CLI per avviare le installazioni. Prima genera gli indirizzi MAC per le NIC virtuali.

3.a Generazione MAC

Esempio di script Python fornito nella guida Red Hat. Salvalo come macgen.py ed esegui per ottenere MAC address validi per gli guest.

#!/usr/bin/python
# macgen.py script to generate a MAC address for Red Hat Virtualization guests
import random
#
def randomMAC():
   mac = [ 0x00, 0x16, 0x3e,
     random.randint(0x00, 0x7f),

     random.randint(0x00, 0xff),
     random.randint(0x00, 0xff) ]
   return ':'.join(map(lambda x: "%02x" % x, mac))
#
print randomMAC()
# careful with the indention
# this is from the Virtualization guide from redhat.com
# http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Virtualization/index.html

Esempio di output e assegnazione per node01:

node01 NICs  
# for eth0 . public1  
[root@node00 ~]# ./macgen.py  
00:16:3e:33:32:07  
# for eth1 . private1  
[root@ node00 ~]# ./macgen.py  
00:16:3e:55:6b:83

Genera MAC anche per node02 con lo stesso metodo.

3.b virt-install per node01

Esegui il seguente comando (mantieni i flag e le opzioni come mostrato):

virt-install -p -n node01 -r 768 -f /dev/Virtual00VG/lvNODE01 -m 00:16:3e:33:32:07 \  
-w network:public1 -m 00:16:3e:55:6b:83 -w network:private1 \  
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \  
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node01_ks.cfg" --vnc

Parametri principali:

  • -n node01: nome della virtual machine
  • -r 768: RAM in MB
  • -f /dev/Virtual00VG/lvNODE01: dispositivo/disco da usare per il guest (può essere anche una partizione libera)
  • -m : indirizzi MAC assegnati alle interfacce
  • -w network:public1 / private1: associa interfacce alle reti virtuali
  • -l nfs:…: fonte d’installazione via NFS
  • -x “ksdevice=eth0 ks=…”: direttive kickstart
  • –vnc: avvia una sessione VNC per visualizzare l’installazione

3.c virt-install per node02

Comando di esempio per node02:

virt-install -p -n node02 -r 768 -f /dev/Virtual00VG/lvNODE02 -m 00:16:3e:1e:05:b6 \  
-w network:public1 -m 00:16:3e:40:3d:b0 -w network:private1 \  
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \  
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node02_ks.cfg" --vnc

Consiglio operativo: se lanci virt-install da una sessione VNC sul host fisico, le schermate di installazione appariranno immediatamente. In alternativa puoi avviare l’installazione in background e monitorarla con virt-manager aprendo le console dei guest.

Suggerimenti pratici e scenari alternativi

  • Quando questo metodo potrebbe fallire: se il server NFS non è raggiungibile, il kickstart non potrà scaricare i pacchetti; verifica firewall e percorsi NFS. Se l’host ha risorse limitate (RAM/CPU) le VM potrebbero non avviarsi.

  • Approcci alternativi:

    • Usare file ISO locali e passare -l file:///path/to/iso o -i per installazione iscsi/HTTP.
    • Definire reti libvirt via XML e virsh net-define per maggiore ripetibilità.
    • Usare PXE/HTTP per installazioni su larga scala.
  • Mental model (euristica): pensa a tre livelli: host (Domain-0), rete virtuale (bridge/vnet), guest (macchine). Configura ogni livello separatamente e testane la connettività.

Checklist per ruolo

Amministratore (prima dell’installazione):

  • Creare reti public1 e private1 in virt-manager
  • Preparare il server NFS e il path /var/ftp/pub/centos5u1/i386
  • Generare MAC e riservare in documentazione
  • Creare LV (lvNODE01, lvNODE02) o partizioni per guest
  • Preparare i file node01_ks.cfg e node02_ks.cfg

Operatore (giorno dell’installazione):

  • Eseguire virt-install con le opzioni fornite
  • Monitorare con virt-manager e VNC
  • Verificare /etc/hosts e DNS dopo il primo avvio

Cheat sheet comandi importanti

  • Avviare GUI: virt-manager
  • Elencare reti libvirt: virsh net-list –all
  • Vedere interfacce host: ifconfig
  • Generare MAC: ./macgen.py
  • Avviare installazione: virt-install [parametri visti sopra]

Box dei fatti (parametri chiave usati)

  • Reti: public1 => 192.168.222.0/24, private1 => 192.168.100.0/24
  • DHCP ranges: .128–.254 su entrambe le reti
  • Default gateway: 192.168.222.1 (per public1)
  • RAM VM di esempio: 768 MB

Piccola metodologia per ripetibilità

  1. Versionare i file kickstart e gli script di generazione MAC in un repository git.
  2. Documentare mapping MAC ↔ VM in un file README.
  3. Automatizzare la creazione di reti tramite virsh XML per ambienti ripetuti.

1-linea glossario

  • virt-manager: interfaccia grafica per gestire risorse libvirt; virt-install: strumento CLI per creare VM; kickstart: file di automazione dell’installazione CentOS/Red Hat.

Controllo finale e azioni post-installazione

Dopo l’installazione, verifica:

  • connettività tra guest e gateway
  • risoluzione DNS e /etc/hosts
  • che i servizi necessari siano attivi

Sintesi

Questa guida spiega come creare reti virtuali isolate (public1/private1) con virt-manager, preparare file kickstart per l’installazione automatica e lanciare virt-install per node01/node02. Includo script per generare MAC, comandi di esempio e checklist per amministratori e operatori.

Note importanti:

  • Conserva i file kickstart in un server accessibile via HTTP/NFS per le installazioni automatizzate.
  • Testa sempre la rete NFS e i permessi prima di avviare più installazioni.

Fine.

Autore
Redazione

Materiali simili

Gestione utenti WiKID: convalida manuale e test OTP
Sicurezza

Gestione utenti WiKID: convalida manuale e test OTP

Riparare tastiera Mac che non funziona
Hardware

Riparare tastiera Mac che non funziona

Come ottenere più Mi piace su Instagram Reels
Social Media

Come ottenere più Mi piace su Instagram Reels

Installare Valheim Plus: guida rapida
Gaming

Installare Valheim Plus: guida rapida

MediaWiki su CentOS 7 con Nginx — Guida completa
Sysadmin

MediaWiki su CentOS 7 con Nginx — Guida completa

Disattivare cache cartelle condivise in Outlook
Outlook

Disattivare cache cartelle condivise in Outlook