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

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

Seçeneğinizi belirleyin

Bu makaleye devam etmeden önce, bir 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, bir şablonu doğrudan bir depodan dağıtmak istediğinizde işe yarar. Bu seçenek bu makalede ele alınmamaktadır, bunun yerine Azure Pipelines Ile ARM şablonlarının sürekli tümleştirmesindeaçıklanmıştır. GitHub deponuzdan bir ş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. Yerel testleri çalıştırırken kullandığınız betiği kullanabilmeniz için, bu seçeneğin geliştirme yaşam döngüsü genelinde tutarlılık sağlama avantajı vardır. Betiğinizin şablonu dağıtır ancak parametre olarak kullanılacak değerleri alma gibi başka işlemler de gerçekleştirebilir. Bu seçenek bu makalede gösterilmektedir. Azure PowerShell görevi' ne bakın.

    Visual Studio, bir PowerShell betiği içeren Azure kaynak grubu projesi sağlar. Betik aşamaları, projenizdeki Kaynak Yöneticisi erişebileceği bir depolama hesabına ait yapıtlardan oluşur. Artifacts, projenizdeki bağlantılı şablonlar, betikler ve uygulama ikilileri gibi öğelerdir. Projeden betiği kullanmaya devam etmek istiyorsanız, bu makalede gösterilen PowerShell betiği görevini kullanın.

  • Görevleri kopyalamak ve dağıtmak için görevler ekleyin. Bu seçenek, proje betiğine uygun bir alternatif sağlar. Ardışık düzende iki görev yapılandırırsınız. Bir görev yapıtları erişilebilir bir konuma göre aşamalar. Diğer görev, şablonu o konumdan dağıtır. Bu seçenek bu makalede gösterilmektedir. Bkz. görevleri kopyalama ve dağıtma.

Projenizi hazırlama

bu makalede, ARM şablonunuz ve Azure DevOps kuruluşunuzun işlem hattını oluşturmak için hazırlandığı varsayılır. Aşağıdaki adımlarda, nasıl hazırlandığınızı nasıl yapacağınız nasıl emin olduğunuz gösterilmektedir:

  • Azure DevOps kuruluşunuz var. Yoksa, ücretsiz olarak bir tane oluşturun. takımınızın zaten bir Azure DevOps organizasyonu varsa, kullanmak istediğiniz Azure DevOps projenin yöneticisi olduğunuzdan emin olun.

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

  • Projeniz için altyapıyı tanımlayan bir ARM şablonunuz vardır.

İşlem hattı oluşturma

  1. Daha önce bir işlem hattı eklemediyseniz yeni bir işlem hattı oluşturmanız gerekir. Azure DevOps kuruluşunuzdan Pipelines ve yeni işlem hattı' nı seçin.

    Yeni işlem hattı Ekle

  2. Kodunuzun depolanacağı yeri belirtin. aşağıdaki görüntüde Git Azure Repos seçme gösterilmektedir.

    Kod kaynağı seç

  3. Bu kaynaktan, projenizin koduna sahip depoyu seçin.

    Depo seçin

  4. Oluşturulacak işlem hattının türünü seçin. Başlatıcı işlem hattı' nı seçebilirsiniz.

    İşlem hattı seçin

Azure PowerShell bir görev ya da dosya kopyala ve görevleri dağıt 'a hazırsınız.

Azure PowerShell görevi

Bu bölümde, projenizde PowerShell betiğini çalıştıran tek bir görev kullanılarak sürekli dağıtımın nasıl yapılandırılacağı 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örevioluş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 ayarladığınızda AzurePowerShell@5 , işlem hattı az Modulekullanır. Betiğinizdeki Azurere modülünü kullanıyorsanız, görevi olarak ayarlayın AzurePowerShell@3 .

steps:
- task: AzurePowerShell@3

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

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

İçin scriptPath , işlem hattı dosyasından betiğe göreli yol belirtin. Yolu görmek için deponuza bakabilirsiniz.

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

İçinde ScriptArguments , betiğinizi gereken tüm parametreleri sağlayın. Aşağıdaki örnek, bir komut dosyası için bazı parametreleri gösterir, 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ızla ilgili özete dönün ve durumu izleyin.

Sonuçları görüntüleme

Görevlerle ilgili ayrıntıları görmek için şu anda çalışan ardışık düzeni seçebilirsiniz. Tamamlandığında, her adımın sonuçlarını görürsünüz.

Görevleri Kopyala ve dağıt

Bu bölümde, iki görevi kullanarak sürekli dağıtımın nasıl yapılandırılacağı gösterilmektedir. İlk görev yapıtları bir depolama hesabına göre aşamalar ve ikinci görev şablonu dağıtır.

dosyaları bir depolama hesabına kopyalamak için, hizmet bağlantısı için hizmet sorumlusuna Depolama blob verileri katılımcısı veya Depolama blob veri sahibi rolü atanmalıdır. Daha fazla bilgi için bkz. AzCopy ile çalışmaya başlama.

Aşağıdaki YAML, Azure dosya kopyalama görevinigöstermektedir.

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çirmek için birkaç bölümü vardır. , İşlem SourcePath hattı dosyasına göre yapıtların konumunu gösterir.

SourcePath: '<path-to-artifacts>'

İç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 üzere kullanmak istediğiniz depolama hesabının ve kapsayıcının adlarını belirtin. Depolama hesabının mevcut olması gerekir.

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

Dosya Kopyala görevini oluşturduktan sonra, hazırlanan ş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örevinigöstermektedir:

- 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 incelemesinin birkaç bölümü vardır.

  • deploymentScope:, Ve seçeneklerinden dağıtım kapsamını seçin: Management Group , Subscription , ve 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 şablon için bağlantı sağlayın. Değer ayarlanırken, dosya kopyalama görevinden döndürülen değişkenleri kullanın. Aşağıdaki örnek, üzerinde mainTemplate.jsadlı bir şablona bağlantı sağlar. Dosya kopyalama görevinin dosyayı kopyalandığı konum olduğu için şablon adlı klasör dahil edilmiştir. İşlem hattınızda şablonunuzun yolunu ve şablonunuzun adını belirtin.

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

İşlem hattınızda şö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. Derleme işlem hattınızla ilgili özete dönün ve durumu izleyin.

Sonraki adımlar