Condividi tramite


Approfondimenti su cloud-init

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Per altre informazioni su cloud-init o sulla risoluzione dei problemi a livello più approfondito, è necessario comprendere il funzionamento. Questo documento illustra le parti importanti e illustra le specifiche di Azure.

Quando cloud-init è incluso in un'immagine generalizzata e viene creata una macchina virtuale da tale immagine, elabora le configurazioni ed esegue cinque fasi durante l'avvio iniziale. Queste fasi illustrano in quale punto cloud-init applica le relative configurazioni.

Comprendere la configurazione di Cloud-Init

La configurazione di una macchina virtuale da eseguire in una piattaforma usa cloud-init per applicare più configurazioni. Le configurazioni principali con cui si interagisce sono User data (customData), che supporta più formati. Per altre informazioni, vedere la documentazioneUser-Data Formati e cloud-init 21.2. È anche possibile aggiungere ed eseguire script (/var/lib/cloud/scripts) per altre configurazioni.

Immagini preconfigurate di Azure Marketplace

Alcune configurazioni sono già inserite in immagini di Azure Marketplace fornite con cloud-init.

  • Origine dati cloud: cloud-init contiene codice che può interagire con le piattaforme cloud, questi codici sono denominati "origini dati". Quando una macchina virtuale viene creata da un'immagine cloud-init in Azure, cloud-init carica l'origine dati di Azure, che interagisce con gli endpoint dei metadati di Azure per ottenere la configurazione specifica della macchina virtuale.

  • Configurazione di runtime (/run/cloud-init).

  • Configurazione dell'immagine (/etc/cloud), ad esempio /etc/cloud/cloud.cfg, /etc/cloud/cloud.cfg.d/*.cfg. Un esempio di dove viene utilizzata questa configurazione in Azure riguarda le immagini del sistema operativo Linux con cloud-init; in queste immagini, è comune avere una direttiva datasource di Azure che indica a cloud-init quale origine utilizzare, facendo così risparmiare tempo nell'esecuzione.

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

Fasi di avvio di Cloud-init (configurazione di elaborazione)

Quando si esegue il provisioning di macchine virtuali con cloud-init, sono disponibili cinque fasi di avvio della configurazione. L'output di queste fasi è visibile nei log.

  1. Fase generatore: il generatore di sistema cloud-init viene avviato e determina che cloud-init deve essere incluso negli obiettivi di avvio e, in tal caso, abilita cloud-init.

  2. Fase locale di Cloud-init: in questo caso cloud-init cerca l'origine dati locale "Azure", che consente a cloud-init di interfacciarsi con Azure e di applicare una configurazione di rete, incluso il fallback.

  3. Cloud-init init Stage (Network): la rete dovrebbe essere online e le informazioni sulla NIC e sulla tabella di routing dovrebbero essere generate. In questa fase vengono eseguiti i moduli elencati in cloud_init_modules/etc/cloud/cloud.cfg . La macchina virtuale in Azure viene montata, il disco temporaneo viene formattato, il nome host viene impostato, insieme ad altre attività.

    Di seguito sono riportati alcuni degli elementi cloud_init_modulesseguenti:

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

    Dopo questa fase, cloud-init invia un segnale alla piattaforma Azure che la macchina virtuale è stata fornita correttamente. Alcuni moduli potrebbero non riuscire, ma non tutti gli errori del modulo generano automaticamente un errore di provisioning.

  4. Fase di configurazione di Cloud-init: in questa fase, i moduli in cloud_config_modules definiti e elencati in /etc/cloud/cloud.cfg vengono eseguiti.

  5. Fase finale di Cloud-init: in questa fase finale, i moduli in cloud_final_modules, elencati in /etc/cloud/cloud.cfg, vengono eseguiti. In questo caso, i moduli che devono essere eseguiti in ritardo nell'esecuzione del processo di avvio, ad esempio installazioni di pacchetti ed eseguire script e così via.

    • Durante questa fase, è possibile eseguire script inserendoli nelle directory in /var/lib/cloud/scripts:
      • per-boot - script all'interno di questa directory, eseguiti a ogni riavvio
      • per-instance : script all'interno di questa directory vengono eseguiti quando viene avviata una nuova istanza
      • per-once - gli script all'interno di questa directory vengono eseguiti una sola volta

Passaggi successivi

Risoluzione dei problemi relativi a cloud-init.