Outils pour utilisateurs

Outils du site


admin:procedures:creation_machine_virtuelle

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
admin:procedures:creation_machine_virtuelle [2017/07/12 14:10] fpoulainadmin:procedures:creation_machine_virtuelle [2026/03/03 15:51] (Version actuelle) – Correction typographique fhenry2
Ligne 1: Ligne 1:
 ====== Création d'une machine virtuelle « bling » ====== ====== Création d'une machine virtuelle « bling » ======
 +
 +===== Configuration virt-manager =====
 +
 +Dans un premier temps, se connecter avec ''virt-manager'' à l'aide de la commande :
 +<code bash>
 +virt-manager --connect 'qemu+ssh://root@korat.chapril.org/system?keyfile=~/.ssh/chapril.pub'
 +</code>
 +
 +Il est également possible d'indiquer les détails de la connexion via //Fichier//, //Ajout d'une connexion// :
 +{{:admin:procedures:2018-05-05-122210_385x343_scrot.png?400|Fenêtre d’ajout de connexion}}
 +
 +<note tip>
 +Il est possible de modifier les URI précédemment saisies à l'aide de la commande ''dconf-editor'' :
 +<code bash>
 +dconf-editor /org/virt-manager/virt-manager/connections/uris
 +</code>
 +</note>
  
 ===== Clonage du modèle ===== ===== Clonage du modèle =====
  
-Pour créer la machine virtuelle, se connecter au virt-manager et cloner la machine « modele » via un clic droit.+Cloner la machine ''template-debianXX'' via un clic droit.
  
 {{ :admin:procedures:capture_d_ecran_de_2017-07-12_15_53_45.png?direct&300 |Interface virt-manager}} {{ :admin:procedures:capture_d_ecran_de_2017-07-12_15_53_45.png?direct&300 |Interface virt-manager}}
  
-Une fenêtre s'ouvre, changez le nom de la machine.+Une fenêtre s'ouvre 
 +  - Changer le nom de la machine 
 +  - Dans la section ''Storage'', vérifier que la case est cochée (colonne ''Cloner'', seconde ligne) afin que le disque de la VM source soit cloné ou copié.
  
-{{ :admin:procedures:capture_d_ecran_de_2017-07-12_15_54_30.png?direct&300| Interface de clonage}}+{{ :admin:procedures:cloner_disque-screenshot_2024-12-08.png?direct&300 | Cloner le disque }}
  
-<note important>Pensez à générer une nouvelle MAC en cliquant sur le  bouton « détails » de la ligne « réseau »Sinon vous risquez de casser le réseau du cluster !</note>+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. 
 +Si le service se nomme ''SERVICE'' alors remplacer ''/dev/vg_vms/vm-source-clone'' par ''/dev/vg_vms/vm-SERVICE''.
  
-{{ :admin:procedures:capture_d_ecran_de_2017-07-12_15_54_35.png?direct&300| Nouvelle MAC}}+{{ :admin:procedures:renommer_disque_vm_screenshot_2024-12-08.png?direct&300 | Renommer le disque de la VM }}
  
-Puis validez.+Puis validez en cliquant sur ''Cloner''.
  
-{{ :admin:procedures:capture_d_ecran_de_2017-07-12_15_54_53.png?direct&300| Barre de progression}}+{{ :admin:procedures:capture_d_ecran_de_2017-07-12_15_54_53.png?direct&300 | Barre de progression}}
  
-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é.+<note important> 
 +Les deux adresses MAC de la nouvelle VM sont automatiquement modifiées lors de l'opération de clonage. 
 +Cependant, lorsque deux VM lancées présentent des adresses MAC identiques, la configuration réseau de l'hyperviseur devient incorrecte, cassée ou dysfonctionnelle. 
 +Vérifier alors 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 d’une commande : 
 +<code bash> 
 +PYTHONPATH=/usr/share/virt-manager python3 -c 'import virtinst; print(virtinst.devices.interface._random_mac(virtinst.VirtinstConnection("qemu:///system")))' 
 +</code> 
 +</note> 
 + 
 +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 ((Ces fichiers sont la clef SSH de la machine, le //machine ID//, le nom de la VM et les fichiers de //logs//.)). 
 + 
 +Si le service est ''bd''
 +<code bash> 
 +virt-sysprep -d bd --hostname bd \ 
 +                   --operations defaults,-lvm-uuids \ 
 +                   --run-command 'dpkg-reconfigure openssh-server' 
 +</code> 
 + 
 +Sur l'hyperviseur, il faut enfin réviser les fichiers de configuration de la nouvelle VM. 
 +Pour un service nommé ''SERVICE''
 +  - ''/etc/libvirt/qemu/SERVICE.xml'' 
 +  - ''/etc/lvm/backup/vg_vms'' 
 + 
 +La machine peut alors être démarrée. 
 + 
 +Ce modèle possède de base 
 +  * Les clefs des adminsys 
 +  * Une configuration réseau IPv4 fonctionnelle 
 +  * Les dépôts Chapril ; 
 +  * Quelques dépendances et fichiers de configuration sympathiques tels que ''sexy-chapril'' et ''depends-chapril''
 +  * Un //postfix satellite// configuré
 + 
 +Vous pouvez le démarrer depuis ''virt-manager''.
  
 ===== Configuration réseau ===== ===== Configuration réseau =====
  
-Un fois le modèle cloné et démarré, il faut trouver son adresse IP depuis l'hote :+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 : 
 +<code> 
 +# 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'/> 
 +</code> 
 + 
 +==== IPv4 ==== 
 + 
 +Un fois le modèle cloné et démarré, il faut trouver une adresse IP libre pour l'hôte : 
 +<code bash> 
 +virsh net-dhcp-leases default 
 +</code>
 <code> <code>
-# virsh net-dhcp-leases default 
  Expiry Time          MAC address        Protocol  IP address                Hostname        Client ID or DUID  Expiry Time          MAC address        Protocol  IP address                Hostname        Client ID or DUID
 ------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------
Ligne 34: Ligne 102:
 </code> </code>
  
-Pour le moment cette machine s'appelle toujours « modele ». Son IP est donc 192.168.1.42.+Récupérer son adresse MAC : 
 +<code bash> 
 +grep -i mac /etc/libvirt/qemu/bling.xml 
 +</code>
  
-**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) : +Pour le moment cette machine s'appelle toujours ''modele''
-  # 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+Son adresse IP est donc ''192.168.1.42''
 + 
 +**Sur les deux** hôtes, nous allons attribuer définitivement le bail IP à cette nouvelle machine. 
 +Cette manipulation est donc à faire sur les deux hôtes (Maine et Coon) : 
 +<code bash> 
 +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 
 +</code>
  
-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: +Par ailleurs, pour le moment la définition DNS est manuelle. 
-<code conf /etc/bind/zones/masters/vm.include>+Il faut donc créer l'entrée nécessaire sur la machine ''dns'' 
 +<code /etc/bind/zones/masters/vm.include>
 bling.cluster         192.168.1.42 bling.cluster         192.168.1.42
 </code> </code>
  
-On reload ensuite la zone interne : +<note important> 
-  # rndc reload chapril.org in internal+Penser à augmenter le //serial// dans le fichier ''chapril.org-int'' 
 +</note> 
 + 
 +On recharge ensuite la zone interne : 
 +<code bash> 
 +rndc reload chapril.org in internal 
 +</code> 
 + 
 +==== 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''
 + 
 +Si le service est ''bd'' mettre à jour ''/etc/libvirt/hooks/qemu'' avec un bloc : 
 +<code bash> 
 +"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 
 +   ;; 
 +</code> 
 + 
 +=== Sur la VM === 
 + 
 +Sur la VM, modifier le fichier ''/etc/network/interfaces'': 
 +<code> 
 +# 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 
 +</code>
  
 ===== Derniers détails ===== ===== Derniers détails =====
  
-On peut se ''ssh''-er sur la machine.+==== Nom de la machine ====
  
-On défini son nom +On peut se connecter à la machine ''bling'' via le SSH 
-  hostnamectl set-hostname bob.cluster.chapril.org+<code bash> 
 +ssh bling 
 +</code>
  
-On ajoute à /etc/hosts+On définit son nom 
-<code conf /etc/hosts+<code bash
-127.0.0.1 dns.cluster.chapril.org dns+hostnamectl set-hostname bling.cluster.chapril.org
 </code> </code>
  
-On pense à changer le mot de passe root et à le noter dans le [[admin:procedures:configuration_password_store|pass]]. Si vous manquez d'inspiration, la commande ''pwgen 20'' est vote amie. +On ajoute une ligne à ''/etc/hosts''
-  passwd+<code - /etc/hosts> 
 +127.0.1.1 bling.cluster.chapril.org bling 
 +</code> 
 + 
 +==== Configuration Postfix ==== 
 + 
 +Si Postfix n'est pas installé alors mettre à niveau puis [[admin:procedures:installation_postfix_satellite|installer le satellite Postfix]]. 
 + 
 +Vérifier à corriger les champs utilisant la valeur ''modele''
 +<code - /etc/postfix/main.cf> 
 +[…] 
 +myhostname = bling.cluster.chapril.org 
 +mydestination = $myhostname,bling.cluster.chapril.org, localhost.chapril.org, localhost 
 +[…] 
 +</code> 
 + 
 +==== Mot de passe root ==== 
 + 
 +On pense à changer le mot de passe de l’utilisteur ''root'' et à le noter dans le //[[admin:procedures:configuration_password_store|pass]]//. 
 +Si vous manquez d'inspiration, la commande ''pwgen 20'' est votre amie. 
 +<code bash> 
 +passwd 
 +</code> 
 + 
 +<note important> 
 +Ne pas oublier d'ajouter le mot de passe dans le //pass// des admins. 
 +</note> 
 + 
 +==== 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ée, on peut suivre la procédure pour lui ajouter un accès IPv6 en entrée/sortie comme décrit dans la page //[[admin:procedures:ajouter-ipv6|Ajouter IPv6 à une VM]]//.
  
-Si vous souhaitez donner les clés à quelqu'un qui n'est pas admin du cluster, il faut ajouter la clef dans ''/etc/ssh/authorized_keys.local''.+===== Principes d'un travail terminé =====
  
-Enfin, pour que votre travail soit considéré terminé il faut configurer le [[admin:procedures:configuration-firewall-guest|firewall]], le [[admin:procedures:ajout-d-une-machine|monitoring]] et les [[admin:procedures:sauvegarder_machines|backups]].+Enfin, pour que votre travail soit **[[admin:travail_termine|considéré terminé]]** il faut 
 +  * [[admin:machines_virtuelles:|Ajouter la machine à la documentation]] ; 
 +  * Configurer [[admin:procedures:ajouter-ipv6|l’IPv6]] ; 
 +  * Le [[admin:procedures:configuration-firewall-guest|pare-feu]] 
 +  * L'envoi de [[admin:procedures:installation_postfix_satellite|courriels]] ; 
 +  * L’[[admin:monitoring:add-host|hypervision]] 
 +  * Les [[admin:procedures:sauvegarder_machines|sauvegardes]] ; 
 +  * Ajouter la machine dans le script d'administration pour faciliter la maintenance du parc ((Les fichiers ''_scripts/machines'' dans [[sysadm:git_admin_sys|le dépôt ''packages-src'']].)).
admin/procedures/creation_machine_virtuelle.1499868634.txt.gz · Dernière modification : 2017/07/12 14:10 de fpoulain