Approfondimento 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.
Informazioni sulla 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 documentazione relativa ai formati di dati utente 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 uso di questa configurazione in Azure è comune per le immagini del sistema operativo Linux con cloud-init avere una direttiva origine dati di Azure che indica a cloud-init quale origine dati usare, questa configurazione consente di risparmiare tempo cloud-init: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.
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.
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.
Cloud-init Stage (Network): la rete deve essere online e le informazioni sulla tabella di interfaccia di rete e di route devono 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_modules
seguenti:- 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 di cui è stato eseguito il provisioning. Alcuni moduli potrebbero non riuscire, ma non tutti gli errori del modulo generano automaticamente un errore di provisioning.
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.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 riavvioper-instance
: script all'interno di questa directory vengono eseguiti quando viene avviata una nuova istanzaper-once
- gli script all'interno di questa directory vengono eseguiti una sola volta
- Durante questa fase, è possibile eseguire script inserendoli nelle directory in