Delen via


Aangepaste scriptextensie implementeren op VM's die worden uitgevoerd op uw Azure Stack Edge Pro-apparaat

VAN TOEPASSING OP: Ja voor Pro GPU-SKUAzure Stack Edge Pro - GPUJa voor Pro 2 SKUAzure Stack Edge Pro 2Ja voor Pro R SKUAzure Stack Edge Pro RJa voor Mini R SKUAzure Stack Edge Mini R

Met de aangepaste scriptextensie worden scripts of opdrachten gedownload en uitgevoerd op virtuele machines die worden uitgevoerd op uw Azure Stack Edge Pro-apparaten. In dit artikel wordt beschreven hoe u de aangepaste scriptextensie installeert en uitvoert met behulp van een Azure Resource Manager-sjabloon.

Over aangepaste scriptextensie

De aangepaste scriptextensie is handig voor configuratie na implementatie, software-installatie of een andere configuratie/beheertaak. U kunt scripts downloaden van Azure Storage of een andere toegankelijke internetlocatie, of u kunt scripts of opdrachten opgeven voor de extensieruntime.

De aangepaste scriptextensie kan worden geïntegreerd met Azure Resource Manager-sjablonen. U kunt het ook uitvoeren met behulp van Azure CLI, PowerShell of de REST API van Azure Virtual Machines.

Besturingssysteem voor aangepaste scriptextensie

Ondersteund besturingssysteem voor aangepaste scriptextensie in Windows

De aangepaste scriptextensie voor Windows wordt uitgevoerd op de volgende besturingssystemen. Andere versies werken mogelijk, maar zijn niet intern getest op VM's die worden uitgevoerd op Azure Stack Edge Pro-apparaten.

Distributie Versie
Windows Server 2019 Basis
Windows Server 2016 Basis

Ondersteund besturingssysteem voor aangepaste scriptextensie in Linux

De aangepaste scriptextensie voor Linux wordt uitgevoerd op de volgende besturingssystemen. Andere versies werken mogelijk, maar zijn niet intern getest op VM's die worden uitgevoerd op Azure Stack Edge Pro-apparaten.

Distributie Versie
Linux Ubuntu: 18.04 LTS
Linux: Red Hat Enterprise Linux 7.4, 7.5, 7.7

Vereisten

  1. Download de VM-sjablonen en parameterbestanden naar uw clientcomputer. Pak de download uit in een map die u als werkmap gaat gebruiken.

  2. U moet een virtuele machine hebben gemaakt en geïmplementeerd op uw apparaat. Als u VM's wilt maken, volgt u alle stappen in Vm implementeren op uw Azure Stack Edge Pro met behulp van sjablonen.

    Als u een script wilt downloaden, bijvoorbeeld van GitHub of Azure Storage, schakelt u tijdens het configureren van het rekennetwerk de poort in die is verbonden met internet voor berekening. Hiermee kunt u het script downloaden.

    In het volgende voorbeeld is poort 2 verbonden met internet en gebruikt om het rekennetwerk in te schakelen. Als u hebt vastgesteld dat Kubernetes niet nodig is in de vorige stap, kunt u het IP-adres van het Kubernetes-knooppunt en de toewijzing van externe service-IP overslaan.

    Schermopname van het deelvenster Compute voor een Azure Stack Edge-apparaat. Rekeninstellingen voor poort 2 zijn gemarkeerd.

Aangepaste scriptextensie installeren

Afhankelijk van het besturingssysteem voor uw VIRTUELE machine, kunt u de aangepaste scriptextensie voor Windows of voor Linux installeren.

Aangepaste scriptextensie voor Windows

Als u aangepaste scriptextensie voor Windows wilt implementeren voor een virtuele machine die op uw apparaat wordt uitgevoerd, bewerkt u het addCSExtWindowsVM.parameters.json parameterbestand en implementeert u de sjabloon addCSextensiontoVM.json.

Parametersbestand bewerken

Het bestand addCSExtWindowsVM.parameters.json heeft de volgende parameters:

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

Geef uw VM-naam, naam op voor de extensie en de opdracht die u wilt uitvoeren.

Hier volgt het voorbeeldparameterbestand dat in dit artikel is gebruikt.

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

Sjabloon implementeren

Implementeer de sjabloon addCSextensiontoVM.json. Met deze sjabloon wordt de extensie geïmplementeerd op een bestaande VIRTUELE machine. Voer de volgende opdracht uit:

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

Notitie

De implementatie van de extensie is een langlopende taak en duurt ongeveer 10 minuten.

Hier volgt een voorbeelduitvoer:

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>

Implementatie bijhouden

Voer de volgende opdracht uit om de implementatiestatus van extensies voor een bepaalde VIRTUELE machine te controleren:

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

Hier volgt een voorbeelduitvoer:

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>

Notitie

Wanneer de implementatie is voltooid, worden de ProvisioningState wijzigingen gewijzigd in Succeeded.

De extensie-uitvoer wordt vastgelegd in bestanden in de volgende map op de virtuele doelmachine.

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

De opgegeven bestanden worden gedownload naar de volgende map op de virtuele doelmachine.

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

waarbij n een decimaal geheel getal is, wat kan veranderen tussen uitvoeringen van de extensie. De waarde 1.* komt overeen met de werkelijke, huidige typeHandlerVersion waarde van de extensie. De werkelijke map in dit exemplaar was C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0bijvoorbeeld .

In dit geval was de opdracht die moet worden uitgevoerd voor de aangepaste extensie: md C:\\Users\\Public\\Documents\\test. Wanneer de extensie is geïnstalleerd, kunt u controleren of de map is gemaakt op de virtuele machine op het opgegeven pad in de opdracht.

Aangepaste scriptextensie voor Linux

Als u aangepaste scriptextensie voor Windows wilt implementeren voor een virtuele machine die op uw apparaat wordt uitgevoerd, bewerkt u het addCSExtLinuxVM.parameters.json parameterbestand en implementeert u de sjabloon addCSExtensiontoVM.json.

Parametersbestand bewerken

Het bestand addCSExtLinuxVM.parameters.json heeft de volgende parameters:

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

Geef uw VM-naam, naam op voor de extensie en de opdracht die u wilt uitvoeren.

Hier volgt een voorbeeldparameterbestand dat in dit artikel is gebruikt:

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

Notitie

De implementatie van de extensie is een langlopende taak en duurt ongeveer 10 minuten.

Hier volgt een voorbeelduitvoer:

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>

De commandToExecute set is ingesteld om een bestand file2.txt te maken in de /home/Administrator map en de inhoud van het bestand zijn some text. In dit geval kunt u controleren of het bestand is gemaakt in het opgegeven pad.

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

Implementatiestatus bijhouden

Sjabloonimplementatie is een langlopende taak. Als u de implementatiestatus van extensies voor een bepaalde VM wilt controleren, opent u een andere PowerShell-sessie (als administrator uitvoeren). Voer de volgende opdracht uit:

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

Hier volgt een voorbeelduitvoer:

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>

Notitie

Wanneer de implementatie is voltooid, worden de ProvisioningState wijzigingen gewijzigd in Succeeded.

De uitvoer van de uitvoering van de extensie wordt vastgelegd in het volgende bestand: /var/lib/waagent/custom-script/download/0/

Aangepaste scriptextensie verwijderen

Gebruik de volgende opdracht om de aangepaste scriptextensie te verwijderen:

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

Hier volgt een voorbeelduitvoer:

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

Volgende stappen

Azure Resource Manager-cmdlets