Virtualisation
Objectif principal
Configurer des réseaux virtuels isolés et automatiser l’installation de deux invités (node01 et node02) sur un hôte Xen/KVM en utilisant virt-manager, virt-install et des fichiers kickstart.
Important : exécutez ces opérations en tant que root sur l’hôte physique. Ne laissez pas virt-manager ouvert inutilement — il consomme beaucoup de mémoire.
Variantes d’intention pertinentes
- créer réseaux virtuels isolés
- automatiser installation kickstart
- générer MAC pour invités virtuels
- démarrer VM via virt-install
- config réseau public/privé pour VM
D. Virtualisation
1. Réseaux virtuels
Lancez virt-manager en root :
virt-managerLa fenêtre Virtual Machine Manager doit apparaître. Vous verrez Domain-0 et les ressources qu’il utilise.
1.a Créer le réseau virtuel “public1”
- Dans le menu, cliquez sur Edit puis sur Host details.
- Dans la fenêtre Host Details, vous verrez “default” dans le cadre gauche. En dessous, cliquez sur Add.
- La fenêtre « Create a new virtual network » apparaît, cliquez sur Forward.
- Utilisez public1 (sans guillemets) puis Forward.
- Network : 192.168.222.0/24 puis Forward.
- DHCP range : Start: 192.168.222.128 End: 192.168.222.254 puis Forward.
- Choisissez Isolated virtual network puis Forward.
- Résumé :
- Network Name: public1
- IPV4 network: 192.168.222.0/24
- Gateway: 192.168.222.1
- Netmask: 255.255.255.0
- DHCP Start: 192.168.222.128
- DHCP End: 192.168.222.254
- Connectivity: Isolated virtual network
- Cliquez sur Finish.
Répétez les mêmes étapes pour créer private1 avec ces paramètres :
- Network Name: private1
- Network: 192.168.100.0/24
- Gateway: 192.168.100.1
- Netmask: 255.255.255.0
- DHCP Start: 192.168.100.128
- DHCP End: 192.168.100.254
- Connectivity: Isolated virtual network
Quand vous avez terminé, fermez Host Details (File > Close) puis quittez Virtual Machine Manager (File > Quit).
Important : ne laissez pas virt-manager ouvert si vous n’en avez pas besoin ; redémarrez Xen si la mémoire est trop utilisée.
Après création, vérifiez les interfaces virtuelles avec :
ifconfigExemple attendu (extrait) :
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. Fichiers kickstart
Vous trouverez ci-dessous le kickstart pour node01, réutilisable pour node02 en modifiant les adresses IP, les noms d’hôte et le fichier node02_ks.cfg.
2.a Kickstart pour node01 (fichier node01_ks.cfg)
Conservez exactement ce bloc lorsqu’il est utilisé comme fichier de configuration. Les commentaires et directives doivent rester intacts :
#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 Pour node02
Copiez node01_ks.cfg en node02_ks.cfg et adaptez hostname et adresses IP.
3. Installation des systèmes invités (node01 et node02)
Nous lancerons l’installation en CLI avec virt-install. Avant ça, générez des adresses MAC pour les interfaces des invités.
3.a Génération d’adresses MAC
Le script Python fourni dans le guide Red Hat peut être utilisé tel quel :
#!/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
Exemple d’utilisation :
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:83Générez de la même manière les MACs pour node02.
3.b Commande virt-install pour node01
Conservez la commande suivante telle quelle pour lancer l’installation :
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" --vncParamètres clés :
- -n node01 : nom de la VM
- -r 768 : mémoire en Mo
- -f /dev/Virtual00VG/lvNODE01 : disque ou LVM à utiliser
- -m
: adresse MAC pour une interface - -w network:public1 / network:private1 : attache la NIC au réseau virtuel
- -l nfs:… : source d’installation
- -x “ksdevice=eth0 ks=…” : directives kickstart
- –vnc : ouvre la console VNC de l’installation
3.c Commande virt-install pour 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" --vncConseil : lancez virt-install depuis une session VNC sur l’hôte physique pour voir automatiquement les écrans d’installation. Sinon, lancez en console : l’installation s’exécutera en arrière-plan et vous pourrez suivre avec virt-manager en ouvrant les invités.
Mini-méthodologie — checklist rapide pour l’administrateur
- Ouvrez virt-manager en root, créez public1 puis private1 (réseaux isolés).
- Fermez virt-manager pour libérer la mémoire.
- Créez ou adaptez node01_ks.cfg et node02_ks.cfg (éditions des IP/hostname).
- Générez MACs via macgen.py et notez-les.
- Créez volumes LV (lvNODE01, lvNODE02) ou préparez des partitions physiques.
- Lancez virt-install avec les options et vérifiez la console VNC.
- Après installation, vérifiez connectivité et /etc/hosts des invités.
Boîte factuelle — paramètres clés
- Plage public1 : 192.168.222.0/24 (gateway 192.168.222.1)
- Plage private1 : 192.168.100.0/24 (gateway 192.168.100.1)
- Exemple de préfixe MAC utilisé : 00:16:3e (Red Hat)
- Mémoire par VM dans l’exemple : 768 Mo
Dépannage courant
Problème : virt-manager consomme trop de mémoire.
Solution : fermez virt-manager, redémarrez le service Xen si nécessaire.Problème : l’install via NFS échoue.
Vérifiez que le serveur NFS est accessible depuis le réseau public1 (ping 192.168.222.1), et que le chemin /var/ftp/pub/centos5u1/i386 est exporté.Problème : l’interface d’un invité n’obtient pas d’IP.
Vérifiez la config DHCP du réseau virtuel et les plages (Start/End). Assurez-vous que le bon device est utilisé dans kickstart (ksdevice=eth0).Problème : mauvaise interface attachée.
Vérifiez l’ordre des options -m et -w dans virt-install ; associez chaque -m à la NIC correcte.
Alternatives et migrations
- Si vous utilisez des versions récentes de distributions (post-CentOS 7 / RHEL 7+), adaptez les directives kickstart (par ex. network –bootproto=none/–device=ens…) et le nommage des devices réseau (ens, eth selon le système).
- Pour une gestion plus centralisée, regardez libvirt+virt-manager combinés à Ansible pour automatiser le déploiement des kickstarts et des définitions de réseaux.
Checklist post-installation (rôle : administrateur)
- Vérifier que les deux VM démarrent automatiquement et que les interfaces publiques/privées fonctionnent.
- Valider /etc/hosts et résolution DNS si nécessaire.
- Appliquer les mises à jour de sécurité et configurer le pare-feu local selon la politique de l’entreprise.
- Sauvegarder les LVM ou créer des snapshots si supportés.
Résumé
- Créez d’abord les réseaux virtuels isolés depuis virt-manager, puis fermez l’outil pour économiser la mémoire.
- Préparez les kickstarts (node01/node02), générez les MACs, et lancez virt-install avec les paramètres adaptés.
- Testez la connectivité NFS et DHCP, et vérifiez les logs si une installation échoue.
Notes : adaptez les chemins et adresses IP à votre infrastructure. Ne publiez jamais de mots de passe en clair.
Matériaux similaires
Installer et utiliser Podman sur Debian 11
Guide pratique : apt-pinning sur Debian
OptiScaler : activer FSR 4 dans n'importe quel jeu
Dansguardian + Squid NTLM sur Debian Etch
Corriger l'erreur d'installation Android sur SD