Partager via


Approfondissement de cloud-init

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles

Pour en savoir plus sur cloud-init ou pour le dépanner à un niveau plus approfondi, vous devez comprendre son fonctionnement. Ce document met en évidence les parties importantes et explique les spécificités d’Azure.

Quand cloud-init est inclus dans une image généralisée et qu’une machine virtuelle est créée à partir de cette image, il traite les configurations et s’exécute en cinq étapes pendant le démarrage initial. Ces étapes vous indiquent où en est cloud-init dans l’application de ses configurations.

Présentation de la configuration cloud-init

La configuration d’une machine virtuelle qui s’exécute sur une plateforme utilise cloud-init pour appliquer plusieurs configurations. La principale configuration avec laquelle vous interagissez est User data (customData), qui prend en charge plusieurs formats. Pour plus d’informations, consultez la documentation sur les formats de données utilisateur et cloud-init 21.2. Vous avez également la possibilité d’ajouter et d’exécuter des scripts (/var/lib/cloud/scripts) pour une autre configuration.

Images de Place de marché Azure préconfigurées

Certaines configurations sont déjà intégrées aux images de Place de marché Azure qui sont comprises avec cloud-init.

  • Source de données Cloud : cloud-init contient du code qui peut communiquer avec des plateformes de cloud. Ce code est appelé « datasources ». Lorsqu’une machine virtuelle est créée à partir d’une image cloud-init dans Azure, cloud-init charge la source de donnée Azure, qui interagit avec les points de terminaison de métadonnées Azure pour obtenir la configuration spécifique à la machine virtuelle.

  • Configuration du runtime (/run/cloud-init).

  • Configuration des images (/etc/cloud), comme /etc/cloud/cloud.cfg, /etc/cloud/cloud.cfg.d/*.cfg. En tant qu’exemple d’utilisation de cette configuration dans Azure, il est courant que les images du système d’exploitation Linux avec cloud-init disposent d’une directive de source de données Azure, qui indique à cloud-init quelle source de données utiliser, ce qui permet de gagner du temps sur cloud-init :

    sudo cat /etc/cloud/cloud.cfg.d/90_dpkg.cfg
    
    # to update this file, run dpkg-reconfigure cloud-init
    datasource_list: [ Azure ]
    

Index de démarrage de cloud-init (configuration du traitement)

Quand vous provisionnez des machines virtuelles avec cloud-init, le démarrage de la configuration se fait en cinq étapes. La sortie de ces étapes est visible dans les journaux.

  1. Index de générateur: Le générateur du système cloud-init démarre et détermine que cloud-init doit être inclus dans les objectifs de démarrage. dans ce cas, il active cloud-init.

  2. Étape locale cloud-init : ici, cloud-init recherche la source de données « Azure » locale, ce qui lui permet d’interagir avec Azure et d’appliquer une configuration réseau, y compris une configuration de secours.

  3. Index d’initialisation cloud-init (Réseau) : La mise en réseau doit être en ligne et les informations sur la carte réseau et la table de routage doivent être générées. Dans cette étape, les modules listés dans cloud_init_modules sous /etc/cloud/cloud.cfg sont exécutés. La machine virtuelle se trouvant dans Azure est montée, le disque éphémère est formaté, le nom d’hôte est défini, ainsi que d’autres tâches.

    Voici des exemples de cloud_init_modules :

    - migrator
    - seed_random
    - bootcmd
    - write-files
    - growpart
    - resizefs
    - disk_setup
    - mounts
    - set_hostname
    - update_hostname
    - ssh
    

    Après cette étape, cloud-init envoie un signal à la plateforme Azure indiquant que la machine virtuelle a été approvisionnée avec succès. Certains modules peuvent échouer, mais les défaillances de module ne provoquent pas automatiquement l’échec du provisionnement.

  4. Étape de configuration cloud-init : dans cette phase, les modules figurant dans cloud_config_modules définis et répertoriés dans /etc/cloud/cloud.cfg s’exécutent.

  5. Étape finale cloud-init : dans cette phase finale, les modules figurant dans cloud_final_modules, répertoriés dans /etc/cloud/cloud.cfg, s’exécutent. Voici les modules qui doivent être exécutés à la fin de l’exécution du processus de démarrage, tels que les installations de packages et les scripts d’exécution, etc.

    • Au cours de cet index, vous pouvez exécuter des scripts en les plaçant dans les répertoires sous /var/lib/cloud/scripts :
      • per-boot : les scripts dans ce répertoire s’exécutent à chaque démarrage
      • per-instance : les scripts dans ce répertoire s’exécutent lorsqu’une nouvelle instance est d’abord démarrée
      • per-once : les scripts dans ce répertoire s’exécutent une seule fois

Étapes suivantes

Résolution des problèmes cloud-init.