Grifon peut déployer des VMs Debian depuis à l'aide d'un script qui utilise un template Debian.
Cette procédure permet de générer un template de VM Debian utilisable par le script de déploiement.
Il est possible que certains ajustements soient nécessaires.
Voici la procédure (réalisée avec une image Debian 10 netinst) :
Créer une nouvelle VM nommée vm-template-debian-<VERSION_DEBIAN> sur un des hyperviseurs avec :
Un ID ID_NEW_VM_TEMPLATE (en principe 700<ID_NEW_VM_TEMPLATE<799)
512MiB de RAM
1 vCPU kvm64
Le SCSI controller VirtIO SCSI
Un HDD VirtIO Block de 32GiB dans le storage local_data au format QEMU image (qcow2)
Une interface réseau du Model VirtIO (paravirtualized) sur le bridge vmbr1 (VMs publiques)
Et ajouter le dernier disque d'installation netinst distribué par Debian dans la VM
Dans l'IPAM, ajouter une IPv4 et un range IPv6 dans les ranges de VM “adhérents” pour cette VM.
Faites les enregistrements
reverses DNS associés sur gurvant (pour le range IPv6, prenez la première adresse du range qui sera définie sur la VM) pour les faire pointer sur la valeur :
vm-template-grifon-<VERSION_DEBIAN>.grifon.fr.
Démarrer la VM
Lancer la console depuis la WebUI Proxmox
Sélectionner Install
Low memory : si un message Low memory apparaît ce n'est pas un problem, faite Continue
Select your location : sélectionnez Europe puis France
Configure the keyboard : sélectionner French
Configure the network : l'autoconfiguration va échouer (pas de DHCP), il faut configurer manuellement :
Configure the network manually
Saisir l'IPv4 de la VM (et le masque réseau associé) précédemment enregistrée dans l'IPAM
Saisir l'IPv4 de la gateway
Saisir les IPv4 des résolveurs
DNS Grifon (actuellement 89.234.186.4 et 89.234.186.5)
Saisir le hostname vm-grifon-debian-<VERSION_DEBIAN>
Supprimer la valeur de Domain name afin qu'elle soit vide (de toute manière l'adhérent devrait changer le hostname et le domaine)
Set up users and passwords :
Saisir un mot de passe pour l'utilisateur root
Confirmer ce mot de passe en le saisissant à nouveau
Saisir le nom du nouvel utilisateur default-user-grifon
Mettre la même valeur pour Username for your account
Saisir le mot de passe de cet utilisateur
Confirmer cet mot de passe en le saisissant à nouveau
Partition disks :
Sélectionner comme méthode de partitionnement : Guided - use entire disk and set up LVM
Sélectionner le Virtual disk disponible (vda)
Choisir de mettre All files in one partition
Confirmer avec <Yes> l'écriture des changements sur le disque et la configuration de LVM
Valider Amount of volume group to use for guided partitioning en laissant la valeur par défaut (tout l'espace disque disponible)
Confirmer avec <Yes> l'écriture des changements sur le disque
Choisir <No> lorsque l'on vous demande si vous voulez Scan another CD or DVD
Configure apt :
Sélectionner France
Sélectionner deb.debian.org
Ne pas ajouter de HTTP proxy information
Sélectionner <No> à Participate in the package usage survey
Select and install software : à l'étape Choose software to install ne sélectionnez que standard system utilities et SSH server (avec la barre espace) et continuer
Install the GRUB boot loader : faites <Yes> et sélectionner le volume /dev/vda
Installation complete : faites <Continue>, la machine va redémarrer
Vérifier bien que la machine n'a pas démarrée sur le disque d'installation. A cette étape vous pouvez retirer le disque d'installation de la VM.
Toujours en mode console, identifiez-vous en tant qu'utilisateur root sur la VM
L'adresse IPv6 sera ajoutée par le script de déploiement de la VM
Modifier le fichier /etc/sysctl.d/99-sysctl.conf et ajouter les lignes suivantes :
# Disable Accept of Router Advertisements
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.default.accept_ra=0
Vérifier le bon fonctionne d'un ping vers un nom de domaine (resolver), si cela ne fonctionne pas correctement, c'est probablement à cause d'une erreur de configuration réseau (IPv4 ou serveurs
DNS configurés)
Installer ntp et activer le service : apt update && apt install ntp && systemctl enable ntp
Installer haveged et active le service : apt install haveged && systemctl enable haveged
Installer resolvconf et active le service : apt install resolvconf && systemctl enable resolvconf
Modifier le fichier /etc/ssh/sshd_config afin de n'autoriser que les authentification par clé publique et autoriser l'authentification ssh root (par clé publique uniquement) PermitRootLogin prohibit-password, PubKeyAuthentication yes et PasswordAuthentication no
Créer le répertoire /root/.ssh
Créer le fichier /root/.ssh/authorized_keys et ajouter les clés publiques SSH root des hyperviseurs dedans (utiliser un paste et curl pour “transférer” les clés publiques)
Redémarrer le service SSH systemctl restart ssh
Vérifier que l'utilisateur root des hyperviseurs arrivent bien à se connecter à la machine, commande à faire avec des options : ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no <IPv4_NEW_VM_TEMPLATE>
Changer le mot de passe root et le mot de passe de l'utilisateur default-user-grifon par un mot de passe aléatoire
Redémarrer la VM afin de vérifier qu'elle fonctionne correctement (se connecter au compte root via SSH en passant par l'utilisateur root d'un des hyperviseurs)
Arrêter la VM
Transformer la VM en template (VM immuable)
Faites un test avec le script de déploiement de VM afin de vérifier que tout fonctionne correctement (ne pas hésiter à mettre un disque >32G, nombre de vCPU>1 et RAM>512M dans les paramètres du script de déploiement afin de tester le cas d'une VM où ces valeurs sont modifiées)
Si besoin, modifier le script de déploiement afin que tout fonctionne.