Virtualisation

Qu'est-ce que cloud-init ?

Définition

cloud-init is the standard mechanism for configuring a virtual machine on first boot, using metadata supplied by the platform. It handles SSH key injection, hostname, network configuration and arbitrary user scripts, which is what makes fully automated provisioning possible.

Pourquoi cloud-init est important

Il gère l'injection de clés SSH, le nom d'hôte, la configuration réseau et des scripts utilisateur arbitraires, ce qui rend possible un provisionnement entièrement automatisé.

cloud-init en pratique

Lors d'un démarrage à froid, cloud-init s'exécute avant le démarrage de vos services. Vous surveilleriez la console pour « running modules » et vérifieriez /var/log/cloud-init-output.log. Un script user-data mal configuré peut suspendre le démarrage ou laisser SSH verrouillé. Vous devriez tester sur une instance jetable d'abord. Vous pouvez relancer avec « cloud-init clean » et redémarrer. Une erreur vous coûte du temps de re-provisionnement à partir du panneau, ou une session VNC pour corriger à la main.

Ce qu'on comprend mal à propos de cloud-init

L'erreur courante consiste à supposer que cloud-init s'exécute à chaque démarrage. Il ne s'exécute qu'une seule fois, au premier démarrage. Si vous ajoutez un script aux user-data en espérant qu'il s'applique au redémarrage, cela ne se produira pas. Correction : utilisez-le uniquement pour le provisionnement initial, ou appelez explicitement 'cloud-init clean' pour réinitialiser l'état en vue d'une nouvelle exécution.

cloud-init — questions fréquentes

Comment transmettre des user-data à cloud-init ?

Lors du provisionnement depuis le panneau ou l'API, vous pouvez fournir un champ user-data. Il est injecté via les métadonnées, et cloud-init l'applique au premier démarrage. Utilisez un script shell ou un YAML cloud-config, selon vos besoins.

Puis-je utiliser cloud-init avec une ISO personnalisée ?

Oui, si l'ISO inclut cloud-init. Par exemple, les images cloud des principales distributions le contiennent. Vous pouvez aussi téléverser votre propre image avec cloud-init. Assurez-vous que l'instance est en KVM, pas en conteneur, car cloud-init s'appuie sur les métadonnées fournies par la plateforme.

Plus de virtualisation

KVM
KVM est une virtualisation matérielle complète intégrée au noyau Linux, donnant à chaque invité son propre noyau et une isolation renforcée par le matériel vis-à-vis des autres locataires.
OpenVZ
OpenVZ est une virtualisation par conteneurs dans laquelle chaque instance partage le noyau hôte, de sorte que les invités ne peuvent pas charger de modules noyau ni exécuter un système d'exploitation différent.
LXC
LXC est la conteneurisation native de Linux qui isole les processus avec des espaces de noms et des cgroups tout en partageant le noyau hôte.
Hyperviseur
Un hyperviseur est la couche logicielle qui crée et exécute des machines virtuelles, allouant les CPU physiques, la mémoire et les entrées-sorties entre elles.
Virtualisation imbriquée
La virtualisation imbriquée permet à une machine virtuelle d'exécuter elle-même des machines virtuelles, en exposant les extensions de virtualisation du processeur à l'invité.
vCPU
Un vCPU est un processeur virtuel présenté à un invité, adossé au temps d'ordonnancement sur un cœur ou un thread physique.