Distribuire l'estensione script personalizzata nelle macchine virtuali in esecuzione nel dispositivo Azure Stack Edge Pro
SI APPLICA A: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
L'estensione per script personalizzati scarica ed esegue script o comandi nelle macchine virtuali in esecuzione nei dispositivi Azure Stack Edge Pro. Questo articolo illustra in dettaglio come installare ed eseguire l'estensione script personalizzata usando un modello di Azure Resource Manager.
Informazioni sull'estensione script personalizzata
L'estensione script personalizzata è utile per la configurazione post-distribuzione, l'installazione del software o qualsiasi altra attività di configurazione/gestione. È possibile scaricare script da Archiviazione di Azure o da un altro percorso Internet accessibile oppure è possibile fornire script o comandi al runtime dell'estensione.
L'estensione per script personalizzati è integrabile con i modelli di Azure Resource Manager. È anche possibile eseguirla tramite l'interfaccia della riga di comando di Azure, PowerShell o l'API REST di Macchine virtuali di Azure.
Sistema operativo per l'estensione script personalizzata
Sistema operativo supportato per l'estensione script personalizzata in Windows
L'estensione script personalizzata per Windows verrà eseguita nei sistemi operativi seguenti. Altre versioni possono funzionare ma non sono state testate internamente nelle macchine virtuali in esecuzione nei dispositivi Azure Stack Edge Pro.
Distribuzione | Versione |
---|---|
Windows Server 2019 | Core |
Windows Server 2016 | Core |
Sistema operativo supportato per l'estensione script personalizzata in Linux
L'estensione script personalizzata per Linux verrà eseguita nei sistemi operativi seguenti. Altre versioni possono funzionare ma non sono state testate internamente nelle macchine virtuali in esecuzione nei dispositivi Azure Stack Edge Pro.
Distribuzione | Versione |
---|---|
Linux Ubuntu: | 18.04 LTS |
Linux: Red Hat Enterprise Linux | 7.4, 7.5, 7.7 |
Prerequisiti
Scaricare i modelli di macchina virtuale e i file di parametri nel computer client. Decomprimere il download in una directory che verrà usata come directory di lavoro.
Nel dispositivo deve essere creata e distribuita una macchina virtuale. Per creare macchine virtuali, seguire tutti i passaggi descritti in Distribuire una macchina virtuale in Azure Stack Edge Pro usando i modelli.
Se è necessario scaricare uno script, ad esempio da GitHub o Archiviazione di Azure esternamente, durante la configurazione della rete di calcolo, abilitare la porta connessa a Internet per il calcolo. In questo modo è possibile scaricare lo script.
Nell'esempio seguente la porta 2 è stata connessa a Internet ed è stata usata per abilitare la rete di calcolo. Se è stato rilevato che Kubernetes non è necessario nel passaggio precedente, è possibile ignorare l'assegnazione ip del nodo Kubernetes e l'assegnazione ip del servizio esterno.
Installare l'estensione script personalizzata
A seconda del sistema operativo per la macchina virtuale, è possibile installare l'estensione script personalizzata per Windows o per Linux.
Estensione script personalizzata per Windows
Per distribuire l'estensione script personalizzata per Windows per una macchina virtuale in esecuzione nel dispositivo, modificare il addCSExtWindowsVM.parameters.json
file dei parametri e quindi distribuire il modello addCSextensiontoVM.json
.
Modificare file dei parametri JSON
Il file addCSExtWindowsVM.parameters.json
accetta i parametri seguenti:
{
"$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>"
}
}
}
}
Specificare il nome della macchina virtuale, il nome dell'estensione e il comando da eseguire.
Ecco il file di parametri di esempio usato in questo articolo.
{
"$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"
}
}
}
}
Distribuire un modello
Distribuire il modello addCSextensiontoVM.json
. Questo modello distribuisce l'estensione in una macchina virtuale esistente. Eseguire il comando riportato di seguito:
$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>"
Nota
La distribuzione dell'estensione è un processo a esecuzione prolungata e il completamento richiede circa 10 minuti.
Di seguito è riportato un output di esempio:
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>
Tenere traccia della distribuzione
Per controllare lo stato di distribuzione delle estensioni per una determinata macchina virtuale, eseguire il comando seguente:
Get-AzureRmVMExtension -ResourceGroupName <Name of resource group> -VMName <Name of VM> -Name <Name of the extension>
Di seguito è riportato un output di esempio:
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>
Nota
Al termine della distribuzione, ProvisioningState
si trasforma in Succeeded
.
L'output dell'estensione viene registrato nei file presenti nella cartella seguente nella macchina virtuale di destinazione.
C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension
I file specificati vengono scaricati nella cartella seguente nella macchina virtuale di destinazione.
C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>
dove n è un numero intero decimale, che può cambiare tra le esecuzioni dell'estensione. Il valore 1.* corrisponde al valore corrente effettivo typeHandlerVersion
dell'estensione. Ad esempio, la directory effettiva in questa istanza era C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0
.
In questa istanza, il comando da eseguire per l'estensione personalizzata è: md C:\\Users\\Public\\Documents\\test
. Quando l'estensione è installata correttamente, è possibile verificare che la directory sia stata creata nella macchina virtuale nel percorso specificato nel comando .
Estensione script personalizzata per Linux
Per distribuire l'estensione script personalizzata per Windows per una macchina virtuale in esecuzione nel dispositivo, modificare il addCSExtLinuxVM.parameters.json
file dei parametri e quindi distribuire il modello addCSExtensiontoVM.json
.
Modificare file dei parametri JSON
Il file addCSExtLinuxVM.parameters.json
accetta i parametri seguenti:
{
"$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>"
}
}
}
}
Specificare il nome della macchina virtuale, il nome dell'estensione e il comando da eseguire.
Ecco un file di parametri di esempio usato in questo articolo:
$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>"
Nota
La distribuzione dell'estensione è un processo a esecuzione prolungata e il completamento richiede circa 10 minuti.
Di seguito è riportato un output di esempio:
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
stato impostato per creare un file file2.txt
nella /home/Administrator
directory e il contenuto del file è some text
. In questo caso, è possibile verificare che il file sia stato creato nel percorso specificato.
Administrator@VM6:~$ dir
file2.txt
Administrator@VM6:~$ cat file2.txt
some text
Administrator@VM6:
Tenere traccia dello stato della distribuzione
La distribuzione dei modelli è un processo a esecuzione prolungata. Per controllare lo stato di distribuzione delle estensioni per una determinata macchina virtuale, aprire un'altra sessione di PowerShell (esegui come amministratore). Esegui questo comando:
Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName <VM Name> -Name <Extension Name>
Di seguito è riportato un output di esempio:
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>
Nota
Al termine della distribuzione, ProvisioningState
si trasforma in Succeeded
.
L'output dell'esecuzione dell'estensione viene registrato nel file seguente: /var/lib/waagent/custom-script/download/0/
.
Rimuovere l'estensione script personalizzata
Per rimuovere l'estensione script personalizzata, usare il comando seguente:
Remove-AzureRmVMExtension -ResourceGroupName <Resource group name> -VMName <VM name> -Name <Extension name>
Di seguito è riportato un output di esempio:
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