Wdrażanie niestandardowego rozszerzenia skryptu na maszynach wirtualnych uruchomionych na urządzeniu Azure Stack Edge Pro
DOTYCZY: Azure Stack Edge Pro — GPUAzure Stack Edge Pro 2Azure Stack Edge Pro R Azure Stack Edge 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
Pobierz szablony maszyn wirtualnych i pliki parametrów na komputer kliencki. Rozpakuj pobieranie do katalogu, którego będziesz używać jako katalogu roboczego.
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.
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/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>
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/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>
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