Развертывание расширения пользовательских скриптов на виртуальных машинах, работающих на устройстве Azure Stack Edge Pro
ОБЛАСТЬ ПРИМЕНЕНИЯ: Azure Stack Edge Pro — GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Расширение пользовательских скриптов скачивает и запускает сценарии или команды на виртуальных машинах, работающих на устройствах Azure Stack Edge Pro. В этой статье описано, как установить и запустить расширение пользовательских скриптов с помощью шаблона Azure Resource Manager.
О расширение пользовательских скриптов
Расширение пользовательских скриптов можно использовать для настройки после развертывания, установки программного обеспечения и других задач настройки или управления. Сценарии можно скачать из службы хранилища Azure или другого расположения, доступного из Интернета. Кроме того, можно передать сценарии или команды в среду выполнения расширения.
Расширение пользовательских сценариев интегрируется с шаблонами Azure Resource Manager. Его также можно запустить с помощью Azure CLI, PowerShell или REST API Виртуальных машин Azure.
ОС для расширения пользовательских скриптов
Поддерживаемые ОС для расширения пользовательских скриптов для Windows
Расширение настраиваемых скриптов для Windows будет работать в приведенных ниже ОС. Другие версии могут работать, однако они не тестировались на собственных виртуальных машинах, работающих на устройствах Azure Stack Edge Pro.
Распределение | Версия |
---|---|
Windows Server 2019 | Основные сведения |
Windows Server 2016 | Основные сведения |
Поддерживаемые ОС для расширения пользовательских скриптов в Linux
Расширение настраиваемых скриптов для Linux будет работать в приведенных ниже ОС. Другие версии могут работать, однако они не тестировались на собственных виртуальных машинах, работающих на устройствах Azure Stack Edge Pro.
Распределение | Версия |
---|---|
Ubuntu Linux: | 18.04 LTS |
Linux: Red Hat Enterprise Linux | 7.4, 7.5, 7.7 |
Необходимые компоненты
Загрузите шаблоны виртуальных машин и файлы параметров на клиентский компьютер. Распакуйте скачанные файлы в каталог, который будет использоваться в качестве рабочей папки.
На устройстве должна быть создана и развернута виртуальная машина. Чтобы создать виртуальные машины, выполните все действия, описанные в разделе Развертывание виртуальных машин на устройстве Azure Stack Edge Pro GPU с помощью шаблонов.
Если необходимо скачать сценарий из внешнего источника, например из GitHub или службы хранилища Azure, то при настройке вычислительной сети включите порт, подключенный к Интернету, для вычислений. Это позволит скачать сценарий.
В приведенном ниже примере порт 2 подключен к Интернету и используется для включения вычислительной сети. Если вы определили, что на предыдущем шаге Kubernetes не требуется, можно пропустить назначение IP-адреса узла Kubernetes и IP-адреса внешней службы.
Установка расширения пользовательских скриптов
Расширение пользовательских скриптов можно устанавливать в операционных системах Windows или Linux. Выбор зависит от операционной системы на виртуальной машине.
Расширение Custom Script в ОС Windows
Чтобы развернуть расширение пользовательских скриптов для Windows на виртуальной машине, работающей на устройстве, измените файл параметров addCSExtWindowsVM.parameters.json
, а затем разверните шаблон addCSextensiontoVM.json
.
Изменение файла параметров
Файл addCSExtWindowsVM.parameters.json
принимает следующие параметры:
{
"$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>"
}
}
}
}
Укажите имя виртуальной машины, имя расширения и команду, которую требуется выполнить.
Ниже приведен пример файла параметров, который использовался в этой статье.
{
"$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"
}
}
}
}
Развертывание шаблона
Разверните шаблон addCSextensiontoVM.json
. Этот шаблон развертывает расширение на существующей виртуальной машине. Выполните следующую команду:
$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>"
Примечание.
Развертывание расширения выполняется как длительное задание и может занять около 10 минут.
Ниже приведен пример выходных данных.
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>
Отслеживание хода развертывания
Чтобы проверить состояние развертывания расширений для определенной виртуальной машины, выполните следующую команду:
Get-AzureRmVMExtension -ResourceGroupName <Name of resource group> -VMName <Name of VM> -Name <Name of the extension>
Ниже приведен пример выходных данных.
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>
Примечание.
После завершения развертывания значение ProvisioningState
изменяется на Succeeded
.
Выходные данные расширения регистрируются в файле, расположенном в следующей папке на целевой виртуальной машине.
C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension
Указанные файлы скачиваются в указанную ниже папку на целевой виртуальной машине.
C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>
n — десятичное целое число, которое может измениться между выполнениями расширения. Значение 1.* соответствует фактическому текущему значению typeHandlerVersion
расширения. Например, фактическим каталогом в этом экземпляре был C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0
.
В этом экземпляре команда для выполнения пользовательского расширения была следующей: md C:\\Users\\Public\\Documents\\test
. После успешной установки расширения можно проверить, был ли создан каталог в виртуальной машине по пути, указанному в команде.
Расширение Custom Script для Linux
Чтобы развернуть расширение пользовательских скриптов для Windows на виртуальной машине, работающей на устройстве, измените файл параметров addCSExtLinuxVM.parameters.json
, а затем разверните шаблон addCSExtensiontoVM.json
.
Изменение файла параметров
Файл addCSExtLinuxVM.parameters.json
принимает следующие параметры:
{
"$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>"
}
}
}
}
Укажите имя виртуальной машины, имя расширения и команду, которую требуется выполнить.
Ниже приведен пример файла параметров, который использовался в этой статье.
$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>"
Примечание.
Развертывание расширения выполняется как длительное задание и может занять около 10 минут.
Ниже приведен пример выходных данных.
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>
Параметр commandToExecute
был задан для создания файла file2.txt
в каталоге /home/Administrator
с содержимым файла some text
. В этом случае можно проверить, был ли создан файл по указанному пути.
Administrator@VM6:~$ dir
file2.txt
Administrator@VM6:~$ cat file2.txt
some text
Administrator@VM6:
Отслеживание состояния развертывания
Шаблоны развертывания выполняются как длительное задание. Чтобы проверить состояние развертывания расширений для определенной виртуальной машины, откройте другой сеанс PowerShell (от имени администратора). Выполните следующую команду:
Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName <VM Name> -Name <Extension Name>
Ниже приведен пример выходных данных.
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>
Примечание.
После завершения развертывания значение ProvisioningState
изменяется на Succeeded
.
Выходные данные при выполнении расширения сохраняются в файле /var/lib/waagent/custom-script/download/0/
.
Удаление расширения пользовательских скриптов
Чтобы удалить расширение пользовательских скриптов, используйте следующую команду:
Remove-AzureRmVMExtension -ResourceGroupName <Resource group name> -VMName <VM name> -Name <Extension name>
Ниже приведен пример выходных данных.
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