cloud-init
À quoi il sert
cloud-init, projet maintenu par Canonical, est installé dans les images Linux de presque tous les fournisseurs de cloud (Scaleway, AWS, Azure, Google Cloud, OpenStack). Au premier démarrage d'une instance, il détecte la plateforme, lit le service de métadonnées et les données utilisateur, puis applique la configuration décrite : utilisateurs et clés SSH, paquets, fichiers, commandes, montage de disques, configuration réseau. Le format le plus courant est le cloud-config, un document YAML qui commence par #cloud-config et dont chaque clé active un module.
Quand le choisir
Pour amorcer une instance : la rendre utilisable et y lancer l'application dès sa création, sans intervention manuelle, ce qui permet de la recréer à l'identique. Associé à une image dorée (Packer), il ne fait plus que la configuration propre à chaque instance. Ce n'est pas un outil de gestion de configuration continue : la plupart des modules ne s'exécutent qu'une fois par instance. Pour faire évoluer des serveurs existants, Ansible ; pour des serveurs immuables, on recrée l'instance.
Points d'attention
- Les données utilisateur restent lisibles pendant toute la vie de l'instance (API, console, service de métadonnées, copie dans
/var/lib/cloud/instance/) : n'y mettez aucun secret. - Modifier les données utilisateur d'une instance existante puis la redémarrer n'a en général aucun effet : les modules per-instance ont déjà tourné.
runcmdne fait qu'écrire un script, exécuté à l'étape finale après l'installation des paquets ;write_filess'exécute bien avant, sauf avecdefer: true.- Validez avant de créer l'instance avec
cloud-init schema -c fichier.yaml --annotate; sans la ligne#cloud-config, le fichier est ignoré. cloud-init status --waitattend la fin de la configuration et renvoie un code de sortie exploitable (0 succès, 1 plantage, 2 erreurs récupérables) ; les journaux sont/var/log/cloud-init.loget/var/log/cloud-init-output.log.- Avant de fabriquer une image à partir d'une instance,
cloud-init clean --logs --machine-idpour que chaque copie reparte de zéro.
Par où commencer
La leçon Le calcul : instances, images et cloud-init, qui écrit le cloud-config de l'application Signalements et le déploie sur deux instances Scaleway.