Vlastní data na virtuálních počítačích Azure

Platí pro: ✔️ virtuální počítače s Linuxem ✔️ virtuální počítače s Windows ✔️ flexibilní škálovací sady

Při zřizování možná budete muset do virtuálního počítače Microsoft Azure vložit skript nebo jiná metadata. Azure tento scénář podporuje prostřednictvím funkce označované jako vlastní data.

Vlastní data jsou k dispozici virtuálnímu počítači během prvního spuštění nebo instalace, což se označuje jako zřizování. Zřizování je proces, kdy jsou virtuálnímu počítači k dispozici parametry vytvoření virtuálního počítače (například název hostitele, uživatelské jméno, heslo, certifikáty, vlastní data a klíče). Agent zřizování, jako je cloud-init, tyto parametry zpracuje.

Note

Azure také nabízí samostatnou funkci uživatelských dat. Na rozdíl od vlastních dat se uživatelská data dají načíst ze služby Azure Instance Metadata Service (IMDS), jsou trvalá po celou dobu života virtuálního počítače a je možné je aktualizovat bez zastavení nebo obnovení virtuálního počítače. Uživatelská data použijte, když potřebujete přístup nebo aktualizace po zřízení; vlastní data použijte, když potřebujete datovou zátěž zpracovanou agentem zřizování při prvním spuštění.

Předání vlastních dat virtuálnímu počítači

Pokud chcete použít vlastní data, musíte před předáním dat do rozhraní API kódovat obsah base64– pokud nepoužíváte nástroj rozhraní příkazového řádku, který provede převod za vás, například Azure CLI. Velikost nesmí překročit 64 kB.

V rozhraní příkazového řádku můžete vlastní data předat jako soubor, jak ukazuje následující příklad. Soubor se převede na Base64.

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image Ubuntu2204 \
  --custom-data cloud-init.txt \
  --generate-ssh-keys

V Azure Resource Manageru je funkce Base64:

"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-07-01",
"location": "[parameters('location')]",
"dependsOn": [
..],
"variables": {
        "customDataBase64": "[base64(parameters('stringData'))]"
    },
"properties": {
..
    "osProfile": {
        "computerName": "[parameters('virtualMachineName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]",
        "customData": "[variables('customDataBase64')]"
        },

Zpracování vlastních dat

Agenti zřizování nainstalovaní na virtuálních počítačích zpracovávají komunikaci s platformou a umísťují data do systému souborů.

Windows

Vlastní data se umístí do %SystemDrive%\AzureData\CustomData.bin jako binární soubor, ale nezpracovávají se. Chcete-li tento soubor zpracovat, vytvořte vlastní image a napište kód, který čte CustomData.bin.

Složka %SystemDrive%\AzureData je při zřizování zabezpečena tak, že úplné řízení mají pouze NT AUTHORITY\SYSTEM a BUILTIN\Administrators, a CustomData.bin tato oprávnění dědí. Pokud kopírujete CustomData.bin jinde pro zpracování, nastavte oprávnění pro cíl explicitně, protože jeho oprávnění se se souborem nepřenesou.

Linux

V operačních systémech Linux se vlastní data předávají virtuálnímu počítači prostřednictvím ovf-env.xml souboru. Tento soubor se během zřizování zkopíruje do adresáře /var/lib/waagent . Novější verze linuxového agenta zkopírují data zakódovaná pomocí Base64 do složky /var/lib/waagent/CustomData pro usnadnění.

Azure v současné době podporuje dva agenty zřizování:

  • Agent pro Linux. Ve výchozím nastavení agent nezpracovává vlastní data. Potřebujete vytvořit vlastní image s povolenými daty. Relevantní nastavení :

    • Provisioning.DecodeCustomData
    • Provisioning.ExecuteCustomData

    Když povolíte vlastní data a spustíte skript, virtuální počítač nenahlásí úspěšné zřízení virtuálního počítače, dokud se skript nedokončí. Pokud skript překročí celkový časový limit zřizování virtuálního počítače 40 minut, vytvoření virtuálního počítače selže.

    Pokud se skript nepodaří spustit nebo dojde k chybám během provádění, nejedná se o závažnou chybu zřizování. Musíte vytvořit cestu oznámení, která vás upozorní na stav dokončení skriptu.

    Pokud chcete řešit potíže se spouštěním vlastních dat, projděte si /var/log/waagent.log.

  • cloud-init. Ve výchozím nastavení tento agent zpracovává vlastní data. Přijímá více formátů vlastních dat, jako je konfigurace cloud-init a skripty.

    Podobně jako u agenta Linux, pokud při provádění zpracování konfigurace nebo skriptů dojde k chybám, když cloud-init zpracovává vlastní data, nejedná se o kritické selhání zřizování. Musíte vytvořit cestu oznámení, která vás upozorní na stav dokončení skriptu.

    Na rozdíl od agenta pro Linux ale cloud-init nečeká na dokončení konfigurace vlastních dat zadaných uživatelem, než platformě oznámí, že je virtuální počítač připravený. Další informace o cloud-init v Azure, včetně řešení potíží, najdete v tématu podpora cloud-init pro virtuální počítače v Azure.

časté otázky

Můžu po vytvoření virtuálního počítače aktualizovat vlastní data?

U jednotlivých virtuálních počítačů nemůžete aktualizovat vlastní data v modelu virtuálního počítače. U škálovacích sad virtuálních počítačů ale můžete aktualizovat vlastní data. Další informace naleznete v tématu Úprava škálovací sady. Při aktualizaci vlastních dat v modelu pro škálovací sadu virtuálních počítačů:

  • Stávající instance ve škálovací sadě neobdrží aktualizovaná vlastní data, dokud nebudou aktualizovány na nejnovější model a znovu vytvořeny z image.
  • Nové instance přijímají nová vlastní data.

Můžu do vlastních dat umístit citlivé hodnoty?

Doporučujeme neukládat citlivá data do vlastních údajů. Další informace najdete v tématu Osvědčené postupy zabezpečení a šifrování dat Azure.

Jsou vlastní data dostupná v IMDS?

Ne. Vlastní data nejsou prostřednictvím služby Azure Instance Metadata Service (IMDS) dostupná. Pokud potřebujete po zřízení načíst datovou část z virtuálního počítače nebo ji aktualizovat bez zastavení nebo opětovného nastavení virtuálního počítače, použijte místo toho funkci dat uživatele . Podrobnosti o čtení uživatelských dat z IMDS najdete v tématu Získání uživatelských dat.