====== Générer un template VM Debian ====== 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-** sur un des hyperviseurs avec : * Un ID **ID_NEW_VM_TEMPLATE** (en principe 700.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-** * **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 **** 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 **** l'écriture des changements sur le disque * Choisir **** 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 **** à //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 **** et sélectionner le volume **/dev/vda** * Installation complete : faites ****, 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 '' * 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. * Supprimer la nouvelle VM qui vient d'être créée par le script de déploiement et de libérer l'IPv4 et le range IPv6 utilisés par cette VM dans l'IPAM