ARM şablonlarından ortam oluşturma

Azure DevTest Labs ortamlarını kullanarak laboratuvarları birden fazla sanal makine (VM) ve platform olarak hizmet (PaaS) kaynaklarıyla kolayca ve tutarlı şekilde sunabilirsiniz. Bu makalede , Azure Resource Manager (ARM) şablonlarından DevTest Labs ortamlarının nasıl oluşturulacağı açıklanır. Bu yaklaşımı, SQL veritabanı arka uçuna sahip bir web uygulaması gibi çok katmanlı bir web uygulaması için bir laboratuvar oluşturmak için kullanın.

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.

Ö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.
  • Mevcut ARM şablonlarından DevTest Labs ortamları oluşturmak için, 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.

Şablon dağıtımı için abonelik iznlerini atama

Kuruluşunuz delege edilmiş şablon yönetimi için abonelik kapsamı izinleri gerektiriyorsa, abonelik kapsamında Azure Lab Services Katkı Sağlayıcı rolünü ata.

Important

DevTest Labs ortamı oluşturma için, laboratuvar kullanıcılarının laboratuvarda en az DevTest kullanıcı izinleri olması gerekir. Azure Lab Services katkıcı rolü, DevTest Labs laboratuvar düzeyindeki izinlerin yerini almıyor.

  1. Azure portalında aboneliğinizi açın.
  2. Erişim denetimi (IAM)>Rol ataması ekle'yi> seçin.
  3. Azure Lab Services Contributor için arama yapın ve seçin.
  4. Sonraki'yi seçin, kullanıcı, grup veya hizmet yöneticisini seçin ve ardından İncele + Ata'yı seçin.

En az ayrıcalıklı erişim için, yalnızca şablonunuz ve laboratuvar iş akışınızın gerektirdiği izinleri içeren özel bir rol kullanın, geniş abonelik hakları yerine.

Aşağıdaki özel rol DevTest Labs ortam oluşturma ve dağıtım görünürlüğüne erişimi sınırlar. Sadece şablonunuzun gerektirdiği işlemleri ekleyin.

{
    "Name": "DevTest Labs Environment Template Deployer",
    "Description": "Create and read DevTest Labs environments from approved ARM templates.",
    "Actions": [
        "Microsoft.Authorization/*/read",
        "Microsoft.DevTestLab/labs/read",
        "Microsoft.DevTestLab/labs/EnsureCurrentUserProfile/action",
        "Microsoft.DevTestLab/labs/CreateEnvironment/action",
        "Microsoft.DevTestLab/labs/artifactSources/armTemplates/read",
        "Microsoft.DevTestLab/labs/policySets/EvaluatePolicies/action",
        "Microsoft.DevTestLab/labs/users/environments/read",
        "Microsoft.DevTestLab/labs/users/environments/write",
        "Microsoft.Resources/deployments/read",
        "Microsoft.Resources/deployments/operations/read",
        "Microsoft.Resources/subscriptions/resourceGroups/read"
    ],
    "NotActions": [],
    "DataActions": [],
    "NotDataActions": [],
    "AssignableScopes": [
        "/subscriptions/<subscription-id>"
    ]
}

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. Bir şablon deposuna laboratuvar erişimini etkinleştirdiğinizde, laboratuvar kullanıcıları Azure portalında şablonları seçerek hızlıca ortamlar oluşturabilirler.

DevTest Labs genel ARM şablon deposu, SQL Database ile Web App ve Azure Service Fabric küme örnekleri gibi önceden yazılmış ortam şablonlarını 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ına oluşturdukları ortamlarda Okuyucu rolü verilir. 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, ortamlarına ait kaynak grubunda onlara Katkıda Bulunan rolünü atayın.

  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ırsanız, mevcut 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. Bir temel seç sayfasında, SQL Veritabanı ile Web Uygulaması'nı seçin.

    Azure DevTest Labs'taki mevcut ortam şablonlarından seçilen SQL Veritabanı ile Web Uygulamasını gösteren ekran görüntüsü.

  4. Ekle panelinde, bir Ortam adı girin ve web uygulaması ile SQL veritabanı kaynakları için diğer parametre ayarlarını yapılandırın.

    SQL Database ile Web App seçildiğini ve Azure DevTest Labs'ta ortam ayarlarını girdiğimi 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ın sağlanmasına hemen başlanır.

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ü.

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.

Özellikler ve mevcut eylemleri görmek için listeden bir kaynak seçin.

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