Cloud-init: uitgebreide informatie

Van toepassing op: ✔️ Virtuele Linux-heavy_check_mark: flexibele schaalsets

Als u meer wilt weten over cloud-init of hoe u dit op een dieper niveau kunt oplossen, moet u begrijpen hoe het werkt. In dit document worden de belangrijke onderdelen belicht en worden de specifieke Azure-gegevens uitgelegd.

Wanneer cloud-init is opgenomen in een gegeneraliseerde installatiebestand en er een VM wordt gemaakt op basis van die installatie afbeelding, worden configuraties verwerkt en worden tijdens de eerste keer opstarten vijf fasen doorlopen. Deze fasen zijn van belang, zoals u ziet op welk punt cloud-init configuraties gaat toepassen.

Inzicht Cloud-Init configuratie

Als u een VM configureert voor uitvoering op een platform, betekent dit dat cloud-init meerdere configuraties moet toepassen. De belangrijkste configuraties waarmee u gaat communiceren, zijn (customData), die ondersteuning biedt voor meerdere User data indelingen. Zie User-Data Formats & cloud-init 21.2 documentation (Documentatie over 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 aanvullende configuratie. Hieronder wordt dit uitvoeriger besproken.

Sommige configuraties zijn al standaard in Azure Marketplace afbeeldingen die bij cloud-init worden gebruikt, zoals:

  1. Cloudgegevensbron: cloud-init bevat code die kan communiceren met cloudplatforms. Deze worden gegevensbron genoemd. Wanneer een VM wordt gemaakt op basis van een cloud-init-installatie afbeelding in Azure,laadt cloud-init de Azure-gegevensbron, die communiceert met de Azure-metagegevens-eindpunten om de VM-specifieke configuratie op te halen.

  2. Runtime-configuratie (/run/cloud-init)

  3. Configuratie van afbeeldingen (/etc/cloud), zoals /etc/cloud/cloud.cfg , /etc/cloud/cloud.cfg.d/*.cfg . Een voorbeeld van waar dit wordt gebruikt in Azure, is het gebruikelijk dat de Linux-besturingssysteemafbeeldingen met cloud-init een Azure-gegevensbron-richtlijn hebben, die cloud-init vertelt welke gegevensbron moet worden gebruikt. Dit bespaart cloud-init-tijd:

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

Cloud-init-opstartfasen (verwerkingsconfiguratie)

Bij het inrichten met cloud-init zijn er 5 opstartfasen, die configuratie verwerken en worden weergegeven in de logboeken.

  1. Generatorfase:de cloud-init systemd generator wordt gestart en bepaalt dat cloud-init moet worden opgenomen in de opstartdoelen, en zo ja, dan wordt cloud-init mogelijk.

  2. Lokale cloud-init-fase:Hier wordt in cloud-init naar de lokale Azure-gegevensbron ge zoek, waarmee cloud-init kan worden gebruikt in een interface met Azure en een netwerkconfiguratie wordt toegepast, inclusief terugval.

  3. Cloud-init init-fase (netwerk): Netwerken moeten online zijn en de NIC en routetabelgegevens moeten worden gegenereerd. In deze fase worden de modules in cloud_init_modules /etc/cloud/cloud.cfg uitgevoerd. De VM in Azure wordt bevestigd, de kortstondige schijf wordt geformatteerd, de hostnaam wordt ingesteld, samen met andere taken.

    Dit zijn enkele van de cloud_init_modules :

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

    Na deze fase geeft cloud-init aan het Azure-platform aan dat de VM is ingericht. Sommige modules zijn mogelijk mislukt, maar niet alle modulefouten leiden tot een inrichtingsfout.

  4. Cloud-init-configuratiefase:in deze fase worden de modules in gedefinieerd en vermeld cloud_config_modules in /etc/cloud/cloud.cfg uitgevoerd.

  5. Cloud-init-laatstefase: In deze laatste fase worden de modules in uitgevoerd die worden vermeld cloud_final_modules in /etc/cloud/cloud.cfg. Hier moeten modules die laat in het opstartproces moeten worden uitgevoerd, zoals pakketinstallaties en het uitvoeren van scripts, enzovoort.

    • Tijdens deze fase kunt u scripts uitvoeren door ze in de directories onder te /var/lib/cloud/scripts plaatsen:
    • per-boot -scripts in deze map, worden uitgevoerd bij elke keer opnieuw opstarten
    • per-instance - scripts in deze map worden uitgevoerd wanneer een nieuw exemplaar voor het eerst wordt opgestart
    • per-once - Scripts in deze map worden slechts één keer uitgevoerd

Volgende stappen

Problemen met cloud-init oplossen.