Поделиться через


Развертывание расширения пользовательских скриптов на виртуальных машинах, работающих на устройстве Azure Stack Edge Pro

ОБЛАСТЬ ПРИМЕНЕНИЯ:Yes for Pro GPU SKUAzure Stack Edge Pro — GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure 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.

Распределение Версия
Linux: Ubuntu 18.04 LTS
Linux: Red Hat Enterprise Linux 7.4, 7.5, 7.7

Необходимые компоненты

  1. Загрузите шаблоны виртуальных машин и файлы параметров на клиентский компьютер. Распакуйте скачанные файлы в каталог, который будет использоваться в качестве рабочей папки.

  2. На устройстве должна быть создана и развернута виртуальная машина. Чтобы создать виртуальные машины, выполните все действия, описанные в разделе Развертывание виртуальных машин на устройстве Azure Stack Edge Pro GPU с помощью шаблонов.

    Если необходимо скачать сценарий из внешнего источника, например из GitHub или службы хранилища Azure, то при настройке вычислительной сети включите порт, подключенный к Интернету, для вычислений. Это позволит скачать сценарий.

    В приведенном ниже примере порт 2 подключен к Интернету и используется для включения вычислительной сети. Если вы определили, что на предыдущем шаге Kubernetes не требуется, можно пропустить назначение IP-адреса узла Kubernetes и IP-адреса внешней службы.

    Screenshot of the Compute pane for an Azure Stack Edge device. Compute settings for Port 2 are highlighted.

Установка расширения пользовательских скриптов

Расширение пользовательских скриптов можно устанавливать в операционных системах 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/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>

Примечание.

После завершения развертывания значение 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/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>

Примечание.

После завершения развертывания значение 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

Следующие шаги

Командлеты диспетчера ресурсов Azure