Dela via


Distribuera anpassat skripttillägg på virtuella datorer som körs på din Azure Stack Edge Pro-enhet

GÄLLER FÖR: Ja för Pro GPU SKUAzure Stack Edge Pro – GPUJa för Pro 2 SKUAzure Stack Edge Pro 2Ja för Pro R SKUAzure Stack Edge Pro RJa för Mini R SKUAzure Stack Edge Mini R

Tillägget för anpassat skript laddar ned och kör skript eller kommandon på virtuella datorer som körs på dina Azure Stack Edge Pro-enheter. Den här artikeln beskriver hur du installerar och kör tillägget för anpassat skript med hjälp av en Azure Resource Manager-mall.

Om tillägg för anpassat skript

Tillägget för anpassat skript är användbart för konfiguration efter distribution, programvaruinstallation eller någon annan konfigurations-/hanteringsuppgift. Du kan ladda ned skript från Azure Storage eller någon annan tillgänglig Internetplats, eller så kan du ange skript eller kommandon till tilläggskörningen.

Tillägget för anpassade skript integreras med Azure Resource Manager-mallar. Du kan också köra den med hjälp av Azure CLI, PowerShell eller REST-API:et för Virtuella Azure-datorer.

OS för anpassat skripttillägg

Operativsystem som stöds för anpassat skripttillägg i Windows

Det anpassade skripttillägget för Windows körs på följande operativsystem. Andra versioner kan fungera men har inte testats internt på virtuella datorer som körs på Azure Stack Edge Pro-enheter.

Distribution Version
Windows Server 2019 Kärna
Windows Server 2016 Kärna

Operativsystem som stöds för anpassat skripttillägg i Linux

Tillägget för anpassat skript för Linux körs på följande operativsystem. Andra versioner kan fungera men har inte testats internt på virtuella datorer som körs på Azure Stack Edge Pro-enheter.

Distribution Version
Linux Ubuntu: 18.04 LTS
Linux: Red Hat Enterprise Linux 7.4, 7.5, 7.7

Förutsättningar

  1. Ladda ned de virtuella datormallarna och parametrarna till klientdatorn. Packa upp nedladdningen till en katalog som du använder som arbetskatalog.

  2. Du bör ha en virtuell dator skapad och distribuerad på enheten. Om du vill skapa virtuella datorer följer du alla steg i Distribuera virtuell dator på din Azure Stack Edge Pro med hjälp av mallar.

    Om du behöver ladda ned ett skript, till exempel från GitHub eller Azure Storage externt, aktiverar du den port som är ansluten till Internet för beräkning när du konfigurerar beräkningsnätverket. På så sätt kan du ladda ned skriptet.

    I följande exempel var port 2 ansluten till Internet och användes för att aktivera beräkningsnätverket. Om du har upptäckt att Kubernetes inte behövs i det tidigare steget kan du hoppa över Kubernetes-nodens IP-adress och externa tjänst-IP-tilldelning.

    Skärmbild av fönstret Beräkning för en Azure Stack Edge-enhet. Beräkningsinställningarna för port 2 är markerade.

Installera tillägg för anpassat skript

Beroende på operativsystemet för den virtuella datorn kan du installera tillägget för anpassat skript för Windows eller Linux.

Anpassat skripttillägg för Windows

Om du vill distribuera anpassat skripttillägg för Windows för en virtuell dator som körs på enheten redigerar addCSExtWindowsVM.parameters.json du parameterfilen och distribuerar sedan mallen addCSextensiontoVM.json.

Redigera parameterfil

Filen addCSExtWindowsVM.parameters.json tar följande parametrar:

{
    "$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>"
            }
        }
    }
}

Ange namnet på den virtuella datorn, namnet på tillägget och kommandot som du vill köra.

Här är exempelparameterfilen som användes i den här artikeln.

{
    "$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"
            }
        }
    }
}

Distribuera mallen

Distribuera mallen addCSextensiontoVM.json. Den här mallen distribuerar tillägget till en befintlig virtuell dator. Kör följande kommando:

$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>"

Kommentar

Tilläggsdistributionen är ett tidskrävande jobb och tar cirka 10 minuter att slutföra.

Här är ett exempel på utdata:

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>

Spåra distribution

Kör följande kommando för att kontrollera distributionstillståndet för tillägg för en viss virtuell dator:

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

Här är ett exempel på utdata:

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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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>

Kommentar

När distributionen är klar ProvisioningState ändras till Succeeded.

Tilläggsutdata loggas till filer som finns under följande mapp på den virtuella måldatorn.

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

De angivna filerna laddas ned till följande mapp på den virtuella måldatorn.

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

där n är ett decimaltal som kan ändras mellan körningar av tillägget. Värdet 1.* matchar det faktiska aktuella typeHandlerVersion värdet för tillägget. Den faktiska katalogen i den här instansen var C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0till exempel .

I det här fallet var kommandot som ska köras för det anpassade tillägget: md C:\\Users\\Public\\Documents\\test. När tillägget har installerats kan du kontrollera att katalogen skapades på den virtuella datorn på den angivna sökvägen i kommandot.

Anpassat skripttillägg för Linux

Om du vill distribuera anpassat skripttillägg för Windows för en virtuell dator som körs på enheten redigerar addCSExtLinuxVM.parameters.json du parameterfilen och distribuerar sedan mallen addCSExtensiontoVM.json.

Redigera parameterfil

Filen addCSExtLinuxVM.parameters.json tar följande parametrar:

{
    "$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>"
            }
        }
    }
}

Ange namnet på den virtuella datorn, namnet på tillägget och kommandot som du vill köra.

Här är en exempelparameterfil som användes i den här artikeln:

$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>"

Kommentar

Tilläggsdistributionen är ett tidskrävande jobb och tar cirka 10 minuter att slutföra.

Här är ett exempel på utdata:

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>

Har commandToExecute angetts för att skapa en fil file2.txt i /home/Administrator katalogen och innehållet i filen är some text. I det här fallet kan du kontrollera att filen skapades i den angivna sökvägen.

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

Spåra distributionsstatus

Malldistribution är ett tidskrävande jobb. Om du vill kontrollera distributionstillståndet för tillägg för en viss virtuell dator öppnar du en annan PowerShell-session (körs som administratör). Kör följande kommando:

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

Här är ett exempel på utdata:

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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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>

Kommentar

När distributionen är klar ProvisioningState ändras till Succeeded.

Utdata för tilläggskörning loggas till följande fil: /var/lib/waagent/custom-script/download/0/.

Ta bort anpassat skripttillägg

Om du vill ta bort tillägget för anpassat skript använder du följande kommando:

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

Här är ett exempel på utdata:

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

Nästa steg

Azure Resource Manager-cmdletar