ARM şablonlarından ortam oluşturma

Azure DevTest Labs ortamlarını kullanarak birden çok sanal makine (VM) ve hizmet olarak platform (PaaS) kaynağıyla kolayca ve tutarlı bir şekilde laboratuvar sağlayabilirsiniz. Bu makalede , Azure Resource Manager (ARM) şablonlarından DevTest Labs ortamlarının nasıl oluşturulacağı açıklanır. Çok katmanlı bir web uygulaması veya SharePoint grubu için laboratuvar oluşturmak için bu yaklaşımı kullanabilirsiniz.

DevTest Labs ortamındaki kaynaklar aynı yaşam döngüsünü paylaşır. Bunları birlikte yönetebilir ve tek tek VM'lerin maliyetlerini takip ettiğiniz gibi laboratuvar ortamındaki tek tek PaaS kaynaklarının maliyetini de izleyebilirsiniz.

Bir laboratuvarı genel veya özel Git şablon depolarından ARM ortam şablonlarını kullanacak şekilde yapılandırabilirsiniz. Aşağıdaki diyagramda DevTest Labs'in VM'leri ve diğer kaynakları içeren bir ortamı dağıtmak için genel veya özel bir depodaki ARM şablonunu nasıl kullandığı gösterilmektedir.

Git depolarından ARM şablonları almayı ve paaS kaynaklarıyla ortamları dağıtmak için bunları kullanmayı gösteren diyagram.

Not

Kuruluş genelindeki PaaS kaynaklarını, ilkelerini ve güvenlik ayarlarını ya da dağıtım aşamaları ve uygulamalar arasında CI/CD tümleştirmesini yönetmeniz gerekiyorsa, ortam oluşturmak için Azure Dağıtım Ortamları'nı (ADE) kullanmayı göz önünde bulundurun. ADE, geliştiricilerin proje tabanlı şablonları kullanarak uygulama altyapısını hızla dağıtarak geliştirme ekipleriniz için tutarlı ve güvenli ortamlar sağlamasına olanak tanır. Daha fazla bilgi için Azure Dağıtım Ortamları belgelerine bakın.

Önkoşullar

  • Laboratuvar için şablon depoları eklemek veya yapılandırmak için, laboratuvarda en azından Katkıda Bulunan izinlerine sahip olmanız gereklidir.
  • Azure DevTest ortamları oluşturmak için kullanılabilir ARM şablonlarından, laboratuvarda en az DevTest Kullanıcı izinlerine sahip olmanız gerekir.
  • Ortam oluşturmayı otomatikleştirme bölümünde PowerShell betiğini çalıştırmak için Az.Resources modülü yüklü olan Azure PowerShell'i kullanın.

Sınırlamalar

DevTest Labs'deki ARM ortam şablonlarından oluşturulan ortamlar aşağıdaki sınırlamalara sahiptir:

  • VM'ler için otomatikshutdown özelliği desteklenmez.

  • Aşağıdaki laboratuvar ilkeleri uygulanmaz veya değerlendirilmez:

    • Laboratuvar kullanıcısı başına VM sayısı
    • Kullanıcı başına premium VM sayısı
    • Kullanıcı başına premium disk sayısı

    Örneğin, laboratuvar ilkesi her kullanıcının en fazla beş VM oluşturmasına izin veriyor olsa bile, kullanıcı onlarca VM oluşturan bir ARM ortam şablonu dağıtabilir.

Laboratuvarlar için şablon depolarını yapılandırma

Laboratuvarınızı DevTest Labs genel ARM şablonu deposundan ve diğer genel veya özel Git depolarından ARM ortam şablonlarını kullanacak şekilde yapılandırabilirsiniz. Şablon deposuna laboratuvar erişimini etkinleştirdiğinizde, laboratuvar kullanıcıları Azure portalında vm oluşturmaya benzer şablonlar seçerek ortamları hızla oluşturabilir.

DevTest Labs genel ARM şablonu deposu , Azure Web Apps, Azure Service Fabric kümesi ve geliştirme SharePoint grupları için önceden doğrulanmış ortam şablonları içerir. PaaS kaynaklarıyla sorunsuz bir başlangıç deneyimi için şablonların minimum giriş parametreleri vardır.

Genel ortam şablonlarını olduğu gibi kullanabilir veya gereksinimlerinize uyacak şekilde özelleştirebilirsiniz. GitHub genel şablon deposuna bir çekme isteği göndererek genel şablona düzeltmeler veya eklemeler de önerebilirsiniz.

Ayrıca, ortam şablonlarını diğer genel veya özel Git depolarında depolayabilir ve şablonları tüm laboratuvar kullanıcılarının kullanımına açmak için bu depoları laboratuvarınıza ekleyebilirsiniz. Yönergeler için bkz. ARM şablonlarını Git depolarında depolama ve Laboratuvarlara şablon depoları ekleme.

Genel ortam ayarlarını yapılandırma

Yeni veya mevcut bir laboratuvar için DevTest Labs genel şablon deposuna laboratuvar erişimini etkinleştirebilirsiniz. Depoya erişimi etkinleştirdiğinizde, laboratuvar kullanıcılarının kullanabileceği ortam şablonlarını seçebilirsiniz.

Yeni bir laboratuvar için genel ortam erişimini yapılandırma

Yeni bir laboratuvar oluşturduğunuzda genel ortam deposu erişimini yapılandırmak için, Temel Ayarlar sekmesinde Genel ortamlar seçeneğini Açık veya Kapalı olarak ayarlayın. Bu seçenek varsayılan olarak Açık olarak ayarlanır.

Laboratuvar oluşturma işlemi sırasında bir laboratuvar için genel ortam depolarının nasıl etkinleştirildiğini gösteren ekran görüntüsü.

Mevcut laboratuvar için genel ortam erişimini yapılandırma

Mevcut bir laboratuvar için genel ortam deposu erişimini etkinleştirmek veya devre dışı bırakmak için:

  1. Laboratuvarınızın Azure portalıgenel bakış sayfasında, sol gezinti menüsündeki Ayarlar'ın altında Yapılandırma ve ilkeler'i seçin.

  2. Yapılandırma ve ilkeler sayfasında, soldaki menüden Sanal makine tabanları'nı genişletin ve Genel ortamlar'ı seçin.

  3. Genel ortamlar sayfasında, Bu laboratuvar için Genel Ortamları Etkinleştir seçeneğini Evet veya Hayır olarak ayarlayın.

    Mevcut bir laboratuvar kaynağı için tüm genel ortam depolarının nasıl etkinleştirildiğini gösteren ekran görüntüsü.

  4. Kaydet'i seçin.

Kullanılabilir genel ortam şablonlarını seçme

Bir laboratuvar için genel ortam deposunu etkinleştirdiğinizde, depodaki tüm ortam şablonları varsayılan olarak laboratuvar kullanıcılarınız tarafından kullanılabilir. Seçili şablonlara erişimi devre dışı bırakabilirsiniz. Devre dışı bırakılan şablonlar artık kullanıcıların oluşturabileceği ortamlar listesinde görünmez.

Belirli ortam şablonlarına erişimi reddetmek için:

  1. Laboratuvarınızın Azure portalı Yapılandırma ve ilkeleri>Sanal makine temelleri>Genel ortamlar sayfasında, devre dışı bırakmak istediğiniz ortamların yanındaki onay kutularının seçimini kaldırın.

  2. Kaydet'i seçin.

Kullanıcılara erişimi devre dışı bırakmak için laboratuvar için genel ortam depolarının seçimini kaldırmayı gösteren ekran görüntüsü.

Ortam kullanıcı izinlerini yapılandırma

Varsayılan olarak, laboratuvar kullanıcıları oluşturdukları ortamlarda Okuyucu rolüne atanır. Okuyucular SQL sunucuları veya veritabanları gibi ortam kaynaklarını durduramaz, başlatamaz veya değiştiremez. Laboratuvar kullanıcılarının ortamlarındaki kaynakları düzenlemesine izin vermek için, onlara ortamları için kaynak grubunda Katkıda Bulunan rolü vekleyebilirsiniz.

  1. Laboratuvarınızın Azure portalıgenel bakış sayfasında, sol gezinti menüsündeki Ayarlar'ın altında Yapılandırma ve ilkeler'i seçin.

  2. Yapılandırma ve ilkeler sayfasında, soldaki menüden Ayarlar'ı genişletin ve Laboratuvar ayarları'nı seçin.

  3. Laboratuvar ayarları sayfasında Ortam erişimi'nin altında Kaynak grubu kullanıcı hakları seçeneğini Katkıda Bulunan olarak ayarlayın.

  4. Kaydet'i seçin.

DevTest Labs'de laboratuvar kullanıcıları için Katkıda Bulunan rolü izinlerinin nasıl ayarlandığını gösteren ekran görüntüsü.

Şablonlardan ortam oluşturma

Laboratuvarınız genel veya özel şablon depolarını kullanacak şekilde yapılandırılmışsa, sanal makine (VM) oluşturmaya benzer şekilde kullanılabilir bir ARM şablonu seçerek bir ortam oluşturabilirsiniz. Şablondan ortam oluşturmak için bu adımları izleyin.

  1. Laboratuvarınızın Azure portalıgenel bakış sayfasında, sol gezinti menüsünde Laboratuvarım'ın altında Ortamlarım'ı seçin.

  2. Ortamlarım sayfasında Ekle'yi seçin.

  3. Temel seçin sayfasında, oluşturulacak ortamı seçin.

    DevTest Labs laboratuvar kaynağı için kullanılabilen genel ortam ARM şablonlarını gösteren ekran görüntüsü.

  4. Ekle bölmesinde bir Ortam adı girin ve diğer parametre ayarlarını yapılandırın.

    SharePoint ortamı için yapılandırılan ayarları içeren Ekle bölmesini gösteren ekran görüntüsü.

    • Her ARM ortam şablonu benzersiz parametreler içerir. Ortam eklediğinizde, gerekli tüm parametreler için kırmızı yıldız işaretiyle gösterilen değerler girmeniz gerekir.
    • azuredeploy.parameters.json ARM şablon dosyasındaki bazı parametre değerleri, Ekle bölmesinde varsayılan değer içermeyen boş ayar alanları oluşturur. Bu değerler , , GEN-UNIQUEGEN-UNIQUE-[N]ve GEN-SSH-PUB-KEYdeğerlerini içerirGEN-PASSWORD.
    • Parolalar gibi güvenli dize parametreleri için Azure Key Vault'tan gizli dizileri kullanabilirsiniz. Daha fazla bilgi için bkz. Azure Key Vault'ta gizli bilgileri saklama.
  5. Add (Ekle) seçeneğini belirleyin. Ortam hazırlamaya hemen başlar.

Ortam sağlama işlemi uzun sürebilir. Toplam süre, DevTest Labs'in laboratuvar ortamının bir parçası olarak oluşturduğu hizmet örneklerinin, VM'lerin ve diğer kaynakların sayısına bağlıdır.

Sağlama durumunu Ortamlarım sayfasından izleyebilirsiniz. Sayfa görünümünü güncelleştirmek ve geçerli durumu denetlemek için araç çubuğunda Yenile'yi seçin. Sağlama işlemi devam ederken ortam durumu Oluşturuluyor şeklindedir. Sağlama tamamlandıktan sonra durum Hazır olarak değişir.

Laboratuvar ortamı için sağlama durumunun nasıl görüntülendiğini gösteren ekran görüntüsü.

Ortam hazır olduğunda, şablonun sağladığı VM'leri görmek için Ortamlarım listesinde ortamı genişletebilirsiniz.

Yeni sağlanan ortam için oluşturulan VM'lerin listesini gösteren ekran görüntüsü.

Dağıtım, ARM şablonunun tanımladığı tüm ortam kaynaklarını sağlamak için yeni bir kaynak grubu oluşturur. Kaynak grubunu ve şablonun oluşturduğu tüm kaynakları görüntülemek için Ortamlarım listesinde ortamı seçin.

VM'ler, diskler, sanal ağ ve daha fazlası dahil olmak üzere tüm ortam kaynaklarını içeren kaynak grubunu gösteren ekran görüntüsü.

Yapılandırmayı, zamanlamaları ve ilkeleri yönetme gibi VM özelliklerini ve kullanılabilir eylemleri görmek için listeden bir sanal makine (VM) seçin.

Seçili ortam VM'sinin kullanılabilir eylemlerini gösteren ekran görüntüsü.

Ortam oluşturmayı otomatikleştirin

Geliştirme veya test senaryoları için birden çok ortam oluşturmanız gerekiyorsa ARM şablonlarından ortam dağıtımını otomatikleştirmek için Azure PowerShell'i veya Azure CLI'yı kullanabilirsiniz. Aşağıdaki adımlarda, Azure PowerShell New-AzResource komutunu kullanarak ARM ortam şablonu dağıtımını otomatikleştirme adımları gösterilmektedir.

Azure CLI az deployment group create komutunu kullanarak da dağıtımı otomatikleştirebilirsiniz . Daha fazla bilgi için bkz . ARM şablonları ve Azure CLI ile kaynakları dağıtma.

  1. ARM ortam şablonunu bir Git deposunda depolayın ve depoyu laboratuvarınıza ekleyin.

  2. Aşağıdaki PowerShell betiğini bilgisayarınıza deployenv.ps1olarak kaydedin. Bu betik, laboratuvarda ortam oluşturmak için ARM şablonunu çağırır.

    #Requires -Module Az.Resources
    
    [CmdletBinding()]
    
    param (
    # ID of the Azure subscription for the lab
    [string] [Parameter(Mandatory=$true)] $SubscriptionId,
    
    # Name of the lab in which to create the environment
    [string] [Parameter(Mandatory=$true)] $LabName,
    
    # Name of the template repository connected to the lab
    [string] [Parameter(Mandatory=$true)] $RepositoryName,
    
    # Name of the template (folder name in the GitHub repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to pass to the template. Each parameter is prefixed with "-param_".
    # For example, if the template has a parameter named "TestVMName" with a value of "MyVMName",
    # the string in $Params is "-param_TestVMName MyVMName".
    # This convention allows the script to dynamically handle different templates.
    [Parameter(ValueFromRemainingArguments=$true)]
        $Params
    )
    
    # Sign in to Azure, or comment out this statement to completely automate environment creation.
    Connect-AzAccount
    
    # Select the subscription for your lab.  
    Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
    
    # Get the user ID to use later in the script.
    $UserId = $((Get-AzADUser -UserPrincipalName ((Get-AzContext).Account).Id).Id)
    
    # Get the lab location.
    $lab = Get-AzResource -ResourceType "Microsoft.DevTestLab/labs" -Name $LabName
    if ($lab -eq $null) { throw "Unable to find lab $LabName in subscription $SubscriptionId." }
    
    # Get information about the repository connected to your lab.
    $repository = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType 'Microsoft.DevTestLab/labs/artifactsources' `
        -ResourceName $LabName `
        -ApiVersion 2016-05-15 `
        | Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($repository -eq $null) { throw "Unable to find repository $RepositoryName in lab $LabName." }
    
    # Get information about the ARM template base for the environment.
    $template = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType "Microsoft.DevTestLab/labs/artifactSources/armTemplates" `
        -ResourceName "$LabName/$($repository.Name)" `
        -ApiVersion 2016-05-15 `
        | Where-Object { $TemplateName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($template -eq $null) { throw "Unable to find template $TemplateName in lab $LabName." }
    
    # Build the template parameters by using parameter names and values.
    $parameters = Get-Member -InputObject $template.Properties.contents.parameters -MemberType NoteProperty | Select-Object -ExpandProperty Name
    $templateParameters = @()
    
    # Extract the custom parameters from $Params and format them as name/value pairs.
    $Params | ForEach-Object {
        if ($_ -match '^-param_(.*)' -and $Matches[1] -in $parameters) {
            $name = $Matches[1]                
        } elseif ( $name ) {
            $templateParameters += @{ "name" = "$name"; "value" = "$_" }
            $name = $null #reset name variable
        }
    }
    
    # Create an object to hold the necessary template properties.
    $templateProperties = @{ "deploymentProperties" = @{ "armTemplateId" = "$($template.ResourceId)"; "parameters" = $templateParameters }; }
    
    # Deploy the environment in your lab by using the New-AzResource command.
    New-AzResource -Location $Lab.Location `
        -ResourceGroupName $lab.ResourceGroupName `
        -Properties $templateProperties `
        -ResourceType 'Microsoft.DevTestLab/labs/users/environments' `
        -ResourceName "$LabName/$UserId/$EnvironmentName" `
        -ApiVersion '2016-05-15' -Force
    
    Write-Output "Environment $EnvironmentName completed."
    
  3. Betiği kullanmak için aşağıdaki komutu çalıştırın. Komutundaki yer tutucuları kendi laboratuvar değerlerinizle güncelleştirin.

    .\DeployLabEnvironment.ps1 `
        -SubscriptionId "<Subscription ID>" `
        -LabName "<LabName>" `
        -ResourceGroupName "<LabResourceGroupName>" `
        -RepositoryName "<TemplateRepoName>" `
        -TemplateName "<TemplateFolderName>" `
        -EnvironmentName "<EnvironmentName>"