Aracılığıyla paylaş


ARM şablonlarını Azure Pipelines ile tümleştirme

Sürekli tümleştirme ve sürekli dağıtım (CI/CD) için Azure Resource Manager şablonlarını (ARM şablonları) Azure Pipelines ile tümleştirebilirsiniz. Bu makalede, Azure Pipelines ile şablonları dağıtmanın iki gelişmiş yolunu daha öğreneceksiniz.

Seçeneğinizi belirtin

Bu makaleye devam etmeden önce, işlem hattından ARM şablonu dağıtmaya yönelik farklı seçenekleri ele alalım.

  • ARM şablonu dağıtım görevini kullanın. Bu seçenek en kolay seçenektir. Bu yaklaşım, doğrudan bir depodan şablon dağıtmak istediğinizde çalışır. Bu seçenek bu makalede ele alınmıyor, bunun yerine ARM şablonlarının Azure Pipelines ile sürekli tümleştirmesi öğreticisinde ele alınmaktadır. GitHub deponuzdan şablon dağıtmak için ARM şablonu dağıtım görevinin nasıl kullanılacağını gösterir.

  • Azure PowerShell betiği çalıştıran görev ekleyin. Bu seçenek, yerel testleri çalıştırırken kullandığınız betiği kullanabileceğiniz için geliştirme yaşam döngüsü boyunca tutarlılık sağlama avantajına sahiptir. Betiğiniz şablonu dağıtır ancak parametre olarak kullanılacak değerleri alma gibi diğer işlemleri de gerçekleştirebilir. Bu seçenek bu makalede gösterilmiştir. Bkz. Azure PowerShell görevi.

    Visual Studio, PowerShell betiği içeren Azure Kaynak Grubu projesini sağlar. Betik, yapıtları projenizden Resource Manager'ın erişebileceği bir depolama hesabına aşamalar. Yapıtlar, projenizdeki bağlantılı şablonlar, betikler ve uygulama ikilileri gibi öğelerdir. Projedeki betiği kullanmaya devam etmek istiyorsanız, bu makalede gösterilen PowerShell betik görevini kullanın.

  • Görevleri kopyalamak ve dağıtmak için görevler ekleyin. Bu seçenek, proje betiğine uygun bir alternatif sunar. İşlem hattında iki görev yapılandırabilirsiniz. Bir görev yapıtları erişilebilir bir konuma aşamalar. Diğer görev, şablonu bu konumdan dağıtır. Bu seçenek bu makalede gösterilmiştir. Bkz. Görevleri kopyalama ve dağıtma.

Projenizi hazırlama

Bu makalede ARM şablonunuzun ve Azure DevOps kuruluşunuzun işlem hattı oluşturmaya hazır olduğu varsayılır. Aşağıdaki adımlarda hazır olduğunuzdan nasıl emin olduğunuz gösterilmektedir:

  • Azure DevOps kuruluşunuz var. Yoksa ücretsiz bir tane oluşturun. Ekibinizin zaten bir Azure DevOps kuruluşu varsa, kullanmak istediğiniz Azure DevOps projesinin yöneticisi olduğunuzdan emin olun.

  • Azure aboneliğinize bir hizmet bağlantısı yapılandırdıysanız. İşlem hattındaki görevler hizmet sorumlusunun kimliği altında yürütülür. Bağlantı oluşturma adımları için bkz . DevOps projesi oluşturma.

  • Projenizin altyapısını tanımlayan bir ARM şablonunuz var.

İşlem hattı oluşturma

  1. Daha önce işlem hattı eklemediyseniz yeni bir işlem hattı oluşturmanız gerekir. Azure DevOps kuruluşunuzda İşlem Hatları ve Yeni işlem hattı'yı seçin.

    Yeni işlem hattı ekle düğmesinin ekran görüntüsü

  2. Kodunuzun depolandığı yeri belirtin. Aşağıdaki görüntüde Azure Repos Git'in seçilmesi gösterilmektedir.

    Azure DevOps'ta kod kaynağını seçme işleminin ekran görüntüsü

  3. Bu kaynaktan projenizin kodunu içeren depoyu seçin.

    Azure DevOps'ta projenin deposunu seçme işleminin ekran görüntüsü

  4. Oluşturulacak işlem hattı türünü seçin. Starter işlem hattını seçebilirsiniz.

    Azure DevOps'ta oluşturulacak işlem hattı türünü seçme işleminin ekran görüntüsü

Bir Azure PowerShell görevi veya kopyalama dosyası ekleyip görevleri dağıtmaya hazırsınız.

Azure PowerShell görevi

Bu bölümde, projenizde PowerShell betiğini çalıştıran tek bir görev kullanarak sürekli dağıtımı yapılandırma işlemi gösterilmektedir. Şablon dağıtan bir PowerShell betiğine ihtiyacınız varsa bkz . Deploy-AzTemplate.ps1 veya Deploy-AzureResourceGroup.ps1.

Aşağıdaki YAML dosyası bir Azure PowerShell görevi oluşturur:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzurePowerShell@5
  inputs:
    azureSubscription: 'script-connection'
    ScriptType: 'FilePath'
    ScriptPath: './Deploy-AzTemplate.ps1'
    ScriptArguments: -Location 'centralus' -ResourceGroupName 'demogroup' -TemplateFile templates\mainTemplate.json
    azurePowerShellVersion: 'LatestVersion'

Görevi olarak AzurePowerShell@5ayarladığınızda işlem hattı Az modülünü kullanır. Betiğinizde AzureRM modülünü kullanıyorsanız, görevi olarak AzurePowerShell@3ayarlayın.

steps:
- task: AzurePowerShell@3

için azureSubscription, oluşturduğunuz hizmet bağlantısının adını belirtin.

inputs:
    azureSubscription: '<your-connection-name>'

için scriptPathişlem hattı dosyasından betiğinize göreli yolu sağlayın. Yolu görmek için deponuza bakabilirsiniz.

ScriptPath: '<your-relative-path>/<script-file-name>.ps1'

içinde ScriptArguments, betiğinizin gerektirdiği parametreleri sağlayın. Aşağıdaki örnekte bir betik için bazı parametreler gösterilmektedir, ancak betiğinizin parametrelerini özelleştirmeniz gerekir.

ScriptArguments: -Location 'centralus' -ResourceGroupName 'demogroup' -TemplateFile templates\mainTemplate.json

Kaydet'i seçtiğinizde derleme işlem hattı otomatik olarak çalıştırılır. Derleme işlem hattınızın özetine dönün ve durumunu izleyin.

Azure DevOps'ta işlem hattı sonuçları görünümünün ekran görüntüsü

Görevlerle ilgili ayrıntıları görmek için çalışmakta olan işlem hattını seçebilirsiniz. Tamamlandığında, her adımın sonuçlarını görürsünüz.

Görevleri kopyalama ve dağıtma

Bu bölümde, iki görev kullanarak sürekli dağıtımı yapılandırma gösterilmektedir. İlk görev yapıtları bir depolama hesabına, ikinci görev ise şablonu dağıtır.

Dosyaları depolama hesabına kopyalamak için hizmet bağlantısının hizmet sorumlusuna Depolama Blob Veri Katkıda Bulunanı veya Depolama Blob Veri Sahibi rolü atanmalıdır. Daha fazla bilgi için bkz . AzCopy'yi kullanmaya başlama.

Aşağıdaki YAML, Azure dosya kopyalama görevini gösterir.

trigger:
- master

pool:
  vmImage: 'windows-latest'

steps:
- task: AzureFileCopy@4
  inputs:
    SourcePath: 'templates'
    azureSubscription: 'copy-connection'
    Destination: 'AzureBlob'
    storage: 'demostorage'
    ContainerName: 'projecttemplates'
  name: AzureFileCopy

Bu görevin ortamınız için gözden geçirmeniz gereken birkaç bölümü vardır. , SourcePath yapıtların işlem hattı dosyasına göre konumunu gösterir.

SourcePath: '<path-to-artifacts>'

için azureSubscription, oluşturduğunuz hizmet bağlantısının adını belirtin.

azureSubscription: '<your-connection-name>'

Depolama ve kapsayıcı adı için, yapıtları depolamak için kullanmak istediğiniz depolama hesabının ve kapsayıcının adlarını belirtin. Depolama hesabı mevcut olmalıdır.

storage: '<your-storage-account-name>'
ContainerName: '<container-name>'

Dosya kopyalama görevini oluşturduktan sonra, hazırlanmış şablonu dağıtmak için görevi eklemeye hazırsınız demektir.

Aşağıdaki YAML, Azure Resource Manager şablonu dağıtım görevini gösterir:

- task: AzureResourceManagerTemplateDeployment@3
  inputs:
    deploymentScope: 'Resource Group'
    azureResourceManagerConnection: 'copy-connection'
    subscriptionId: '00000000-0000-0000-0000-000000000000'
    action: 'Create Or Update Resource Group'
    resourceGroupName: 'demogroup'
    location: 'West US'
    templateLocation: 'URL of the file'
    csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
    csmParametersFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.parameters.json$(AzureFileCopy.StorageContainerSasToken)'
    deploymentMode: 'Incremental'
    deploymentName: 'deploy1'

Bu görevin daha ayrıntılı olarak gözden geçirilmesi gereken birkaç bölümü vardır.

  • deploymentScope: , ve seçeneklerinden dağıtım kapsamını seçin: Management Group, Subscriptionve Resource Group. Kapsamlar hakkında daha fazla bilgi edinmek için bkz . Dağıtım kapsamları.

  • azureResourceManagerConnection: Oluşturduğunuz hizmet bağlantısının adını belirtin.

  • subscriptionId: Hedef abonelik kimliğini belirtin. Bu özellik yalnızca Kaynak Grubu dağıtım kapsamı ve abonelik dağıtım kapsamı için geçerlidir.

  • resourceGroupName ve location: Dağıtmak istediğiniz kaynak grubunun adını ve konumunu belirtin. Görev, mevcut değilse kaynak grubunu oluşturur.

    resourceGroupName: '<resource-group-name>'
    location: '<location>'
    
  • csmFileLink: Hazırlanan şablonun bağlantısını sağlayın. Değeri ayarlarken, dosya kopyalama görevinden döndürülen değişkenleri kullanın. Aşağıdaki örnek, mainTemplate.json adlı bir şablona bağlanır. Templates adlı klasör, dosya kopyalama görevinin dosyayı kopyaladığı klasör olduğundan eklenir. İşlem hattınızda, şablonunuzun yolunu ve şablonunuzun adını belirtin.

    csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
    

İşlem hattınız şöyle görünür:

trigger:
- master

pool:
  vmImage: 'windows-latest'

steps:
- task: AzureFileCopy@4
  inputs:
    SourcePath: 'templates'
    azureSubscription: 'copy-connection'
    Destination: 'AzureBlob'
    storage: 'demostorage'
    ContainerName: 'projecttemplates'
  name: AzureFileCopy
- task: AzureResourceManagerTemplateDeployment@3
  inputs:
    deploymentScope: 'Resource Group'
    azureResourceManagerConnection: 'copy-connection'
    subscriptionId: '00000000-0000-0000-0000-000000000000'
    action: 'Create Or Update Resource Group'
    resourceGroupName: 'demogroup'
    location: 'West US'
    templateLocation: 'URL of the file'
    csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
    csmParametersFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.parameters.json$(AzureFileCopy.StorageContainerSasToken)'
    deploymentMode: 'Incremental'
    deploymentName: 'deploy1'

Kaydet'i seçtiğinizde derleme işlem hattı otomatik olarak çalıştırılır. İşler çerçevesinin altında İş'i seçerek iş durumunu görüntüleyin.

Sonraki adımlar

  • İşlem hattında durum işlemini kullanmak için bkz . İşlem hattında What-If ile ARM şablonlarını test etme.
  • GitHub Actions ile ARM şablonlarını kullanma hakkında bilgi edinmek için bkz . GitHub Actions kullanarak Azure Resource Manager şablonlarını dağıtma.