Share via


Azure Stack Edge Pro cihazınızda çalışan VM'lerde Özel Betik Uzantısı dağıtma

ŞUNLAR IÇIN GEÇERLIDIR: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

Özel Betik Uzantısı, Azure Stack Edge Pro cihazlarınızda çalışan sanal makinelerde betikleri veya komutları indirir ve çalıştırır. Bu makalede, Bir Azure Resource Manager şablonu kullanarak Özel Betik Uzantısı'nı yükleme ve çalıştırma işlemi ayrıntılı olarak açıklanmaktadır.

Özel betik uzantısı hakkında

Özel Betik Uzantısı dağıtım sonrası yapılandırma, yazılım yüklemesi veya diğer yapılandırma/yönetim görevleri için kullanışlıdır. Betikleri Azure Depolama veya başka bir erişilebilir İnternet konumundan indirebilir veya uzantı çalışma zamanına betikler veya komutlar sağlayabilirsiniz.

Özel Betik Uzantısı, Azure Resource Manager şablonlarıyla tümleşir. Azure CLI, PowerShell veya Azure Sanal Makineler REST API'sini kullanarak da çalıştırabilirsiniz.

Özel Betik Uzantısı için İşletim Sistemi

Windows'ta Özel Betik Uzantısı için desteklenen işletim sistemi

Windows için Özel Betik Uzantısı aşağıdaki işletim sisteminde çalışır. Diğer sürümler çalışabilir ancak Azure Stack Edge Pro cihazlarında çalışan VM'lerde şirket içinde test edilmedi.

Dağıtım Sürüm
Windows Server 2019 Temel
Windows Server 2016 Temel

Linux'ta Özel Betik Uzantısı için desteklenen işletim sistemi

Linux için Özel Betik Uzantısı aşağıdaki işletim sistemleri üzerinde çalışır. Diğer sürümler çalışabilir ancak Azure Stack Edge Pro cihazlarında çalışan VM'lerde şirket içinde test edilmedi.

Dağıtım Sürüm
Linux: Ubuntu 18.04 LTS
Linux: Red Hat Enterprise Linux 7.4, 7.5, 7.7

Ön koşullar

  1. VM şablonlarını ve parametre dosyalarını istemci makinenize indirin. İndirme işlemini çalışma dizini olarak kullanacağınız bir dizine açın.

  2. Cihazınızda oluşturulan ve dağıtılan bir VM'niz olmalıdır. VM'ler oluşturmak için Şablonları kullanarak Azure Stack Edge Pro'nuzda VM dağıtma sayfasındaki tüm adımları izleyin.

    İşlem ağını yapılandırırken GitHub veya Azure Depolama gibi bir betiği dışarıdan indirmeniz gerekiyorsa işlem için İnternet'e bağlı bağlantı noktasını etkinleştirin. Bu, betiği indirmenizi sağlar.

    Aşağıdaki örnekte 2 numaralı bağlantı noktası İnternet'e bağlanmıştı ve işlem ağını etkinleştirmek için kullanılmıştır. Önceki adımda Kubernetes'in gerekli olmadığını belirlediyseniz Kubernetes düğüm IP'sini ve dış hizmet IP atamasını atlayabilirsiniz.

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

Özel Betik Uzantısını Yükleme

VM'nizin işletim sistemine bağlı olarak, Windows veya Linux için Özel Betik Uzantısı'nı yükleyebilirsiniz.

Windows için Özel Betik Uzantısı

Cihazınızda çalışan bir VM için Windows için Özel Betik Uzantısı dağıtmak için parametre dosyasını düzenleyin addCSExtWindowsVM.parameters.json ve şablonu addCSextensiontoVM.jsondağıtın.

Parametre dosyasını düzenle

Dosya addCSExtWindowsVM.parameters.json aşağıdaki parametreleri alır:

{
    "$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>"
            }
        }
    }
}

VM adınızı, uzantının adını ve yürütmek istediğiniz komutu belirtin.

Bu makalede kullanılan örnek parametre dosyası aşağıda verilmişti.

{
    "$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"
            }
        }
    }
}

Şablon dağıtma

şablonunu addCSextensiontoVM.jsondağıtın. Bu şablon uzantıyı mevcut bir VM'ye dağıtır. Aşağıdaki komutu çalıştırın:

$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>"

Dekont

Uzantı dağıtımı uzun süre çalışan bir iştir ve tamamlanması yaklaşık 10 dakika sürer.

Aşağıda örnek bir çıkış verilmişti:

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>

Dağıtımı izleme

Belirli bir VM için uzantıların dağıtım durumunu denetlemek için aşağıdaki komutu çalıştırın:

Get-AzureRmVMExtension -ResourceGroupName <Name of resource group> -VMName <Name of VM> -Name <Name of the extension>

Aşağıda örnek bir çıkış verilmişti:

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>

Dekont

Dağıtım tamamlandığında, olarak ProvisioningState değişir Succeeded.

Uzantı çıkışı, hedef sanal makinenin aşağıdaki klasörünün altında bulunan dosyalarda günlüğe kaydedilir.

C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension

Belirtilen dosyalar hedef sanal makinede aşağıdaki klasöre indirilir.

C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>

burada n , uzantının yürütmeleri arasında değişebilen ondalık bir tamsayıdır. 1.* değeri uzantının gerçek, geçerli typeHandlerVersion değeriyle eşleşir. Örneğin, bu örnekteki gerçek dizin şeklindedir C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0.

Bu örnekte, özel uzantı için yürütülecek komut: md C:\\Users\\Public\\Documents\\test. Uzantı başarıyla yüklendiğinde, dizinin komutundaki belirtilen yolda VM'de oluşturulduğunu doğrulayabilirsiniz.

Linux için Özel Betik Uzantısı

Cihazınızda çalışan bir VM için Windows için Özel Betik Uzantısı dağıtmak için parametre dosyasını düzenleyin addCSExtLinuxVM.parameters.json ve şablonu addCSExtensiontoVM.jsondağıtın.

Parametre dosyasını düzenle

Dosya addCSExtLinuxVM.parameters.json aşağıdaki parametreleri alır:

{
    "$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>"
            }
        }
    }
}

VM adınızı, uzantının adını ve yürütmek istediğiniz komutu belirtin.

Bu makalede kullanılan örnek parametre dosyası aşağıda verilmişti:

$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>"

Dekont

Uzantı dağıtımı uzun süre çalışan bir iştir ve tamamlanması yaklaşık 10 dakika sürer.

Aşağıda örnek bir çıkış verilmişti:

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, dizininde /home/Administrator bir dosya file2.txt oluşturmak için ayarlanmıştır ve dosyanın içeriği şeklindedirsome text. Bu durumda, dosyanın belirtilen yolda oluşturulduğunu doğrulayabilirsiniz.

Administrator@VM6:~$ dir
file2.txt
Administrator@VM6:~$ cat file2.txt
some text
Administrator@VM6:

Dağıtım durumunu izleme

Şablon dağıtımı uzun süre çalışan bir iştir. Belirli bir VM'nin uzantılarının dağıtım durumunu denetlemek için başka bir PowerShell oturumu açın (yönetici olarak çalıştırın). Şu komutu çalıştırın:

Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName <VM Name> -Name <Extension Name>

Aşağıda örnek bir çıkış verilmişti:

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>

Dekont

Dağıtım tamamlandığında, olarak ProvisioningState değişir Succeeded.

Uzantı yürütme çıkışı şu dosyaya kaydedilir: /var/lib/waagent/custom-script/download/0/.

Özel Betik Uzantısını Kaldır

Özel Betik Uzantısını kaldırmak için aşağıdaki komutu kullanın:

Remove-AzureRmVMExtension -ResourceGroupName <Resource group name> -VMName <VM name> -Name <Extension name>

Aşağıda örnek bir çıkış verilmişti:

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

Sonraki adımlar

Azure Resource Manager cmdlet'leri