Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ Macchine virtuali Linux ✔️ Set di scalabilità flessibili
Ubuntu offre immagini cloud ufficiali pronte per Azure (cloudimg) che includono tutti i componenti necessari per il provisioning corretto in Azure, ad esempio cloud-init, kernel ottimizzati per Azure, compatibilità dell'agente guest di Azure e impostazioni predefinite ottimizzate per le prestazioni per gli ambienti virtualizzati. Queste immagini sono il punto di partenza consigliato per la creazione di un disco rigido virtuale personalizzato perché sono allineate ai requisiti di provisioning delle macchine virtuali di Azure e riducono i passaggi di configurazione manuali necessari.
Ubuntu pubblica queste immagini in più formati, tra cui dischi rigidi virtuali (VHD) di Azure pronti per l'uso nel https://cloud-images.ubuntu.com/ sito Web. Se è necessario creare un'immagine Ubuntu specializzata per Azure, è possibile iniziare con queste compilazioni VHD convalidate e personalizzarle in base alle esigenze. Le versioni più recenti delle immagini sono disponibili nelle posizioni seguenti:
- Ubuntu 20.04/Focal: focal-server-cloudimg-amd64-azure.vhd.tar.gz
- Ubuntu 22.04/Jammy: jammy-server-cloudimg-amd64-azure.vhd.tar.gz
- Ubuntu 24.04/Noble: noble-server-cloudimg-amd64-azure.vhd.tar.gz
Prerequisiti
In questo articolo si presuppone che l'utente abbia già installato un sistema operativo Ubuntu Linux in un disco rigido virtuale. Sono disponibili vari strumenti per la creazione di file VHD. Un esempio è una soluzione di virtualizzazione come Hyper-V. Per istruzioni, vedere Installare il ruolo Hyper-V e configurare una macchina virtuale.
Note sull'installazione di Ubuntu
- Per altri suggerimenti sulla preparazione di Linux per Azure, vedere Note generali sull'installazione di Linux.
- Il formato VHDX non è supportato in Azure, solo nei dischi rigidi virtuali fissi (VHD). È possibile convertire il disco in formato VHD usando Hyper-V Manager o il cmdlet
Convert-VHD. - Quando si installa il sistema Linux, è consigliabile usare partizioni standard anziché LVM (Logical Volume Manager), spesso l'impostazione predefinita per numerose installazioni. Queste partizioni standard permettono di evitare i conflitti di nome LVM con le macchine virtuali clonate, in particolare se fosse necessario collegare un disco del sistema operativo a un'altra macchina virtuale per la risoluzione dei problemi. È anche possibile usareLVM o RAID sui dischi dati.
- Non configurare una partizione o un file di scambio nel disco del sistema operativo. È possibile configurare l'agente di provisioning
cloud-initper creare un file o una partizione di scambio sul disco delle risorse temporaneo. Per altre informazioni su questo processo, vedere Creare una partizione SWAP per una macchina virtuale Linux di Azure. - Le dimensioni di tutti i dischi rigidi virtuali in Azure devono essere allineate a 1 MB. Quando si converte un disco non formattato in un disco rigido virtuale, prima della conversione è necessario assicurarsi che le dimensioni del disco non formattato siano un multiplo di 1 MB. Per altre informazioni, vedere Note sull'installazione di Linux.
È possibile caricare un'immagine Ubuntu predefinita direttamente in Azure e usare il disco rigido virtuale risultante per creare nuove macchine virtuali. Se si tratta della prima volta che si carica un .vhd file, vedere Creare una macchina virtuale Linux da un disco personalizzato.
Passaggi manuali
Note
Prima di provare a creare un'immagine Ubuntu personalizzata per Azure, valutare la possibilità di usare le immagini predefinite e testate presenti nella pagina Web Ubuntu Cloud Images.
Se si usa Windows per estrarre l'immagine predefinita, usare Windows WSL ed eseguire il comando seguente
sudo tar --sparse -xvzf <image name>-azure.vhd.tar.gz
Nel riquadro centrale della console di gestione di Hyper-V selezionare la macchina virtuale.
Selezionare Connetti per aprire la finestra per la macchina virtuale.
Sostituire i repository correnti nell'immagine per usare il repository Azure di Ubuntu.
Prima di modificare
/etc/apt/sources.list/etc/apt/sources.list.d/ubuntu.sources, è consigliabile eseguire un backup:Per Ubuntu 22.04 e versioni precedenti
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bakPer Ubuntu 24.04 e versioni successive
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bakPer Ubuntu 22.04 e versioni precedenti
sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo apt updatePer Ubuntu 24.04 e versioni successive
sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list.d/ubuntu.sources sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list.d/ubuntu.sources sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list.d/ubuntu.sources sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list.d/ubuntu.sources sudo apt updateLe immagini di Ubuntu su Azure utilizzano kernel su misura di Azure kernel Azure Tailored. Aggiornare il sistema operativo alla versione più recente del kernel su misura per Azure e installare gli strumenti Linux di Azure (incluse le dipendenze di Hyper-V):
sudo apt update sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure sudo apt full-upgrade sudo rebootModificare la riga di avvio del kernel per GRUB in modo da includere parametri del kernel aggiuntivi per Azure. A questo scopo, aprire
/etc/default/grubin un editor di testo, trovare la variabile denominataGRUB_CMDLINE_LINUX_DEFAULT(o aggiungerla se necessario), quindi modificarla per includere i parametri seguenti:GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"Salvare e chiudere il file e quindi eseguire
sudo update-grub. Con questo passaggio tutti i messaggi della console vengono inviati alla prima porta seriale, aiutando così il supporto tecnico di Azure nell'attività di debug.Verificare che il server SSH sia installato e configurato per l'esecuzione all'avvio. Questa è in genere l'impostazione predefinita.
Installare
cloud-init(agente di provisioning) e l'agente Linux di Azure (gestore delle estensioni guest).Cloud-initusanetplanper eseguire la configurazione di rete del sistema (durante il provisioning e ogni avvio successivo) egdiskper partizionare i dischi delle risorse.sudo apt update sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagentNote
Il pacchetto
walinuxagentpotrebbe rimuovere i pacchettiNetworkManagereNetworkManager-gnome, se installati.Rimuovere le configurazioni predefinite
cloud-inite gli artefattinetplanrimasti che potrebbero entrare in conflitto con il provisioningcloud-initsu Azure: per Ubuntu 22.04 e versioni precedentisudo rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg sudo rm -f /etc/cloud/ds-identify.cfg sudo rm -f /etc/netplan/*.yamlPer Ubuntu 24.04 e versioni successive
sudo rm -f /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg sudo rm -f /etc/cloud/ds-identify.cfg sudo rm -f /etc/netplan/*.yamlConfigurare
cloud-initper effettuare il provisioning del sistema usando l'origine dati di Azure:sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg <<EOF datasource_list: [ Azure ] EOF sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg <<EOF system_info: package_mirrors: - arches: [i386, amd64] failsafe: primary: http://archive.ubuntu.com/ubuntu security: http://security.ubuntu.com/ubuntu search: primary: - http://azure.archive.ubuntu.com/ubuntu/ security: [] - arches: [armhf, armel, default] failsafe: primary: http://ports.ubuntu.com/ubuntu-ports security: http://ports.ubuntu.com/ubuntu-ports EOF sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg <<EOF reporting: logging: type: log telemetry: type: hyperv EOFConfigurare l'agente Linux di Azure per fare affidamento su
cloud-initper effettuare il provisioning. Per altre informazioni su queste opzioni, fare riferimento al progetto WALinuxAgent.sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.confsudo tee -a /etc/waagent.conf <<EOF # For Azure Linux agent version >= 2.2.45, this is the option to configure, # enable, or disable the provisioning behavior of the Linux agent. # Accepted values are auto (default), waagent, cloud-init, or disabled. # A value of auto means that the agent will rely on cloud-init to handle # provisioning if it is installed and enabled, which in this case it will. Provisioning.Agent=auto EOFPulire
cloud-inite gli artefatti e i log del runtime dell'agente Linux di Azure:sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo systemctl stop walinuxagent.service sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.logEffettuare il deprovisioning della macchina virtuale e prepararla per il provisioning in Azure.
Note
Il comando
sudo waagent -force -deprovision+usergeneralizza l'immagine tentanto di pulire il sistema per renderlo idoneo per un nuovo provisioning. L'opzione+userelimina l'ultimo account utente di cui è stato effettuato il provisioning e i dati associati.sudo waagent -force -deprovision+user sudo rm -f ~/.bash_historyAvviso
Il deprovisioning con il comando precedente non garantisce che vengano cancellate tutte le informazioni sensibili dall'immagine e che l'immagine sia adatta per la ridistribuzione.
Selezionare Azione>Arresta in Hyper-V Manager.
Azure accetta solo i dischi rigidi virtuali di dimensioni fisse. Se il disco del sistema operativo della macchina virtuale non è un disco rigido virtuale di dimensioni fisse, usare il
Convert-VHDcmdlet di PowerShell e specificare l'opzione-VHDType Fixed. Per altre informazioni, vedere la documentazione perConvert-VHDin Convert-VHD.Per portare una macchina virtuale di seconda generazione in Azure, seguire questa procedura:
Andare alla directory
boot EFI:cd /boot/efi/EFICopiare la directory
ubuntuin una nuova directory denominataboot:sudo cp -r ubuntu/ bootAndare alla directory di avvio appena creata:
cd bootRinominare il file
shimx64.efi:sudo mv shimx64.efi bootx64.efiRinominare il file
grub.cfginbootx64.cfg:sudo mv grub.cfg bootx64.cfg
Contenuti correlati
È ora possibile usare il disco rigido virtuale di Ubuntu Linux per creare nuove macchine virtuali in Azure. Se è la prima volta che si carica il file VHD in Azure, vedere Creare una macchina virtuale Linux da un disco personalizzato.