Rozšíření a funkce virtuálních počítačů pro Linux

Rozšíření virtuálních počítačů Azure jsou malé aplikace, které na virtuálních počítačích Azure umožňují provádět úlohy konfigurace a automatizace po nasazení. Pokud například virtuální počítač vyžaduje instalaci softwaru, antivirovou ochranu nebo schopnost spustit skript uvnitř, můžete použít rozšíření virtuálního počítače.

Rozšíření virtuálních počítačů Azure můžete spouštět pomocí Azure CLI, PowerShellu, šablon Azure Resource Manageru (šablon ARM) a webu Azure Portal. Rozšíření můžete sbalit s novým nasazením virtuálního počítače nebo je spustit v jakémkoli existujícím systému.

Tento článek obsahuje přehled rozšíření virtuálních počítačů Azure, předpoklady pro jejich použití a pokyny k jejich zjišťování, správě a odebírání. Tento článek obsahuje generalizované informace, protože je k dispozici mnoho rozšíření virtuálních počítačů. Každá z nich má potenciálně jedinečnou konfiguraci a vlastní dokumentaci.

Případy použití a ukázky

Každé rozšíření virtuálního počítače Azure má konkrétní případ použití. Příkladem může být:

  • Nakonfigurujte monitorování virtuálního počítače pomocí rozšíření Microsoft Monitoring Agent.
  • Nakonfigurujte monitorování infrastruktury Azure pomocí rozšíření Chef nebo Datadog .

Kromě rozšíření specifických pro procesy je rozšíření vlastních skriptů k dispozici pro virtuální počítače s Windows i Linuxem. Rozšíření vlastních skriptů pro Linux umožňuje spuštění libovolného skriptu Bash na virtuálním počítači. Vlastní skripty jsou užitečné pro návrh nasazení Azure, která vyžadují konfiguraci nad rámec toho, co nativní nástroje Azure můžou poskytnout.

Požadavky

Azure Linux Agent

Ke zpracování rozšíření na virtuálním počítači potřebujete nainstalovaného agenta Azure Linux. Některá jednotlivá rozšíření mají požadavky, například přístup k prostředkům nebo závislostem.

Agent Azure Linux spravuje interakce mezi virtuálním počítačem Azure a kontrolerem prostředků infrastruktury Azure. Agent zodpovídá za řadu funkčních aspektů nasazení a správy virtuálních počítačů Azure, včetně spuštěných rozšíření virtuálních počítačů.

Agent Azure Linux je předinstalovaný na imagích Azure Marketplace. Dá se také nainstalovat ručně v podporovaných operačních systémech.

Agent běží na několika operačních systémech. Architektura rozšíření má však omezení pro operační systémy, které rozšíření používají. Některá rozšíření nejsou podporována ve všech operačních systémech a můžou generovat kód chyby 51 (Nepodporovaný operační systém). Informace o podpoře najdete v dokumentaci k jednotlivým rozšířením.

Síťový přístup

Balíčky rozšíření se stáhnou z úložiště rozšíření Azure Storage. Nahrávání stavu rozšíření se publikuje do Služby Azure Storage.

Pokud používáte podporovanou verzi agenta Azure Linux, nemusíte v oblasti virtuálního počítače povolit přístup ke službě Azure Storage. Pomocí agenta můžete přesměrovat komunikaci do kontroleru prostředků infrastruktury Azure pro komunikaci agenta. Pokud používáte nepodporovanou verzi agenta, musíte povolit odchozí přístup ke službě Azure Storage v této oblasti z virtuálního počítače.

Důležité

Pokud jste pomocí brány firewall hosta zablokovali přístup k privátní IP adrese 168.63.129.16, rozšíření selžou, i když používáte podporovanou verzi agenta nebo jste nakonfigurovali odchozí přístup.

Agenti je možné použít pouze ke stažení balíčků rozšíření a hlášení stavu. Pokud například instalace rozšíření potřebuje stáhnout skript z GitHubu (rozšíření vlastních skriptů) nebo potřebuje přístup ke službě Azure Storage (Azure Backup), musíte otevřít další porty brány firewall nebo skupiny zabezpečení sítě (NSG). Různá rozšíření mají různé požadavky, protože se jedná o aplikace ve vlastním vlastnictví. U rozšíření, která vyžadují přístup ke službě Azure Storage, můžete povolit přístup pomocí značek služeb Azure NSG.

K přesměrování požadavků na provoz agenta má agent Azure Linux podporu proxy serveru. Tato podpora proxy serveru ale nepoužívá rozšíření. Pro práci s proxy serverem musíte nakonfigurovat jednotlivá rozšíření.

Zjišťování rozšíření virtuálních počítačů

Mnoho rozšíření virtuálních počítačů je k dispozici pro použití s virtuálními počítači Azure. Úplný seznam zobrazíte pomocí příkazu az vm extension image list. Následující příklad uvádí všechna dostupná rozšíření v umístění westus :

az vm extension image list --location westus --output table

Spouštění rozšíření virtuálních počítačů

Rozšíření virtuálních počítačů Azure běží na existujících virtuálních počítačích. To je užitečné v případě, že potřebujete provést změny konfigurace nebo obnovit připojení na již nasazeném virtuálním počítači. Rozšíření virtuálních počítačů je také možné sbalit s nasazeními šablon ARM. Pomocí rozšíření s šablonami ARM můžete nasazovat a konfigurovat virtuální počítače Azure bez zásahu po nasazení.

Ke spuštění rozšíření pro existující virtuální počítač můžete použít následující metody.

Azure CLI

Rozšíření virtuálních počítačů Azure můžete spouštět na existujícím virtuálním počítači pomocí příkazu az vm extension set . Následující příklad spustí rozšíření vlastních skriptů na virtuálním počítači s názvem myVM ve skupině prostředků myResourceGroup. Nahraďte ukázkový název skupiny prostředků, název virtuálního počítače a skript, který se má spustit (https://raw.githubusercontent.com/me/project/hello.sh) vlastními informacemi).

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"fileUris": ["https://raw.githubusercontent.com/me/project/hello.sh"],"commandToExecute": "./hello.sh"}'

Když se rozšíření spustí správně, bude výstup podobný následujícímu příkladu:

info:    Executing command vm extension set
+ Looking up the VM "myVM"
+ Installing extension "CustomScript", VM: "mvVM"
info:    vm extension set command OK

Azure PowerShell

Rozšíření virtuálních počítačů Azure můžete spouštět na existujícím virtuálním počítači pomocí příkazu Set-AzVMExtension . Následující příklad spustí rozšíření vlastních skriptů na virtuálním počítači s názvem myVM ve skupině prostředků myResourceGroup. Nahraďte ukázkový název skupiny prostředků, název virtuálního počítače a skript, který se má spustit (https://raw.githubusercontent.com/me/project/hello.sh) vlastními informacemi).

$Params = @{
    ResourceGroupName  = 'myResourceGroup'
    VMName             = 'myVM'
    Name               = 'CustomScript'
    Publisher          = 'Microsoft.Azure.Extensions'
    ExtensionType      = 'CustomScript'
    TypeHandlerVersion = '2.1'
    Settings          = @{fileUris = @('https://raw.githubusercontent.com/me/project/hello.sh'); commandToExecute = './hello.sh'}
}
Set-AzVMExtension @Params

Když se rozšíření spustí správně, bude výstup podobný následujícímu příkladu:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK

portál Azure

Rozšíření virtuálních počítačů můžete použít na existující virtuální počítač prostřednictvím webu Azure Portal. Vyberte virtuální počítač na portálu, vyberte Rozšíření a pak vyberte Přidat. V seznamu dostupných rozšíření zvolte požadované rozšíření a postupujte podle pokynů v průvodci.

Následující obrázek ukazuje instalaci rozšíření vlastních skriptů pro Linux z webu Azure Portal:

Screenshot of the dialog for installing the Custom Script extension for Linux.

Šablony Azure Resource Manageru

Rozšíření virtuálních počítačů můžete přidat do šablony ARM a spustit je s nasazením šablony. Když nasadíte rozšíření pomocí šablony, můžete vytvořit plně nakonfigurovaná nasazení Azure.

Následující JSON je například převzat z úplné šablony ARM, která nasadí sadu virtuálních počítačů s vyrovnáváním zatížení a databázi Azure SQL a pak na každý virtuální počítač nainstaluje aplikaci .NET Core. Rozšíření virtuálního počítače se postará o instalaci softwaru.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
    }
}

Další informace o vytváření šablon ARM najdete v tématu Virtuální počítače v šabloně Azure Resource Manageru.

Pomoc se zabezpečením dat rozšíření virtuálních počítačů

Když spustíte rozšíření virtuálního počítače, může být nutné zahrnout citlivé informace, jako jsou přihlašovací údaje, názvy účtů úložiště a přístupové klíče. Mnoho rozšíření virtuálních počítačů zahrnuje chráněnou konfiguraci, která šifruje data a dešifruje je pouze uvnitř cílového virtuálního počítače. Každé rozšíření má specifické chráněné schéma konfigurace a každé z nich je podrobně popsáno v dokumentaci specifické pro rozšíření.

Následující příklad ukazuje instanci rozšíření Custom Script pro Linux. Příkaz ke spuštění obsahuje sadu přihlašovacích údajů. V tomto příkladu není příkaz ke spuštění šifrovaný.

{
  "apiVersion": "2015-06-15",
  "type": "extensions",
  "name": "config-app",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ],
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

commandToExecute Přesunutí vlastnosti do protected konfigurace pomáhá zabezpečit spouštěcí řetězec, jak je znázorněno v následujícím příkladu:

{
  "apiVersion": "2015-06-15",
  "type": "extensions",
  "name": "config-app",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ]
    },
    "protectedSettings": {
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

Jak se aktualizují agenti a rozšíření

Agenti a rozšíření sdílejí stejný mechanismus automatické aktualizace.

Pokud je k dispozici aktualizace a jsou povoleny automatické aktualizace, aktualizace se nainstaluje na virtuální počítač až po změně rozšíření nebo po změně jiného modelu virtuálního počítače, například:

  • Datové disky
  • Rozšíření
  • Značky rozšíření
  • Kontejner diagnostiky spouštění
  • Tajné kódy hostovaného operačního systému
  • Velikost virtuálního počítače
  • Profil sítě

Vydavatelé zpřístupňují aktualizace oblastí v různých časech, takže je možné, že můžete mít virtuální počítače v různých oblastech v různých verzích.

Poznámka:

Některé aktualizace můžou vyžadovat další pravidla brány firewall. Viz Přístup k síti.

Aktualizace agenta

Agent virtuálního počítače s Linuxem obsahuje kód agenta zřizování a kód pro zpracování rozšíření v jednom balíčku. Nemůžou být odděleny.

Agenta zřizování můžete zakázat, když chcete zřídit v Azure pomocí cloud-init.

Podporované verze agentů můžou používat automatické aktualizace. Jediným kódem, který lze aktualizovat, je kód pro zpracování rozšíření, nikoli kód agenta zřizování. Kód agenta zřizování je kód spuštěný jednou.

Kód pro zpracování rozšíření zodpovídá za:

  • Komunikace s prostředky infrastruktury Azure
  • Zpracování operací rozšíření virtuálního počítače, jako jsou instalace, hlášení stavu, aktualizace jednotlivých rozšíření a odebrání rozšíření Aktualizace obsahují opravy zabezpečení, opravy chyb a vylepšení kódu pro zpracování rozšíření.

Po instalaci agenta se vytvoří nadřazený démon. Tento nadřazený objekt pak vytvoří podřízený proces, který se používá ke zpracování rozšíření. Pokud je pro agenta dostupná aktualizace, stáhne se. Nadřazený objekt zastaví podřízený proces, upgraduje ho a pak ho restartuje. Pokud dojde k potížím s aktualizací, nadřazený proces se vrátí zpět do předchozí podřízené verze.

Nadřazený proces nelze automaticky aktualizovat. Nadřazený objekt lze aktualizovat pouze aktualizací distribučního balíčku.

Pokud chcete zkontrolovat, jakou verzi používáte, zkontrolujte waagent následující:

waagent --version

Výstup se podobá následujícímu příkladu:

WALinuxAgent-2.2.45 running on <Linux Distro>
Python: 3.6.9
Goal state agent: 2.7.1.0

V předchozím příkladu výstupu je WALinuxAgent-2.2.45nadřazená (nebo nasazená verze balíčku) . Hodnota Goal state agent je verze automatické aktualizace.

Důrazně doporučujeme vždy povolit automatickou aktualizaci pro agenta: AutoUpdate.Enabled=y. Pokud automatickou aktualizaci nepovolíte, budete muset agenta aktualizovat ručně a nebudete dostávat chyby a opravy zabezpečení.

Aktualizace rozšíření

Pokud je k dispozici aktualizace rozšíření a jsou povoleny automatické aktualizace, po změně modelu virtuálního počítače se agent Azure Linux stáhne a upgraduje rozšíření.

Automatické aktualizace rozšíření jsou podverze nebo opravy hotfix. Když zřídíte rozšíření, můžete se odhlásit nebo odhlásit z dílčích aktualizací. Následující příklad ukazuje, jak automaticky upgradovat podverze v šabloně ARM pomocí "autoUpgradeMinorVersion": true,:

    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },

Pokud chcete získat nejnovější opravy chyb podverze, důrazně doporučujeme vždy vybrat automatickou aktualizaci v nasazeních rozšíření. Nemůžete se odhlásit z aktualizací oprav hotfix, které provádějí opravy chyb zabezpečení nebo klíče.

Pokud zakážete automatické aktualizace nebo potřebujete upgradovat hlavní verzi, použijte az vm extension set nebo Set-AzVMExtension a zadejte cílovou verzi.

Identifikace aktualizací rozšíření

Zjištění, jestli je rozšíření nastavené pomocí příkazu autoUpgradeMinorVersion na virtuálním počítači

Z modelu virtuálního počítače můžete vidět, jestli bylo rozšíření zřízeno pomocí autoUpgradeMinorVersion. Pokud to chcete zkontrolovat, použijte příkaz az vm show a zadejte název skupiny prostředků a virtuálního počítače následujícím způsobem:

az vm show --resource-group myResourceGroup --name myVM

Následující příklad výstupu ukazuje, že autoUpgradeMinorVersion je nastaven na true:

  "resources": [
    {
      "autoUpgradeMinorVersion": true,
      "forceUpdateTag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/customScript",

Zjištění, kdy došlo k události autoUpgradeMinorVersion

Pokud chcete zjistit, kdy došlo k aktualizaci rozšíření, zkontrolujte protokoly agenta na virtuálním počítači na adrese /var/log/waagent.log.

V následujícím příkladu byl Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025 virtuální počítač nainstalovaný. Byla k dispozici Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027oprava hotfix .

INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Expected handler state: enabled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Decide which version to use
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Use version: 2.3.9027
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Current handler state is: NotInstalled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Download extension package
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Unpack extension package
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Download, message=Download succeeded
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Initialize extension directory
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update settings file: 0.settings
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Disable extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Launch command:diagnostic.py -disable
...
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Disable, message=Launch command succeeded: diagnostic.py -disable
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Launch command:diagnostic.py -update
2017/08/14 20:21:57 LinuxAzureDiagnostic started to handle.

Oprávnění agenta

Aby mohl agent provádět své úlohy, musí běžet jako kořen.

Řešení potíží s rozšířeními virtuálních počítačů

Každé rozšíření virtuálního počítače může mít konkrétní kroky pro řešení potíží. Když například použijete rozšíření vlastních skriptů, najdete podrobnosti o spuštění skriptu místně na virtuálním počítači, na kterém se rozšíření spustilo.

Následující akce řešení potíží platí pro všechna rozšíření virtuálních počítačů:

  • Pokud chcete zkontrolovat protokol agenta Azure Linuxu, podívejte se na aktivitu při zřizování vašeho rozšíření v /var/log/waagent.log.

  • Další podrobnosti najdete v protokolech rozšíření v souboru /var/log/azure/<extensionName>.

  • Informace o kódech chyb, známých problémech a dalších informacích specifických pro rozšíření najdete v oddílech pro řešení potíží v dokumentaci specifické pro rozšíření.

  • Podívejte se na systémové protokoly. Zkontrolujte další operace, které mohly kolidovat s rozšířením, například dlouho běžící instalaci jiné aplikace, která vyžadovala výhradní přístup ke správci balíčků.

Běžné důvody selhání rozšíření

  • Rozšíření mají 20 minut na spuštění. (Výjimky jsou vlastní skripty a Chef, které mají 90 minut.) Pokud vaše nasazení tentokrát překročí, označí se jako časový limit. Příčinou toho můžou být virtuální počítače s nízkými prostředky nebo jiné konfigurace virtuálních počítačů nebo spouštěcí úlohy, které spotřebovávají velké množství prostředků, zatímco se rozšíření pokouší zřídit.

  • Minimální požadavky nejsou splněny. Některá rozšíření mají závislosti na skladových posílacích virtuálních počítačů, jako jsou image PROSTŘEDÍ HPC. Rozšíření můžou mít určité požadavky na přístup k síti, například komunikaci se službou Azure Storage nebo veřejnými službami. Další příklady můžou být přístup k úložištím balíčků, nedostatek místa na disku nebo omezení zabezpečení.

  • Přístup správce balíčků je výhradní. V některých případech může dojít ke konfliktu dlouhotrvající konfigurace virtuálního počítače a instalace rozšíření, protože oba potřebují výhradní přístup ke správci balíčků.

Zobrazení stavu rozšíření

Po spuštění rozšíření virtuálního počítače na virtuálním počítači pomocí příkazu az vm get-instance-view vraťte stav rozšíření následujícím způsobem:

az vm get-instance-view \
    --resource-group myResourceGroup \
    --name myVM \
    --query "instanceView.extensions"

Výstup se podobá následujícímu příkladu:

  {
    "name": "customScript",
    "statuses": [
      {
        "code": "ProvisioningState/failed/0",
        "displayStatus": "Provisioning failed",
        "level": "Error",
        "message": "Enable failed: failed to execute command: command terminated with exit status=127\n[stdout]\n\n[stderr]\n/bin/sh: 1: ech: not found\n",
        "time": null
      }
    ],
    "substatuses": null,
    "type": "Microsoft.Azure.Extensions.CustomScript",
    "typeHandlerVersion": "2.1.6"
  }

Stav spuštění rozšíření najdete také na webu Azure Portal. Vyberte virtuální počítač, vyberte Rozšíření a pak vyberte požadované rozšíření.

Opětovné spuštění rozšíření virtuálního počítače

Může docházet k případům, kdy je potřeba znovu spustit rozšíření virtuálního počítače. Rozšíření můžete znovu spustit tak, že ho odeberete a pak rozšíření znovu spustíte metodou spuštění podle vašeho výběru.

Pokud chcete rozšíření odebrat, použijte příkaz az vm extension delete následujícím způsobem:

az vm extension delete \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name customScript

Rozšíření můžete také odebrat na webu Azure Portal:

  1. Vyberte virtuální počítač.
  2. Vyberte Rozšíření.
  3. Vyberte rozšíření.
  4. Vyberte Odinstalovat.

Referenční informace k běžným rozšířením virtuálních počítačů

Název rozšíření Popis
Rozšíření vlastních skriptů pro Linux Spouštění skriptů na virtuálním počítači Azure
Rozšíření VMAccess Znovu získejte přístup k virtuálnímu počítači Azure. Můžete ho také použít ke správě uživatelů a přihlašovacích údajů.
Rozšíření Azure Diagnostics Správa diagnostiky Azure

Další kroky

Další informace o rozšířeních virtuálních počítačů najdete v tématu Rozšíření a funkce virtuálních počítačů Azure.