====== Création d'une machine virtuelle « bling » ======
===== Configuration virt-manager =====
Dans un premier temps, se connecter avec ''virt-manager'' à l'aide de la 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// :
{{:admin:procedures:2018-05-05-122210_385x343_scrot.png?400|Fenêtre d’ajout de connexion}}
Il est possible de modifier les URI 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.
{{ :admin:procedures:capture_d_ecran_de_2017-07-12_15_53_45.png?direct&300 |Interface virt-manager}}
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: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.
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 }}
Puis validez en cliquant sur ''Cloner''.
{{ :admin:procedures:capture_d_ecran_de_2017-07-12_15_54_53.png?direct&300 | 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 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 :
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 ((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'' :
virt-sysprep -d bd --hostname bd \
--operations defaults,-lvm-uuids \
--run-command 'dpkg-reconfigure openssh-server'
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 =====
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
# Ajouter dans le bloc la ligne suivante, puis enregistrer et quitter :
# Chercher le bloc
# Ajouter dans le bloc la ligne suivante, puis enregistrer et quitter :
==== IPv4 ====
Un fois le modèle cloné et démarré, il faut trouver une adresse IP libre pour l'hôte :
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 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) :
virsh net-update default add ip-dhcp-host "" --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'' :
bling.cluster A 192.168.1.42
Penser à augmenter le //serial// dans le fichier ''chapril.org-int''
On recharge 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''.
Si le service est ''bd'' 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 connecter à la machine ''bling'' via le SSH :
ssh bling
On définit son nom :
hostnamectl set-hostname bling.cluster.chapril.org
On ajoute une ligne à ''/etc/hosts'' :
127.0.1.1 bling.cluster.chapril.org bling
==== 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'' :
[…]
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 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.
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é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é =====
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'']].)).