Aangepaste scriptextensie implementeren op VM's die worden uitgevoerd op uw Azure Stack Edge Pro-apparaat
VAN TOEPASSING OP: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure 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
Download de VM-sjablonen en parameterbestanden naar uw clientcomputer. Pak de download uit in een map die u als werkmap gaat gebruiken.
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.
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/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>
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\0
bijvoorbeeld .
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/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>
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