Comment configurer le démarrage automatique et l’ordre de démarrage des machines virtuelles sur Proxmox

Configurer le démarrage automatique des machines virtuelles dans Proxmox est une tâche courante, surtout si vous souhaitez que votre environnement redémarre sans interruption. Cependant, obtenir un résultat parfait peut s’avérer complexe, notamment avec plusieurs machines virtuelles interdépendantes ou nécessitant un ordre de démarrage précis. Généralement, on active simplement l’option « Démarrer au démarrage du système » dans l’interface web, mais cela ne suffit pas toujours pour définir des délais personnalisés, des priorités de démarrage spécifiques ou un ordre piloté par un script. De plus, sur certaines configurations, le démarrage automatique par défaut pose problème, en particulier avec le stockage réseau ou les environnements clusterisés. Cet article vise donc à résoudre ces problèmes et à garantir le démarrage des machines virtuelles dans le bon ordre, avec des délais si nécessaire, sans perturber l’ensemble du système.

Comment résoudre les problèmes de démarrage automatique des machines virtuelles et d’ordre de démarrage personnalisé dans Proxmox

Méthode 1 : Activer le démarrage automatique de base via l’interface graphique et configurer les priorités

Cette option est idéale si vous recherchez simplement une fonction de démarrage automatique avec un contrôle limité de l’ordre. Elle convient parfaitement aux machines virtuelles qui ne dépendent pas de séquences de démarrage complexes. Lorsque vous activez le démarrage automatique, Proxmox gère les machines virtuelles automatiquement : parfait, non ? Cependant, ce comportement peut parfois être rudimentaire, les machines virtuelles démarrant dans un ordre aléatoire ou ignorant les délais. Pour y remédier, vous pouvez configurer l’ ordre de démarrage/arrêt et le délai de démarrage dans le même menu.

  • Accédez à Centre de données -> Nœuds -> sélectionnez votre nœud -> Machines virtuelles
  • Cliquez sur votre machine virtuelle, puis accédez aux options.
  • Activer le démarrage automatique au démarrage du système
  • Ajustez l’ ordre de démarrage/arrêt : 1 signifie que l’appareil démarrera en premier, les nombres supérieurs s’arrêtant ensuite.
  • Définissez le délai de démarrage (en secondes) si vous souhaitez ralentir le processus pour permettre aux services de se mettre en marche correctement.

C’est assez simple, mais attention : cela ne fonctionne que si votre cluster ou votre configuration ne modifie pas ces paramètres. De plus, lors de la configuration de plusieurs machines virtuelles, l’ordre est important : si votre serveur de base de données doit démarrer avant les applications, attribuez-lui un numéro inférieur.

Méthode 2 : Utilisation de l’interface de ligne de commande pour un contrôle accru et des délais plus longs

Parfois, les options de l’interface graphique ne suffisent pas, notamment pour les séquences de démarrage personnalisées ou les délais d’initialisation des services réseau. C’est là que l’interface en ligne de commande (CLI) prend tout son sens. Vous pouvez configurer une machine virtuelle pour qu’elle démarre au démarrage du système grâce à une simple commande :

# qm set <vmid> -onboot 1

Voici la méthode la plus simple pour garantir le démarrage de la machine virtuelle après un redémarrage. Mais que faire si vous souhaitez un délai ? C’est là qu’intervient le paramètre `startall-onboot-delay` de la configuration de l’hôte. Ce paramètre retarde uniformément le démarrage de toutes les machines virtuelles, ce qui peut s’avérer utile si vous attendez que le stockage ou le réseau se stabilise.

# pvenode config set --startall-onboot-delay 120

Dans cet exemple, toutes les machines virtuelles attendront 2 minutes avant de démarrer. Pratique pour les configurations importantes où les dépendances nécessitent un peu de temps.

Méthode 3 : Scripter votre séquence de démarrage avec Bash

Toujours pas convaincu ? Vous souhaitez un ordre précis avec des pauses personnalisées ? L’astuce consiste à créer un script. Créez un script shell qui appelle les commandes qm start <vmid>dans l’ordre souhaité, avec sleepdes délais. Placez ce script dans un emplacement sûr, rendez-le exécutable et lancez-le au démarrage via systemd. C’est magique ! Du moins, ça a fonctionné pour moi sur une configuration qui refusait catégoriquement de démarrer les machines virtuelles dans le bon ordre.

# nano /root/start-vm-order.sh

Puis à l’intérieur :

#!/bin/bash qm start 101 echo "Started VM 101" sleep 60 # wait 60 seconds for DNS, network, etc.qm start 102 echo "Started VM 102" sleep 120 # wait 2 minutes before next qm start 103 echo "Started VM 103"

Sauvegarder, rendre exécutable :

# chmod +x /root/start-vm-order.sh

Créez maintenant un service systemd pour qu’il s’exécute au démarrage :

# nano /etc/systemd/system/autostartvm.service [Unit] Description=Start Proxmox VMs in sequence After=network.target [Service] Type=oneshot ExecStart=/root/start-vm-order.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target 

Activez-le :

# systemctl enable autostartvm.service

Redémarrez l’hôte, vérifiez l’état :

# journalctl -u autostartvm.service -b

Ce n’est pas parfait, mais c’est assez flexible. De plus, pour des fonctionnalités plus avancées, vous pouvez ajouter des vérifications réseau ou d’autres scripts pour attendre la disponibilité des services avant de démarrer les machines virtuelles.

Bonus : Considérations relatives aux clusters HA

Si vous utilisez un cluster avec la haute disponibilité (HA) activée, inutile de configurer le « Démarrage au démarrage » ou l’« ordre de démarrage » pour chaque machine virtuelle : ces paramètres sont gérés par le gestionnaire HA. Vous devrez ajuster les paramètres HA ou modifier les scripts. Car, bien sûr, Proxmox complique toujours les choses inutilement, n’est-ce pas ?

Remarque : sur certaines configurations, le démarrage automatique peut s’avérer instable si le réseau ou le stockage n’est pas prêt. Dans ce cas, la méthode par script est probablement la plus fiable, surtout si elle est combinée à des vérifications de la disponibilité du réseau ou du serveur avant le démarrage de la machine virtuelle.

En résumé, grâce à un savant mélange de réglages d’interface graphique, de commandes en ligne de commande et de scripts personnalisés, vous pouvez contrôler avec une grande précision le démarrage de vos machines virtuelles après un redémarrage du serveur. La configuration initiale est un peu fastidieuse, mais une fois en place, le système fonctionne à merveille, ou presque.