Outils pour utilisateurs

Outils du site


admin:procedures:creation_machine_virtuelle

Création d'une machine virtuelle « bling »

Configuration virt-manager

Dans un premier temps, se connecter avec virt-manager à l'aide de commande :

virt-manager --connect 'qemu+ssh://root@korat.chapril.org/system?keyfile=~/.ssh/chapril.pub'

Il est également possible d'indiquer les détails de la connexion via Fichier, Ajout d'une connexion :

Il est possible de modifier les URIs précédemment saisies à l'aide de la commande dconf-editor :
dconf-editor /org/virt-manager/virt-manager/connections/uris

Clonage du modèle

Cloner la machine « template-debianXX » via un clic droit.

Interface virt-manager

Une fenêtre s'ouvre :

  1. Changez le nom de la machine.
  2. Dans la section Storage, vérifier que la case est cochée (colonne Cloner, seconde ligne) est cochée afin que le disque de la VM source soit cloné/copié:

 Cloner le disque

Toujours dans la section Storage, après avoir sélectionné la ligne Cloner ce disque, cliquer sur le bouton Détails afin de modifier le chemin du disque de la nouvelle VM. Remplacer /dev/vg_vms/vm-source-clone par /dev/vg_vms/vm-<nom du service> (par exemple: /dev/vg_vms/vm-bd).

 Renommer le disque de la VM

Puis validez en cliquant sur Cloner.

 Barre de progression

Les deux adresses MAC de la nouvelle VM sont automatiquement modifiées lors de l'opération de clonage. Cependant, lorsque deux VMs lancées présentent des adresses MAC identiques, la configuration réseau de l'hyperviseur devient incorrecte/cassée/dysfonctionnelle : vérifier que les deux adresses MAC de la nouvelle VM sont bien différentes de celles de la machine source. Lorsque le paquet Debian virtinst est installé, il est possible de générer une adresse MAC à l'aide de la commande :
PYTHONPATH=/usr/share/virt-manager python3 -c 'import virtinst; print(virtinst.devices.interface._random_mac(virtinst.VirtinstConnection("qemu:///system")))'

Il faut ensuite utiliser la commande virt-sysprep (paquet Debian guestfs-tools) sur l'hyperviseur pour supprimer les fichiers de configuration liés à la VM source (clef SSH de la machine, machine ID, nom de la VM, fichiers de logs) :

=(^-^)=root@korat:~# virt-sysprep -d bd --hostname bd \
                     --operations defaults,-lvm-uuids \
                     --run-command 'dpkg-reconfigure openssh-server'

Sur l'hyperviseur, il faut enfin commiter les fichiers de configuration de la nouvelle VM :

  1. /etc/libvirt/qemu/<nom service>.xml
  2. /etc/lvm/backup/vg_vms

La machine peut alors être démarrée.

Ce modèle possède de base les clés des adminsys, une conf réseau ipv4 fonctionnelle, les dépôts chapril, quelques dépendances et fichiers de conf sympathiques (sexy-chapril et depends-chapril) et un postfix satellite configuré.

Vous pouvez le démarrer depuis le virt-manager.

Configuration réseau

Pour plus de commodité, renommer les interfaces TAP de la VM en exécutant la commande virsh edit bling sur l'hyperviseur hébergeant la VM:

# Chercher le bloc <interface type='network'>
# Ajouter dans le bloc la ligne suivante, puis enregistrer et quitter :
<target dev='vm-bling'/>

# Chercher le bloc <interface type='ethernet'>
# Ajouter dans le bloc la ligne suivante, puis enregistrer et quitter :
<target dev='vm-bling-ipv6'/>

IPv4

Un fois le modèle cloné et démarré, il faut trouver une adresse IP libre pour l'hote :

# virsh net-dhcp-leases default
 Expiry Time          MAC address        Protocol  IP address                Hostname        Client ID or DUID
-------------------------------------------------------------------------------------------------------------------
 2017-07-12 15:39:38  52:54:00:02:e2:7a  ipv4      192.168.1.53/24           dns             -
 2017-07-12 15:47:22  52:54:00:34:ec:e8  ipv4      192.168.1.30/24           sympa           -
 2017-07-12 15:49:10  52:54:00:d6:6b:0a  ipv4      192.168.1.57/24           mail            -
 2017-07-12 15:50:11  52:54:00:ef:42:42  ipv4      192.168.1.42/24           modele          -

Récupérer son adresse MAC :

grep -i mac /etc/libvirt/qemu/bling.xml

Pour le moment cette machine s'appelle toujours « modele ». Son IP est donc 192.168.1.42.

Sur les deux hotes, nous allons attribuer définitivement le bail IP à cette nouvelle machine. Cette manipulation est donc à faire sur les deux hôtes (maine et coon) :

# virsh net-update default add ip-dhcp-host  "<host mac='52:54:00:ef:42:42'  name='bling' ip='192.168.1.42' />" --live --config

Par ailleurs, pour le moment la définition DNS est manuelle. Il faut donc créer l'entrée nécessaire sur la machine dns:

/etc/bind/zones/masters/vm.include
bling.cluster     A     192.168.1.42
Penser à augmenter le serial dans le fichier chapril.org-int

On reload ensuite la zone interne :

# rndc reload chapril.org in internal

IPv6

Sur les deux hyperviseurs

  • dans /etc/firehol/firehol.conf, ajouter l'interface vm-bling-ipv6 au contenu de la variable vmIp6Ifaces puis redémarrer le service firehol
  • mettre à jour /etc/libvirt/hooks/qemu avec un bloc :
"bd")
        case "$action" in
                "started")
                        [[ $step = "begin" ]] || { echo step must be begin; exit 0; }
        # La route dépend de l'adresse MAC de l'interface dédiée à l'IPv6 :
        # address="$(virsh dumpxml bling |grep -A 1 ethernet | grep -oP "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}")"; echo "fe80::5054:ff:fe${address:0:2}:${address:2:4}"
        /sbin/ip route add 2a01:4f8:222:6a1::42/128 via fe80::5054:ff:fec3:d645 dev vm-bling-ipv6
        /sbin/ip route add 2a01:4f8:222:664::42/128 via fe80::5054:ff:fec3:d645 dev vm-bling-ipv6
                ;;
                "stopped")
                        [[ $step = "end" ]] || { echo step must be end; exit 0; }
        /sbin/ip route del 2a01:4f8:222:6a1::42/128 via fe80::5054:ff:fec3:d645 dev vm-bling-ipv6
        /sbin/ip route del 2a01:4f8:222:664::42/128 via fe80::5054:ff:fec3:d645 dev vm-bling-ipv6
                ;;
                *)
                        echo action $action not supported
                        exit 0
                ;;
        esac
   ;;

Sur la VM

Sur la VM, modifier le fichier /etc/network/interfaces:

# The primary network interface
allow-hotplug ens3
iface ens3 inet dhcp

post-up ip route replace default via 192.168.1.254

# The ipv6 network interface

allow-hotplug ens8
iface ens8 inet6 static
    address 2a01:4f8:222:664::42/128
    # gateway: address="$(ip -j link show dev ens8 | jq -r '.[] | .address[9:] | gsub(":";"")')"; echo "fe80::fc54:ff:fe${address:0:2}:${address:2:4}"
    gateway fe80::fc54:ff:fec3:d645
    post-up ip -6 address add 2a01:4f8:222:6a1::42/128 dev ens8

Derniers détails

Nom de la machine

On peut se ssh-er sur la machine :

ssh bling

On défini son nom :

hostnamectl set-hostname bling.cluster.chapril.org

On ajoute à /etc/hosts:

/etc/hosts
127.0.1.1	bling.cluster.chapril.org	bling

Configuration Postfix

Si Postfix n'est pas installé alors faire un upgrade puis l'installer : installation_postfix_satellite

Vérifier à corriger les champs utilisant la valeur modele :

/etc/postfix/main.cf
[…]
myhostname = bling.cluster.chapril.org
mydestination = $myhostname,bling.cluster.chapril.org, localhost.chapril.org, localhost
[…]

Mot de passe root

On pense à changer le mot de passe root et à le noter dans le pass. Si vous manquez d'inspiration, la commande pwgen 20 est vote amie.

passwd
Ne pas oublier d'ajouter le mot de passe dans le pass des admins.

Accès non admin

Si vous souhaitez donner l'accès root à quelqu'un qui n'est pas admin du cluster, il faut ajouter la clef dans /etc/ssh/authorized_keys.local.

Pensez aussi à lui donner un accès april sur le bastion.

IPv6

Une fois l'installation de la VM terminé, on peut suivre la procédure pour lui ajouter un accès IPv6 en entrée/sortie : Ajouter IPv6 à une VM.

Principes d'un travail terminé

Enfin, pour que votre travail soit considéré terminé il faut :

admin/procedures/creation_machine_virtuelle.txt · Dernière modification : 2024/12/23 02:18 de pilou