Cloud-init podrobně
Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️
Pokud chcete získat další informace o cloud-init nebo řešení potíží na hlubší úrovni, musíte pochopit, jak funguje. Tento dokument zvýrazňuje důležité části a vysvětluje specifika Azure.
Pokud je cloud-init součástí generalizované image a z této image se vytvoří virtuální počítač, zpracuje konfigurace a během počátečního spuštění prochází pěti fázemi. Tyto fáze ukazují, v jakém okamžiku cloud-init používá jeho konfigurace.
Principy konfigurace Cloud-Init
Konfigurace virtuálního počítače tak, aby běžela na platformě, používá cloud-init k použití více konfigurací. Hlavní konfigurace, se kterými pracujete, je User data
(customData), která podporuje více formátů. Další informace naleznete v dokumentaci k uživatelským datovým formátům a cloud-init 21.2. Máte také možnost přidávat a spouštět skripty (/var/lib/cloud/scripts) pro další konfiguraci.
Předkonfigurované image Azure Marketplace
Některé konfigurace jsou už pečené do imagí Azure Marketplace, které jsou součástí cloud-init.
Cloudový zdroj dat – cloud-init obsahuje kód, který může pracovat s cloudovými platformami, tyto kódy se nazývají "zdroje dat". Když se virtuální počítač vytvoří z image cloud-init v Azure, cloud-init načte zdroj dat Azure, který komunikuje s koncovými body metadat Azure, aby získal konkrétní konfiguraci virtuálního počítače.
Konfigurace modulu runtime (/run/cloud-init)
Konfigurace image (/etc/cloud), například
/etc/cloud/cloud.cfg
,/etc/cloud/cloud.cfg.d/*.cfg
. Příkladem použití této konfigurace v Azure je běžné, že image operačního systému Linux s cloud-init mají direktivu zdroje dat Azure, která říká cloud-init, jaký zdroj dat by měl používat, tato konfigurace šetří čas cloud-init:sudo cat /etc/cloud/cloud.cfg.d/90_dpkg.cfg
# to update this file, run dpkg-reconfigure cloud-init datasource_list: [ Azure ]
Fáze spouštění cloud-init (konfigurace zpracování)
Při zřizování virtuálních počítačů pomocí cloud-init existuje pět fází spouštění konfigurace. Výstup z těchto fází je viditelný v protokolech.
Fáze generátoru: Spustí se systémový generátor cloud-init a určí, že cloud-init by měl být zahrnut do cílů spouštění, a pokud ano, umožní cloud-init.
Místní fáze cloud-init: Cloud-init hledá místní zdroj dat "Azure", který umožňuje cloud-init pro rozhraní s Azure, a použije konfiguraci sítě, včetně náhradní lokality.
Inicializační fáze cloud-init (síť): Sítě by měly být online a měly by se vygenerovat informace o síťové kartě a směrovací tabulce. V této fázi se spustí moduly uvedené v
cloud_init_modules
/etc/cloud/cloud.cfg
této fázi. Virtuální počítač v Azure se připojí, dočasný disk se naformátuje, název hostitele se nastaví spolu s dalšími úlohami.Tady jsou některé z těchto:
cloud_init_modules
- migrator - seed_random - bootcmd - write-files - growpart - resizefs - disk_setup - mounts - set_hostname - update_hostname - ssh
Po této fázi cloud-init odešle signál do platformy Azure, že se virtuální počítač úspěšně zřídil. Některé moduly pravděpodobně selhaly, ale ne všechny chyby modulů automaticky způsobí selhání zřizování.
Fáze konfigurace cloud-init: V této fázi se moduly
cloud_config_modules
definované a uvedené v/etc/cloud/cloud
.cfg spustí.Konečná fáze cloud-init: V této závěrečné fázi se moduly v
cloud_final_modules
seznamu , uvedené v/etc/cloud/cloud.cfg
, spouští. Tady moduly, které je potřeba spustit pozdě ve spuštění procesu spouštění, jako jsou instalace balíčků a spouštění skriptů atd.- Během této fáze můžete skripty spustit tak, že je umístíte do adresářů
/var/lib/cloud/scripts
pod:per-boot
– skripty v tomto adresáři, spouštěné při každém restartováníper-instance
– skripty v tomto adresáři se spustí při prvním spuštění nové instance.per-once
– skripty v tomto adresáři se spouštějí jenom jednou.
- Během této fáze můžete skripty spustit tak, že je umístíte do adresářů