Cloud-init: uitgebreide informatie
Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️
Voor meer informatie over cloud-init of het oplossen van problemen op een dieper niveau, moet u begrijpen hoe het werkt. In dit document worden de belangrijke onderdelen gemarkeerd en worden de azure-details uitgelegd.
Wanneer cloud-init is opgenomen in een gegeneraliseerde installatiekopie en er een VIRTUELE machine wordt gemaakt op basis van die installatiekopie, worden configuraties verwerkt en tijdens de eerste keer opstarten vijf fasen doorlopen. In deze fasen ziet u op welk moment cloud-init de configuraties toepast.
Cloud-Init-configuratie begrijpen
Als u een VIRTUELE machine configureert voor uitvoering op een platform, wordt cloud-init gebruikt om meerdere configuraties toe te passen. De belangrijkste configuraties waarmee u communiceert, zijn User data
(customData), die ondersteuning biedt voor meerdere indelingen. Zie de documentatie van User-Data Formats & cloud-init 21.2 voor meer informatie. U hebt ook de mogelijkheid om scripts (/var/lib/cloud/scripts) toe te voegen en uit te voeren voor andere configuraties.
Vooraf geconfigureerde Azure Marketplace-installatiekopieën
Sommige configuraties zijn al gebakken in Azure Marketplace-installatiekopieën die worden geleverd met cloud-init.
Cloudgegevensbron : cloud-init bevat code die kan communiceren met cloudplatforms. Deze codes worden 'gegevensbronnen' genoemd. Wanneer een VIRTUELE machine wordt gemaakt op basis van een cloud-init-installatiekopieën in Azure, laadt cloud-init de Azure-gegevensbron, die communiceert met de Eindpunten van Azure-metagegevens om de vm-specifieke configuratie op te halen.
Runtimeconfiguratie (/run/cloud-init).
Installatiekopieënconfiguratie (/etc/cloud), zoals
/etc/cloud/cloud.cfg
,/etc/cloud/cloud.cfg.d/*.cfg
. Een voorbeeld van waar deze configuratie wordt gebruikt in Azure, is het gebruikelijk dat de Installatiekopieën van het Linux-besturingssysteem met cloud-init een Azure-gegevensbronrichtlijn hebben die cloud-init vertelt welke gegevensbron deze moet gebruiken. Met deze configuratie wordt cloud-init-tijd opgeslagen:sudo cat /etc/cloud/cloud.cfg.d/90_dpkg.cfg
# to update this file, run dpkg-reconfigure cloud-init datasource_list: [ Azure ]
Cloud-init-opstartfasen (configuratie verwerken)
Wanneer u VM's inricht met cloud-init, zijn er vijf opstartfasen voor de configuratie. De uitvoer van deze fasen is zichtbaar in de logboeken.
GeneratorFase: De cloud-init-systeemgenerator wordt gestart en bepaalt dat cloud-init moet worden opgenomen in de opstartdoelen, en als dat het geval is, wordt cloud-init ingeschakeld.
Cloud-init Local Stage: Hier zoekt cloud-init naar de lokale 'Azure'-gegevensbron, waarmee cloud-init kan worden gebruikt om te interfaceren met Azure en een netwerkconfiguratie toe te passen, inclusief terugval.
Cloud-init-fase (netwerk): netwerken moeten online zijn en de NIC- en routetabelgegevens moeten worden gegenereerd. In deze fase worden de modules uitgevoerd waarin
/etc/cloud/cloud.cfg
wordt vermeldcloud_init_modules
. De VIRTUELE machine in Azure is gekoppeld, de tijdelijke schijf is geformatteerd, de hostnaam wordt ingesteld, samen met andere taken.Hier volgen enkele van de
cloud_init_modules
volgende:- migrator - seed_random - bootcmd - write-files - growpart - resizefs - disk_setup - mounts - set_hostname - update_hostname - ssh
Na deze fase stuurt cloud-init een signaal naar het Azure-platform dat de VIRTUELE machine is ingericht. Sommige modules zijn mogelijk mislukt, maar niet alle modulefouten leiden automatisch tot een inrichtingsfout.
Cloud-init-configuratiefase: In deze fase worden de modules in
cloud_config_modules
gedefinieerde en vermelde ./etc/cloud/cloud
cfg uitgevoerd.Cloud-init Final Stage: In deze laatste fase worden de modules in
cloud_final_modules
, vermeld in/etc/cloud/cloud.cfg
, uitgevoerd. Hier moeten modules die te laat worden uitgevoerd tijdens de uitvoering van het opstartproces, zoals pakketinstallaties en scripts uitvoeren, enzovoort.- Tijdens deze fase kunt u scripts uitvoeren door ze in de mappen onder
/var/lib/cloud/scripts
:per-boot
- scripts in deze map, worden uitgevoerd bij elke herstartper-instance
- scripts in deze map worden uitgevoerd wanneer een nieuw exemplaar voor het eerst wordt opgestartper-once
- scripts in deze map slechts één keer worden uitgevoerd
- Tijdens deze fase kunt u scripts uitvoeren door ze in de mappen onder
Volgende stappen
Problemen met cloud-init oplossen.