Udostępnij za pośrednictwem


Wdrażanie niestandardowego rozszerzenia skryptu na maszynach wirtualnych uruchomionych na urządzeniu Azure Stack Edge Pro

DOTYCZY: Tak dla jednostki SKU procesora GPU ProAzure Stack Edge Pro — GPUTak dla jednostki SKU Pro 2Azure Stack Edge Pro 2Tak dla jednostki SKU Pro RAzure Stack Edge Pro R Azure Stack Edge Mini RTak dla jednostki SKU Mini R

Rozszerzenie niestandardowego skryptu pobiera i uruchamia skrypty lub polecenia na maszynach wirtualnych uruchomionych na urządzeniach Usługi Azure Stack Edge Pro. W tym artykule opisano sposób instalowania i uruchamiania rozszerzenia niestandardowego skryptu przy użyciu szablonu usługi Azure Resource Manager.

Informacje o rozszerzeniu niestandardowego skryptu

Rozszerzenie niestandardowego skryptu jest przydatne w przypadku konfiguracji po wdrożeniu, instalacji oprogramowania lub dowolnego innego zadania konfiguracji/zarządzania. Skrypty można pobrać z usługi Azure Storage lub innej dostępnej lokalizacji internetowej albo udostępnić skrypty lub polecenia środowisku uruchomieniowemu rozszerzenia.

Rozszerzenie niestandardowego skryptu integruje się z szablonami usługi Azure Resource Manager. Można go również uruchomić przy użyciu interfejsu wiersza polecenia platformy Azure, programu PowerShell lub interfejsu API REST usługi Azure Virtual Machines.

System operacyjny dla rozszerzenia niestandardowego skryptu

Obsługiwany system operacyjny dla rozszerzenia niestandardowego skryptu w systemie Windows

Rozszerzenie niestandardowego skryptu dla systemu Windows zostanie uruchomione w następujących systemach operacyjnych. Inne wersje mogą działać, ale nie zostały przetestowane w firmie na maszynach wirtualnych uruchomionych na urządzeniach Azure Stack Edge Pro.

Dystrybucja Wersja
Windows Server 2019 Podstawowe funkcje
Windows Server 2016 Podstawowe funkcje

Obsługiwany system operacyjny dla rozszerzenia niestandardowego skryptu w systemie Linux

Rozszerzenie niestandardowego skryptu dla systemu Linux zostanie uruchomione w następujących systemach operacyjnych. Inne wersje mogą działać, ale nie zostały przetestowane w firmie na maszynach wirtualnych uruchomionych na urządzeniach Azure Stack Edge Pro.

Dystrybucja Wersja
Linux Ubuntu: 18.04 LTS
Linux: Red Hat Enterprise Linux 7.4, 7.5, 7.7

Wymagania wstępne

  1. Pobierz szablony maszyn wirtualnych i pliki parametrów na komputer kliencki. Rozpakuj pobieranie do katalogu, którego będziesz używać jako katalogu roboczego.

  2. Na urządzeniu powinna zostać utworzona i wdrożona maszyna wirtualna. Aby utworzyć maszyny wirtualne, wykonaj wszystkie kroki opisane w artykule Wdrażanie maszyny wirtualnej w usłudze Azure Stack Edge Pro przy użyciu szablonów.

    Jeśli musisz pobrać skrypt, taki jak z usługi GitHub lub Azure Storage zewnętrznie, podczas konfigurowania sieci obliczeniowej, włącz port połączony z Internetem na potrzeby obliczeń. Umożliwia to pobranie skryptu.

    W poniższym przykładzie port 2 był połączony z Internetem i był używany do włączania sieci obliczeniowej. Jeśli zidentyfikowano, że platforma Kubernetes nie jest potrzebna we wcześniejszym kroku, możesz pominąć adres IP węzła Kubernetes i przypisanie adresu IP usługi zewnętrznej.

    Zrzut ekranu przedstawiający okienko Obliczenia dla urządzenia Azure Stack Edge. Ustawienia obliczeniowe portu 2 są wyróżnione.

Instalowanie rozszerzenia niestandardowego skryptu

W zależności od systemu operacyjnego maszyny wirtualnej można zainstalować rozszerzenie niestandardowego skryptu dla systemu Windows lub Linux.

Rozszerzenie niestandardowego skryptu dla systemu Windows

Aby wdrożyć rozszerzenie niestandardowego skryptu dla systemu Windows dla maszyny wirtualnej uruchomionej na urządzeniu, zmodyfikuj addCSExtWindowsVM.parameters.json plik parametrów, a następnie wdróż szablon addCSextensiontoVM.json.

Edytowanie pliku parametrów

Plik addCSExtWindowsVM.parameters.json przyjmuje następujące parametry:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "value": "<Name of VM>" 
        },
        "extensionName": {
            "value": "<Name of extension>" 
        },
        "publisher": {
            "value": "Microsoft.Compute" 
        },
        "type": {
            "value": "CustomScriptExtension" 
        },
        "typeHandlerVersion": {
            "value": "1.10" 
        },
        "settings": {
            "value": {
                "commandToExecute" : "<Command to execute>"
            }
        }
    }
}

Podaj nazwę maszyny wirtualnej, nazwę rozszerzenia i polecenie, które chcesz wykonać.

Oto przykładowy plik parametrów, który został użyty w tym artykule.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "value": "VM5" 
        },
        "extensionName": {
            "value": "CustomScriptExtension" 
        },
        "publisher": {
            "value": "Microsoft.Compute" 
        },
        "type": {
            "value": "CustomScriptExtension" 
        },
        "typeHandlerVersion": {
            "value": "1.10" 
        },
        "settings": {
            "value": {
                "commandToExecute" : "md C:\\Users\\Public\\Documents\\test"
            }
        }
    }
}

Wdrażanie szablonu

Wdróż szablon addCSextensiontoVM.json. Ten szablon wdraża rozszerzenie na istniejącej maszynie wirtualnej. Uruchom następujące polecenie:

$templateFile = "<Path to addCSExtensiontoVM.json file>"
$templateParameterFile = "<Path to addCSExtWindowsVM.parameters.json file>"
$RGName = "<Resource group name>"
New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "<Deployment name>"

Uwaga

Wdrożenie rozszerzenia jest długotrwałym zadaniem i trwa około 10 minut.

Oto przykładowe dane wyjściowe:

PS C:\WINDOWS\system32> $templateFile = "C:\12-09-2020\ExtensionTemplates\addCSExtensiontoVM.json"
PS C:\WINDOWS\system32> $templateParameterFile = "C:\12-09-2020\ExtensionTemplates\addCSExtWindowsVM.parameters.json"
PS C:\WINDOWS\system32> $RGName = "myasegpuvm1"
PS C:\WINDOWS\system32> New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "deployment7"

DeploymentName          : deployment7
ResourceGroupName       : myasegpuvm1
ProvisioningState       : Succeeded
Timestamp               : 12/17/2020 10:07:44 PM
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          vmName           String                     VM5
                          extensionName    String                     CustomScriptExtension
                          publisher        String                     Microsoft.Compute
                          type             String                     CustomScriptExtension
                          typeHandlerVersion  String                     1.10
                          settings         Object                     {
                            "commandToExecute": "md C:\\Users\\Public\\Documents\\test"
                          }

Outputs                 :
DeploymentDebugLogLevel :

PS C:\WINDOWS\system32>

Śledzenie wdrożenia

Aby sprawdzić stan wdrożenia rozszerzeń dla danej maszyny wirtualnej, uruchom następujące polecenie:

Get-AzureRmVMExtension -ResourceGroupName <Name of resource group> -VMName <Name of VM> -Name <Name of the extension>

Oto przykładowe dane wyjściowe:

PS C:\WINDOWS\system32> Get-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM5 -Name CustomScriptExtension

ResourceGroupName       : myasegpuvm1
VMName                  : VM5
Name                    : CustomScriptExtension
Location                : dbelocal
Etag                    : null
Publisher               : Microsoft.Compute
ExtensionType           : CustomScriptExtension
TypeHandlerVersion      : 1.10
Id                      : /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/myasegpuvm1/providers/Microsoft.Compute/virtualMachines/VM5/extensions/CustomScriptExtension
PublicSettings          : {
                            "commandToExecute": "md C:\\Users\\Public\\Documents\\test"
                          }
ProtectedSettings       :
ProvisioningState       : Creating
Statuses                :
SubStatuses             :
AutoUpgradeMinorVersion : True
ForceUpdateTag          :

PS C:\WINDOWS\system32>

Uwaga

Po zakończeniu ProvisioningState wdrażania zmiany w pliku Succeeded.

Dane wyjściowe rozszerzenia są rejestrowane w plikach, które znajdują się w poniższym folderze na docelowej maszynie wirtualnej.

C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension

Określone pliki są pobierane do następującego folderu na docelowej maszynie wirtualnej.

C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>

gdzie n jest liczbą całkowitą dziesiętną, która może ulec zmianie między wykonaniami rozszerzenia. Wartość 1.* jest zgodna z rzeczywistą, bieżącą typeHandlerVersion wartością rozszerzenia. Na przykład rzeczywisty katalog w tym wystąpieniu to C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0.

W tym przypadku polecenie do wykonania dla rozszerzenia niestandardowego to: md C:\\Users\\Public\\Documents\\test. Po pomyślnym zainstalowaniu rozszerzenia można sprawdzić, czy katalog został utworzony na maszynie wirtualnej w określonej ścieżce w poleceniu .

Niestandardowe rozszerzenie skryptu dla systemu Linux

Aby wdrożyć rozszerzenie niestandardowego skryptu dla systemu Windows dla maszyny wirtualnej uruchomionej na urządzeniu, zmodyfikuj addCSExtLinuxVM.parameters.json plik parametrów, a następnie wdróż szablon addCSExtensiontoVM.json.

Edytowanie pliku parametrów

Plik addCSExtLinuxVM.parameters.json przyjmuje następujące parametry:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "value": "<Name of your VM>" 
        },
        "extensionName": {
            "value": "<Name of your extension>" 
        },
        "publisher": {
            "value": "Microsoft.Azure.Extensions" 
        },
        "type": {
            "value": "CustomScript" 
        },
        "typeHandlerVersion": {
            "value": "2.0" 
        },
        "settings": {
            "value": {
                "commandToExecute" : "<Command to execute>"
            }
        }
    }
}

Podaj nazwę maszyny wirtualnej, nazwę rozszerzenia i polecenie, które chcesz wykonać.

Oto przykładowy plik parametrów, który został użyty w tym artykule:

$templateFile = "<Path to addCSExtensionToVM.json file>"
$templateParameterFile = "<Path to addCSExtLinuxVM.parameters.json file>"
$RGName = "<Resource group name>"
New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "<Deployment name>"

Uwaga

Wdrożenie rozszerzenia jest długotrwałym zadaniem i trwa około 10 minut.

Oto przykładowe dane wyjściowe:

PS C:\WINDOWS\system32> $templateFile = "C:\12-09-2020\ExtensionTemplates\addCSExtensionToVM.json"
PS C:\WINDOWS\system32> $templateParameterFile = "C:\12-09-2020\ExtensionTemplates\addCSExtLinuxVM.parameters.json"
PS C:\WINDOWS\system32> $RGName = "myasegpuvm1"
PS C:\WINDOWS\system32> New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "deployment99"

DeploymentName          : deployment99
ResourceGroupName       : myasegpuvm1
ProvisioningState       : Succeeded
Timestamp               : 12/18/2020 1:55:23 AM
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          vmName           String                     VM6
                          extensionName    String                     LinuxCustomScriptExtension
                          publisher        String                     Microsoft.Azure.Extensions
                          type             String                     CustomScript
                          typeHandlerVersion  String                     2.0
                          settings         Object                     {
                            "commandToExecute": "sudo echo 'some text' >> /home/Administrator/file2.txt"
                          }

Outputs                 :
DeploymentDebugLogLevel :

PS C:\WINDOWS\system32>

Element commandToExecute został ustawiony tak, aby utworzyć plik file2.txt w /home/Administrator katalogu, a zawartość pliku to some text. W takim przypadku możesz sprawdzić, czy plik został utworzony w określonej ścieżce.

Administrator@VM6:~$ dir
file2.txt
Administrator@VM6:~$ cat file2.txt
some text
Administrator@VM6:

Śledzenie stanu wdrożenia

Wdrożenie szablonu to długotrwałe zadanie. Aby sprawdzić stan wdrożenia rozszerzeń dla danej maszyny wirtualnej, otwórz kolejną sesję programu PowerShell (uruchom jako administrator). Uruchom następujące polecenie:

Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName <VM Name> -Name <Extension Name>

Oto przykładowe dane wyjściowe:

PS C:\WINDOWS\system32> Get-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM5 -Name CustomScriptExtension

ResourceGroupName       : myasegpuvm1
VMName                  : VM5
Name                    : CustomScriptExtension
Location                : dbelocal
Etag                    : null
Publisher               : Microsoft.Compute
ExtensionType           : CustomScriptExtension
TypeHandlerVersion      : 1.10
Id                      : /subscriptions/947b3cfd-7a1b-4a90-7cc5-e52caf221332/resourceGroups/myasegpuvm1/providers/Microsoft.Compute/virtualMachines/VM5/extensions/CustomScriptExtension
PublicSettings          : {
                            "commandToExecute": "md C:\\Users\\Public\\Documents\\test"
                          }
ProtectedSettings       :
ProvisioningState       : Creating
Statuses                :
SubStatuses             :
AutoUpgradeMinorVersion : True
ForceUpdateTag          :

PS C:\WINDOWS\system32>

Uwaga

Po zakończeniu ProvisioningState wdrażania zmiany w pliku Succeeded.

Dane wyjściowe wykonywania rozszerzenia są rejestrowane w następującym pliku: /var/lib/waagent/custom-script/download/0/.

Usuń rozszerzenie niestandardowego skryptu

Aby usunąć rozszerzenie niestandardowego skryptu, użyj następującego polecenia:

Remove-AzureRmVMExtension -ResourceGroupName <Resource group name> -VMName <VM name> -Name <Extension name>

Oto przykładowe dane wyjściowe:

PS C:\WINDOWS\system32> Remove-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM6 -Name LinuxCustomScriptExtension
Virtual machine extension removal operation
This cmdlet will remove the specified virtual machine extension. Do you want to continue?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Yes
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK

Następne kroki

Polecenia cmdlet usługi Azure Resource Manager