| Les deux révisions précédentesRévision précédente | |
| admin:procedures:creation_machine_virtuelle [2024/12/23 02:18] – correction du niveau des titres pilou | admin:procedures:creation_machine_virtuelle [2026/03/03 15:51] (Version actuelle) – Correction typographique fhenry2 |
|---|
| |
| ===== Configuration virt-manager ===== | ===== Configuration virt-manager ===== |
| Dans un premier temps, se connecter avec virt-manager à l'aide de commande : | |
| |
| | Dans un premier temps, se connecter avec ''virt-manager'' à l'aide de la commande : |
| <code bash> | <code bash> |
| virt-manager --connect 'qemu+ssh://root@korat.chapril.org/system?keyfile=~/.ssh/chapril.pub' | virt-manager --connect 'qemu+ssh://root@korat.chapril.org/system?keyfile=~/.ssh/chapril.pub' |
| </code> | </code> |
| |
| Il est également possible d'indiquer les détails de la connexion via ''Fichier'', ''Ajout d'une connexion'' : | 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|}} | {{:admin:procedures:2018-05-05-122210_385x343_scrot.png?400|Fenêtre d’ajout de connexion}} |
| |
| <note tip> | <note tip> |
| Il est possible de modifier les URIs précédemment saisies à l'aide de la commande ''dconf-editor'' : | Il est possible de modifier les URI précédemment saisies à l'aide de la commande ''dconf-editor'' : |
| <code> | <code bash> |
| dconf-editor /org/virt-manager/virt-manager/connections/uris | dconf-editor /org/virt-manager/virt-manager/connections/uris |
| </code> | </code> |
| </note> | </note> |
| | |
| ===== Clonage du modèle ===== | ===== Clonage du modèle ===== |
| |
| Cloner la machine « template-debianXX » 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 : | Une fenêtre s'ouvre : |
| - Changez le nom de la machine. | - Changer le nom de la machine ; |
| - 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é: | - 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:cloner_disque-screenshot_2024-12-08.png?direct&300 | Cloner le disque }} | {{ :admin:procedures:cloner_disque-screenshot_2024-12-08.png?direct&300 | 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''). | 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:renommer_disque_vm_screenshot_2024-12-08.png?direct&300 | Renommer le disque de la VM }} | {{ :admin:procedures:renommer_disque_vm_screenshot_2024-12-08.png?direct&300 | Renommer le disque de la VM }} |
| |
| <note important> | <note important> |
| 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 : | 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> | <code bash> |
| PYTHONPATH=/usr/share/virt-manager python3 -c 'import virtinst; print(virtinst.devices.interface._random_mac(virtinst.VirtinstConnection("qemu:///system")))' | PYTHONPATH=/usr/share/virt-manager python3 -c 'import virtinst; print(virtinst.devices.interface._random_mac(virtinst.VirtinstConnection("qemu:///system")))' |
| </note> | </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 (clef SSH de la machine, machine ID, nom de la VM, fichiers de logs) : | 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//.)). |
| <code> | |
| =(^-^)=root@korat:~# virt-sysprep -d bd --hostname bd \ | Si le service est ''bd'' : |
| --operations defaults,-lvm-uuids \ | <code bash> |
| --run-command 'dpkg-reconfigure openssh-server' | virt-sysprep -d bd --hostname bd \ |
| | --operations defaults,-lvm-uuids \ |
| | --run-command 'dpkg-reconfigure openssh-server' |
| </code> | </code> |
| |
| Sur l'hyperviseur, il faut enfin commiter les fichiers de configuration de la nouvelle VM : | Sur l'hyperviseur, il faut enfin réviser les fichiers de configuration de la nouvelle VM. |
| | Pour un service nommé ''SERVICE'' : |
| - ''/etc/libvirt/qemu/<nom service>.xml'' | - ''/etc/libvirt/qemu/SERVICE.xml'' |
| - ''/etc/lvm/backup/vg_vms'' | - ''/etc/lvm/backup/vg_vms'' |
| |
| La machine peut alors être démarrée. | 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é. | 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''. |
| |
| Vous pouvez le démarrer depuis le virt-manager. | |
| ===== Configuration réseau ===== | ===== 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: | 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> | <code> |
| # Chercher le bloc <interface type='network'> | # Chercher le bloc <interface type='network'> |
| ==== IPv4 ==== | ==== IPv4 ==== |
| |
| Un fois le modèle cloné et démarré, il faut trouver une adresse IP libre pour l'hote : | 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 |
| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| |
| Récupérer son adresse MAC : | Récupérer son adresse MAC : |
| <code> | <code bash> |
| grep -i mac /etc/libvirt/qemu/bling.xml | grep -i mac /etc/libvirt/qemu/bling.xml |
| </code> | </code> |
| |
| Pour le moment cette machine s'appelle toujours « modele ». Son IP est donc 192.168.1.42. | Pour le moment cette machine s'appelle toujours ''modele''. |
| | Son adresse 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) : | **Sur les deux** hôtes, nous allons attribuer définitivement le bail IP à cette nouvelle machine. |
| # 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 | 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 A 192.168.1.42 | bling.cluster A 192.168.1.42 |
| </code> | </code> |
| |
| <note important>Penser à augmenter le serial dans le fichier chapril.org-int</note> | <note important> |
| | Penser à augmenter le //serial// dans le fichier ''chapril.org-int'' |
| | </note> |
| |
| On reload ensuite la zone interne : | On recharge ensuite la zone interne : |
| # rndc reload chapril.org in internal | <code bash> |
| | rndc reload chapril.org in internal |
| | </code> |
| |
| ==== IPv6 ==== | ==== IPv6 ==== |
| === Sur les deux hyperviseurs === | === 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'' | 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 : | |
| <code> | Si le service est ''bd'' mettre à jour ''/etc/libvirt/hooks/qemu'' avec un bloc : |
| | <code bash> |
| "bd") | "bd") |
| case "$action" in | case "$action" in |
| |
| === Sur la VM === | === Sur la VM === |
| | |
| Sur la VM, modifier le fichier ''/etc/network/interfaces'': | Sur la VM, modifier le fichier ''/etc/network/interfaces'': |
| <code> | <code> |
| post-up ip -6 address add 2a01:4f8:222:6a1::42/128 dev ens8 | post-up ip -6 address add 2a01:4f8:222:6a1::42/128 dev ens8 |
| </code> | </code> |
| | |
| ===== Derniers détails ===== | ===== Derniers détails ===== |
| |
| ==== Nom de la machine ==== | ==== Nom de la machine ==== |
| |
| On peut se ''ssh''-er sur la machine : | On peut se connecter à la machine ''bling'' via le SSH : |
| ssh bling | <code bash> |
| | ssh bling |
| | </code> |
| |
| On défini son nom : | On définit son nom : |
| hostnamectl set-hostname bling.cluster.chapril.org | <code bash> |
| | hostnamectl set-hostname bling.cluster.chapril.org |
| | </code> |
| |
| On ajoute à /etc/hosts: | On ajoute une ligne à ''/etc/hosts'' : |
| <code conf /etc/hosts> | <code - /etc/hosts> |
| 127.0.1.1 bling.cluster.chapril.org bling | 127.0.1.1 bling.cluster.chapril.org bling |
| </code> | </code> |
| |
| ==== Configuration Postfix ==== | ==== Configuration Postfix ==== |
| Si Postfix n'est pas installé alors faire un upgrade puis l'installer : [[admin:procedures:installation_postfix_satellite]] | |
| |
| | 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// : | Vérifier à corriger les champs utilisant la valeur ''modele'' : |
| <code conf /etc/postfix/main.cf> | <code - /etc/postfix/main.cf> |
| […] | […] |
| myhostname = bling.cluster.chapril.org | myhostname = bling.cluster.chapril.org |
| […] | […] |
| </code> | </code> |
| | |
| ==== Mot de passe root ==== | ==== Mot de passe root ==== |
| |
| 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 pense à changer le mot de passe de l’utilisteur ''root'' et à le noter dans le //[[admin:procedures:configuration_password_store|pass]]//. |
| passwd | 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> | <note important> |
| | Ne pas oublier d'ajouter le mot de passe dans le //pass// des admins. |
| | </note> |
| |
| ==== Accès non admin ==== | ==== 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''. | 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. | Pensez aussi à lui donner un accès ''april'' sur le bastion. |
| |
| |
| ==== IPv6 ==== | ==== 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 : [[admin:procedures:ajouter-ipv6|Ajouter IPv6 à une VM]]. | 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]]//. |
| |
| ===== Principes d'un travail terminé ===== | ===== Principes d'un travail terminé ===== |
| |
| Enfin, pour que votre travail soit **[[admin:travail_termine|considéré terminé]]** il faut : | Enfin, pour que votre travail soit **[[admin:travail_termine|considéré terminé]]** il faut : |
| * [[admin:machines_virtuelles:|ajouter la machine à la doc]] ; | * [[admin:machines_virtuelles:|Ajouter la machine à la documentation]] ; |
| * configurer [[admin:procedures:ajouter-ipv6|ipv6]] ; | * Configurer [[admin:procedures:ajouter-ipv6|l’IPv6]] ; |
| * le [[admin:procedures:configuration-firewall-guest|firewall]] ; | * Le [[admin:procedures:configuration-firewall-guest|pare-feu]] ; |
| * l'envoi d'[[admin:procedures:installation_postfix_satellite|emails]] ; | * L'envoi de [[admin:procedures:installation_postfix_satellite|courriels]] ; |
| * le [[admin:monitoring:add-host|monitoring]] ; | * L’[[admin:monitoring:add-host|hypervision]] ; |
| * et les [[admin:procedures:sauvegarder_machines|backups]] ; | * Les [[admin:procedures:sauvegarder_machines|sauvegardes]] ; |
| * ajouter la machine dans le script d'administration pour faciliter la maintenance du parc (''_scripts/machines'' dans [[sysadm:git_admin_sys|le dépot ''packages-src'']]). | * 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'']].)). |