Share via


cloud-init-ondersteuning voor virtuele machines in Azure

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

In dit artikel wordt uitgelegd welke ondersteuning er bestaat voor cloud-init voor het configureren van een virtuele machine (VM) of virtuele-machineschaalsets tijdens het inrichten in Azure. Deze cloud-init-configuraties worden uitgevoerd bij de eerste keer opstarten zodra de resources zijn ingericht door Azure.

VM-inrichting is het proces waarbij Azure de parameterwaarden voor het maken van vm's doorgeeft, zoals hostnaam, gebruikersnaam en wachtwoord, en deze beschikbaar maakt voor de virtuele machine wanneer deze wordt opgestart. Een inrichtingsagent verbruikt deze waarden, configureert de VIRTUELE machine en rapporteert wanneer deze is voltooid.

ondersteuning voor Azure twee inrichtingsagents cloud-init en de Azure Linux Agent (WALA).

overzicht van cloud-init

cloud-init is een veelgebruikte benadering om een Virtuele Linux-machine aan te passen, omdat deze voor het eerst wordt opgestart. U kunt cloud-init gebruiken voor het installeren van pakketten en schrijven van bestanden, of om gebruikers en beveiliging te configureren. Omdat cloud-init wordt aangeroepen tijdens het eerste opstartproces, zijn er geen extra stappen of vereiste agents om uw configuratie toe te passen. Zie de cloud-init-documentatiesite voor meer informatie over het correct opmaken van uw #cloud-config bestanden of andere invoer. #cloud-config bestanden zijn tekstbestanden die zijn gecodeerd in base64.

cloud-init werkt ook tussen distributies. U gebruikt bijvoorbeeld niet apt-get install of yum install om een pakket te installeren. In plaats daarvan kunt u een lijst definiëren met te installeren pakketten. cloud-init gebruikt automatisch het systeemeigen hulpprogramma voor pakketbeheer voor de distributie die u selecteert.

We werken actief samen met onze goedgekeurde Linux-distributiepartners om cloud-init-installatiekopieën beschikbaar te maken in Azure Marketplace. Met deze installatiekopieën kunnen uw cloud-init-implementaties en -configuraties naadloos werken met VM's en virtuele-machineschaalsets. In eerste instantie werken we samen met de goedgekeurde Linux-distributiepartners en upstream om ervoor te zorgen dat cloud-init-functies met het besturingssysteem in Azure worden bijgewerkt en openbaar worden gemaakt in de opslagplaatsen voor distributiepakketten.

Er zijn twee fasen voor het beschikbaar maken van cloud-init voor de ondersteunde Linux-distributies in Azure, pakketondersteuning en vervolgens ondersteuning voor installatiekopieën:

  • 'cloud-init-pakketondersteuning op Azure'-documenten, die cloud-init-pakketten verder worden ondersteund of in preview, zodat u deze pakketten kunt gebruiken met het besturingssysteem in een aangepaste installatiekopieën.
  • 'cloud-init ready'-documenten voor installatiekopieën als de installatiekopieën al zijn geconfigureerd voor gebruik van cloud-init.

Canonical

Uitgever/versie Aanbieden SKU Versie cloud-init-gereed voor installatiekopieën cloud-init-pakketondersteuning in Azure
Canonical 24.04 UbuntuServer 22.04-LTS nieuwste ja ja
Canonical 22.04 UbuntuServer 22.04-LTS nieuwste ja ja
Canonical 20.04 UbuntuServer 20.04-LTS nieuwste ja ja

RHEL

Uitgever/versie Aanbieden SKU Versie cloud-init-gereed voor installatiekopieën cloud-init-pakketondersteuning in Azure
RedHat 7 RHEL 7.7, 7.8, 7_9 nieuwste ja ja
RedHat 8 RHEL 8.1, 8.2, 8_3, 8_4 nieuwste ja ja
RedHat 9 RHEL 9_0, 9_1 nieuwste ja ja
  • Alle andere RedHat-SKU's vanaf RHEL 7 (versie 7.7) en RHEL 8 (versie 8.1), inclusief zowel Gen1- als Gen2-installatiekopieën, worden ingericht met behulp van cloud-init. Cloud-init wordt niet ondersteund op RHEL 6.

Oracle

Uitgever/versie Aanbieden SKU Versie cloud-init-gereed voor installatiekopieën cloud-init-pakketondersteuning in Azure
Oracle 7 Oracle Linux 77, 78, ol79 nieuwste ja ja
Oracle 8 Oracle Linux 81, ol82, ol83-lvm, ol84-lvm nieuwste ja ja
  • Alle andere Oracle-SKU's vanaf Oracle 7 (versie 7.7) en Oracle 8 (versie 8.1), inclusief zowel Gen1- als Gen2-installatiekopieën, worden ingericht met behulp van cloud-init.

SUSE SLES

Uitgever/versie Aanbieden SKU Versie cloud-init-gereed voor installatiekopieën cloud-init-pakketondersteuning in Azure
SUSE 15 SLES (SUSE Linux Enterprise Server) sp1, sp2, sp3 nieuwste ja ja
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 nieuwste ja ja

Debian

Uitgever/versie Aanbieden SKU Versie cloud-init-gereed voor installatiekopieën cloud-init-pakketondersteuning in Azure
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.1015 ja ja
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.991 ja ja
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.999 ja ja

Momenteel biedt Azure Stack ondersteuning voor het inrichten van cloud-init-installatiekopieën.

Wat is het verschil tussen cloud-init en de Linux-agent (WALA)?

WALA is een platformspecifieke Azure-agent die wordt gebruikt voor het inrichten en configureren van VM's en het verwerken van Azure-extensies.

We verbeteren de taak van het configureren van VM's voor het gebruik van cloud-init in plaats van de Linux-agent om bestaande cloud-init-klanten in staat te stellen hun huidige cloud-init-scripts te gebruiken, of nieuwe klanten om te profiteren van de uitgebreide cloud-init-configuratiefunctionaliteit. Als u bestaande investeringen hebt in cloud-init-scripts voor het configureren van Linux-systemen, zijn er geen aanvullende instellingen vereist om cloud-init-processen in te schakelen.

Cloud-init kan Azure-extensies niet verwerken, dus WALA is nog steeds vereist in de installatiekopieën om extensies te verwerken, maar moet de inrichtingscode zijn uitgeschakeld. Voor goedgekeurde Linux-distributies van installatiekopieën die worden geconverteerd naar inrichting door cloud-init, hebben ze WALA geïnstalleerd en correct ingesteld.

Als u bij het maken van een VIRTUELE machine de Azure CLI-switch --custom-data niet opneemt tijdens het inrichten, neemt cloud-init of WALA de minimale VM-inrichtingsparameters die nodig zijn om de VIRTUELE machine in te richten en voltooit u de implementatie met de standaardinstellingen. Als u verwijst naar de cloud-init-configuratie met de --custom-data switch, is alles wat in uw aangepaste gegevens is opgenomen, beschikbaar voor cloud-init wanneer de VIRTUELE machine wordt opgestart.

cloud-init-configuraties die zijn toegepast op VM's hebben geen tijdsbeperkingen en leiden er niet toe dat een implementatie mislukt door een time-out uit te voeren. Dit geldt niet voor WALA, als u de standaardinstellingen van WALA wijzigt voor het verwerken van aangepaste gegevens, kan deze de totale toelage voor de inrichting van vm's van 40 minuten niet overschrijden, als dit het geval is, mislukt het maken van de VM.

cloud-init-VM-inrichting zonder UDF-stuurprogramma

Vanaf cloud-init 21.2 kunt u cloud-init gebruiken om een virtuele machine in Azure in te richten zonder een UDF-stuurprogramma. Als een UDF-stuurprogramma niet beschikbaar is in de installatiekopieën, gebruikt cloud-init de metagegevens die beschikbaar zijn in de Azure Instance Metadata Service om de VIRTUELE machine in te richten. Deze optie werkt alleen voor SSH-sleutel- en gebruikersgegevens. Als u tijdens het inrichten een wachtwoord of aangepaste gegevens wilt doorgeven aan een virtuele machine, moet u een UDF-stuurprogramma gebruiken.

Een virtuele machine met cloud-init implementeren

Het implementeren van een virtuele machine met cloud-init is net zo eenvoudig als het verwijzen naar een cloud-init-distributie tijdens de implementatie. Linux-distributieonderhouders moeten ervoor kiezen om cloud-init in te schakelen en te integreren in hun door Azure gepubliceerde basisinstallatiekopieën. Zodra u hebt bevestigd dat de installatiekopieën die u wilt implementeren cloud-init zijn ingeschakeld, kunt u de Azure CLI gebruiken om de installatiekopieën te implementeren.

De eerste stap bij het implementeren van deze installatiekopieën is het maken van een resourcegroep met de opdracht az group create . Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd.

In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost.

az group create --name myResourceGroup --location eastus

De volgende stap bestaat uit het maken van een bestand in uw huidige shell met de naam cloud-init.txt en het plakken van de volgende configuratie. Maak voor dit voorbeeld het bestand in Cloud Shell niet op uw lokale computer. U kunt elke editor van uw keuze gebruiken. Voer een zinnige editor in cloud-init.txt om het bestand te maken en een lijst met beschikbare editors weer te geven. Gebruik de editor van uw keuze. Sommige typische keuzes zijn nano, vim of ed. Controleer of het hele cloud-init-bestand correct is gekopieerd, met name de eerste regel:

SLES Ubuntu RHEL
# cloud-config
package_upgrade: true
packages:
- apache2
# cloud-config
package_upgrade: true
packages:
- httpd
# cloud-config
package_upgrade: true
packages:
- httpd

Notitie

cloud-init heeft meerdere invoertypen, cloud-init gebruikt de eerste regel van de customData/userData om aan te geven hoe deze de invoer moet verwerken, bijvoorbeeld #cloud-config geeft aan dat de inhoud moet worden verwerkt als een cloud-init-configuratie.

Sluit het bestand af en sla het bestand op volgens de editor. Controleer de bestandsnaam bij afsluiten.

De laatste stap is het maken van een virtuele machine met de opdracht az vm create .

In het volgende voorbeeld wordt een virtuele machine gemaakt met de naam ubuntu2204 en worden SSH-sleutels gemaakt als deze nog niet bestaan op een standaardsleutellocatie. Als u een specifieke set sleutels wilt gebruiken, gebruikt u de optie --ssh-key-value. Gebruik de --custom-data-parameter om door te geven in uw cloud-init-configuratiebestand. Geef het volledige pad naar cloud-init.txt op als u het bestand buiten uw huidige werkmap hebt opgeslagen.

az vm create \
  --resource-group myResourceGroup \
  --name ubuntu2204 \
  --image Canonical:UbuntuServer:22_04-lts:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

Wanneer de VIRTUELE machine wordt gemaakt, toont de Azure CLI informatie die specifiek is voor uw implementatie. Noteer het publicIpAddress. Dit adres wordt gebruikt voor toegang tot de virtuele machine. Het duurt even voordat de virtuele machine is gemaakt, de pakketten die moeten worden geïnstalleerd en de app wordt gestart. Er zijn achtergrondtaken die nog worden uitgevoerd nadat u door de Azure CLI bent teruggeleid naar de prompt. U kunt SSH gebruiken in de virtuele machine en de stappen in de sectie Probleemoplossing gebruiken om de cloud-init-logboeken weer te geven.

U kunt ook een cloud-init-VM implementeren door de parameters in de ARM-sjabloon door te geven.

Problemen met cloud-init oplossen

Zodra de VIRTUELE machine is ingericht, wordt cloud-init uitgevoerd door alle modules en het script dat is gedefinieerd --custom-data om de VIRTUELE machine te configureren. Als u fouten of weglatingen in de configuratie wilt oplossen, moet u zoeken naar de modulenaam (disk_setup of runcmd bijvoorbeeld) in het cloud-init-logboek, dat zich in /var/log/cloud-init.log bevindt.

Notitie

Niet elke modulefout resulteert in een fatale algemene configuratiefout in cloud-init. Als het script bijvoorbeeld runcmd mislukt, slaagt cloud-init nog steeds met het inrichten van rapporten omdat de runcmd-module is uitgevoerd.

Zie de cloud-init-documentatie voor meer informatie over cloud-init-logboekregistratie

Telemetrie

cloud-init verzamelt gebruiksgegevens en stuurt deze naar Microsoft om onze producten en services te verbeteren. Telemetrie wordt alleen verzameld tijdens het inrichtingsproces (eerste opstart van de VIRTUELE machine). De verzamelde gegevens helpen ons bij het onderzoeken van inrichtingsfouten en het bewaken van prestaties en betrouwbaarheid. Verzamelde gegevens bevatten geen id's (persoonlijke id's). Lees onze privacyverklaring voor meer informatie. Enkele voorbeelden van verzamelde telemetrie zijn (dit is geen volledige lijst): informatie met betrekking tot het besturingssysteem (cloud-init-versie, distributieversie, kernelversie), prestatiegegevens van essentiële VM-inrichtingsacties (tijd voor het verkrijgen van DHCP-lease, tijd voor het ophalen van metagegevens die nodig zijn voor het configureren van de VM, enzovoort), cloud-init-logboek en dmesg-logboek.

Telemetrieverzameling is momenteel ingeschakeld voor de meeste marketplace-installatiekopieën die gebruikmaken van cloud-init. Deze optie wordt ingeschakeld door de KVP-telemetrierapporter voor cloud-init op te geven. In de meeste Azure Marketplace-installatiekopieën vindt u deze configuratie in het bestand /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg. Als u dit bestand verwijdert tijdens de voorbereiding van de installatiekopieën, wordt telemetrieverzameling uitgeschakeld voor alle VM's die op basis van deze installatiekopieën zijn gemaakt.

Voorbeeldinhoud van 10-azure-kvp.cfg

reporting:
  logging:
    type: log
  telemetry:
    type: hyperv

Volgende stappen

Problemen met cloud-init oplossen.

Zie de volgende documenten voor voorbeelden van configuratiewijzigingen in cloud-init: