Implantar a extensão de script personalizado em VMs em execução no seu dispositivo do Azure Stack Edge Pro
APLICA-SE A: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
A extensão de script personalizado baixa e executa scripts ou comandos em máquinas virtuais em execução em dispositivos do Azure Stack Edge Pro. Este artigo detalha como instalar e executar a extensão de script personalizado usando um modelo do Azure Resource Manager.
Sobre a extensão de script personalizado
Essa extensão de script personalizado é útil para a configuração pós-implantação, instalação de software ou qualquer outra configuração/tarefa de gerenciamento. Você pode fazer o download de scripts a partir do Armazenamento do Microsoft Azure ou outro local acessível da internet. Também é possível fornecer scripts ou comandos para o runtime da extensão.
A extensão de Script personalizado se integra com os modelos do Azure Resource Manager. Você também pode executá-la usando a CLI do Azure, o PowerShell, o portal do Azure ou a API de REST de máquinas virtuais do Azure.
Sistema operacional para a extensão de script personalizado
Sistema operacional com suporte para a extensão de script personalizado no Windows
A extensão de script personalizado para Windows executará nos seguintes SOs. Outras versões podem funcionar, mas não foram testadas internamente em VMs sendo executadas em dispositivos Azure Stack Edge Pro.
Distribuição | Versão |
---|---|
Windows Server 2019 | Core |
Windows Server 2016 | Core |
Sistema operacional com suporte para a extensão de script personalizado no Linux
A extensão de script personalizado para Linux executará nos seguintes SOs. Outras versões podem funcionar, mas não foram testadas internamente em VMs sendo executadas em dispositivos Azure Stack Edge Pro.
Distribuição | Versão |
---|---|
Linux: Ubuntu | 18.04 LTS |
Linux: Red Hat Enterprise Linux | 7.4, 7.5, 7.7 |
Pré-requisitos
Baixe os modelos de VM e os arquivos de parâmetros no computador cliente. Descompacte o download em um diretório que você usará como um diretório de trabalho.
Você deve ter uma VM criada e implantada em seu dispositivo. Para criar VMs, siga todas as etapas em Implantar VM no seu Azure Stack Edge Pro usando modelos.
Se você precisar baixar um script, como do GitHub ou do Armazenamento do Microsoft Azure externamente, durante a configuração da rede de computação, habilite a porta que está conectada à Internet para computação. Isso permite que você baixe o script.
No exemplo a seguir, a Porta 2 foi conectada à Internet e usada para habilitar a rede de computação. Se você identificou que o Kubernetes não é necessário na etapa anterior, poderá ignorar o IP do nó do Kubernetes e a atribuição de IP do serviço externo.
Instalar a extensão de script personalizado
Dependendo do sistema operacional da VM, é possível instalar a extensão de script personalizado para Windows ou para Linux.
Extensão de script personalizado para o Windows
Para implantar a extensão de script personalizado para Windows para uma VM em execução no seu dispositivo, edite o arquivo de parâmetros addCSExtWindowsVM.parameters.json
e, em seguida, implante o modelo addCSextensiontoVM.json
.
Editar arquivo de parâmetros
O arquivo addCSExtWindowsVM.parameters.json
usa os seguintes parâmetros:
{
"$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>"
}
}
}
}
Forneça o nome da VM, o nome da extensão e o comando que você deseja executar.
Aqui está o exemplo de arquivo de parâmetro que foi usado neste artigo.
{
"$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"
}
}
}
}
Implantar modelo
Implante o modelo addCSextensiontoVM.json
. Este modelo implanta a extensão para uma VM existente. Execute o comando a seguir:
$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>"
Observação
A implantação da extensão é um trabalho de execução prolongada e demora cerca de 10 minutos para ser concluída.
Aqui está um exemplo de saída:
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>
Acompanhar a implantação
Para verificar o estado de implantação de extensões para uma determinada VM, execute o seguinte comando:
Get-AzureRmVMExtension -ResourceGroupName <Name of resource group> -VMName <Name of VM> -Name <Name of the extension>
Aqui está um exemplo de saída:
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>
Observação
Quando a implantação estiver concluída, ProvisioningState
mudará para Succeeded
.
A saída da extensão é registrada nos arquivos localizados na pasta a seguir, na máquina virtual de destino.
C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension
Os arquivos especificados são baixados na pasta a seguir, na máquina virtual de destino.
C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>
em que n é um inteiro decimal que pode ser alterado entre as execuções da extensão. O valor 1.* corresponde ao valor typeHandlerVersion
atual e real da extensão. Por exemplo, o diretório real nesta instância era C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0
.
Nesta instância, o comando a ser executado para a extensão personalizada foi: md C:\\Users\\Public\\Documents\\test
. Quando a extensão é instalada com êxito, você pode verificar se o diretório foi criado na VM no caminho especificado no comando.
Extensão de script personalizado para o Linux
Para implantar a extensão de script personalizado para Windows para uma VM em execução no seu dispositivo, edite o arquivo de parâmetros addCSExtLinuxVM.parameters.json
e, em seguida, implante o modelo addCSExtensiontoVM.json
.
Editar arquivo de parâmetros
O arquivo addCSExtLinuxVM.parameters.json
usa os seguintes parâmetros:
{
"$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>"
}
}
}
}
Forneça o nome da VM, o nome da extensão e o comando que você deseja executar.
Vejamos um exemplo de arquivo de parâmetro que foi usado neste artigo:
$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>"
Observação
A implantação da extensão é um trabalho de execução prolongada e demora cerca de 10 minutos para ser concluída.
Aqui está um exemplo de saída:
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>
O commandToExecute
foi definido para criar um arquivo file2.txt
no diretório /home/Administrator
e o conteúdo do arquivo é some text
. Nesse caso, você pode verificar se o arquivo foi criado no caminho especificado.
Administrator@VM6:~$ dir
file2.txt
Administrator@VM6:~$ cat file2.txt
some text
Administrator@VM6:
Acompanhar o status da implantação
A implantação de modelo é um trabalho de execução prolongada. Para verificar o estado de implantação de extensões para uma determinada VM, abra outra sessão do PowerShell (execute como administrador). Execute o comando a seguir:
Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName <VM Name> -Name <Extension Name>
Aqui está um exemplo de saída:
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>
Observação
Quando a implantação estiver concluída, ProvisioningState
mudará para Succeeded
.
A saída de execução da extensão é registrada no seguinte arquivo: /var/lib/waagent/custom-script/download/0/
.
Remover extensão de script personalizado
Para remover a extensão de script personalizado, use o seguinte comando:
Remove-AzureRmVMExtension -ResourceGroupName <Resource group name> -VMName <VM name> -Name <Extension name>
Aqui está um exemplo de saída:
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