Hızlı Başlangıç: Azure'a Linux web uygulaması dağıtmak için ARM şablonu kullanma

Azure DevOps Services

MySQL ile bir Linux web uygulaması dağıtarak Azure Resource Manager şablonlarını (ARM şablonları) kullanmaya başlayın. ARM şablonları, yapılandırmanızı koda kaydetmeniz için size bir yol sağlar. ARM şablonu kullanmak, kod olarak altyapı ve iyi bir DevOps uygulaması örneğidir.

ARM şablonu projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Bildirim temelli sözdiziminde, dağıtım oluşturmak için programlama komutlarının dizisini yazmadan amaçladığınız dağıtımı ifade edersiniz.

Azure kaynaklarını dağıtmak için JSON veya Bicep söz dizimlerini kullanabilirsiniz. Şablonlar için JSON ile Bicep arasındaki fark hakkında daha fazla bilgi edinin.

Önkoşullar

Başlamadan önce şunları yapmanız gerekir:

Kodu alma

GitHub'da bu deponun çatalını oluşturun:

https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql

Şablonu gözden geçirme

Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonlarından alınmıştır.

Şablon birkaç kaynak tanımlar:

İşlem hattınızı oluşturma ve şablonunuzu dağıtma

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin. Henüz bir projeniz yoksa bir proje oluşturun.

  2. İşlem Hatları'na gidin ve İşlem Hattı Oluştur'u seçin.

  3. Kaynak kodunuzun konumu olarak GitHub'ı seçin.

    Not

    Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin.

  4. Depo listesi görüntülendiğinde öğesini seçin yourname/azure-quickstart-templates/.

    Not

    Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilebilirsiniz. Öyleyse Onayla ve yükle'yi seçin.

  5. Yapılandır sekmesi görüntülendiğinde öğesini seçin Starter pipeline.

  6. İşlem hattınızın içeriğini şu kodla değiştirin:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Üç değişken oluşturun: siteName, administratorLoginve adminPass. adminPass gizli dizi değişkeni olmalıdır.

    • Değişkenler'i seçin.
    • + Üç değişken eklemek için işaretini kullanın. oluşturduğunuzda adminPassBu değeri gizli tut'u seçin.
    • İşiniz bittiğinde Kaydet'e tıklayın.
    Değişken Değer Gizli?
    Sitename mytestsite No
    adminUser fabrikam No
    adminPass Fqdn:5362! Yes
  8. Gizli dizi değişkenini $(adminPass) Azure Kaynak Grubu Dağıtımı görevinizde kullanılabilir olacak şekilde eşleyin. YAML dosyanızın üst kısmında ile eşleyin $(adminPass)$(ARM_PASS).

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. Dosyaları Kopyala görevini YAML dosyasına ekleyin. Projeyi kullanacaksınız 101-webapp-linux-managed-mysql . Daha fazla bilgi için bkz. MySQL için Azure veritabanı deposuyla Linux üzerinde Web uygulaması derleme .

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: CopyFiles@2
      inputs:
        SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
  10. Azure Kaynak Grubu Dağıtım görevini ekleyin ve yapılandırın.

    Görev hem Dosyaları Kopyala göreviyle oluşturduğunuz yapıta hem de işlem hattı değişkenlerinize başvurur. Görevinizi yapılandırırken bu değerleri ayarlayın.

    • Dağıtım kapsamı (deploymentScope): Dağıtım kapsamını olarak Resource Groupayarlayın. Dağıtımınızı bir yönetim grubuna, Azure aboneliğine veya kaynak grubuna hedefleyebilirsiniz.
    • Azure Resource Manager bağlantısı (azureResourceManagerConnection): Azure Resource Manager hizmet bağlantınızı seçin. Yeni hizmet bağlantısını yapılandırmak için listeden Azure aboneliğini seçin ve Yetkile'ye tıklayın. Diğer ayrıntılar için bkz. Microsoft Azure'a bağlanma
    • Subscription (subscriptionId): Dağıtımın gitmesi gereken aboneliği seçin.
    • Eylem (eylem): Yeni bir kaynak grubu oluşturmak veya var olan bir kaynak grubunu güncelleştirmek için olarak ayarlayın Create or update resource group .
    • Kaynak grubu: Yeni kaynak grubunuzu adlandırmakARMPipelinesLAMP-rg için olarak ayarlayın. Bu mevcut bir kaynak grubuysa, güncelleştirilir.
    • Konum(konum): Kaynak grubunun dağıtılacağı konum. En yakın konumunuza ayarlayın (örneğin, Batı ABD). Kaynak grubu aboneliğinizde zaten varsa, bu değer yoksayılır.
    • Şablon konumu (templateLocation): olarak Linked artifactayarlayın. Bu, şablonunuzun ve parametre dosyalarının konumudur.
    • Şablon (csmFile): olarak $(Build.ArtifactStagingDirectory)/azuredeploy.jsonayarlayın. Bu, ARM şablonunun yoludur.
    • Şablon parametreleri (csmParametersFile): olarak $(Build.ArtifactStagingDirectory)/azuredeploy.parameters.jsonayarlayın. Bu, ARM şablonunuzun parametre dosyasının yoludur.
    • Şablon parametrelerini geçersiz kıl (overrideParameters): Daha önce oluşturduğunuz değişkenleri kullanmak için olarak ayarlayın -siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS) . Bu değerler, şablon parametreleri dosyanızda ayarlanan parametrelerin yerini alır.
    • Dağıtım modu (deploymentMode): Kaynakların dağıtılma şekli. Incremental olarak ayarlayın. Artımlı, ARM şablonunda olmayan ve değerinden Completedaha hızlı olan kaynakları tutar. Validate modu, dağıtmadan önce şablonla ilgili sorunları bulmanıza olanak tanır.
    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: CopyFiles@2
      inputs:
        SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: AzureResourceManagerTemplateDeployment@3
      inputs:
        deploymentScope: 'Resource Group'
        azureResourceManagerConnection: '<your-resource-manager-connection>'
        subscriptionId: '<your-subscription-id>'
        action: 'Create Or Update Resource Group'
        resourceGroupName: 'ARMPipelinesLAMP-rg'
        location: '<your-closest-location>'
        templateLocation: 'Linked artifact'
        csmFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.json'
        csmParametersFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json'
        overrideParameters: '-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)'
        deploymentMode: 'Incremental'
    
  11. Şablonunuzu dağıtmak için Kaydet ve çalıştır'a tıklayın. İşlem hattı işi başlatılır ve aracınıza bağlı olarak birkaç dakika sonra iş durumu değerini göstermelidir Success.

Dağıtılan kaynakları gözden geçirme

  1. Kaynakların dağıtıldığını doğrulayın. Azure portal kaynak grubuna ARMPipelinesLAMP-rg gidin ve App Service, plan App Service ve sunucu kaynaklarını MySQL için Azure Veritabanı gördüğünüzden emin olun.

    Azure portal ARM şablonu kaynakları

    Azure CLI kullanarak kaynakları da doğrulayabilirsiniz.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Yeni sitenize gidin. olarak armpipelinetestsiteayarlarsanızsiteName, site konumunda https://armpipelinetestsite.azurewebsites.net/bulunur.

Kaynakları temizleme

Kaynakları silmek için ARM şablonu da kullanabilirsiniz. actionAzure Kaynak Grubu Dağıtımı görevinizdeki değeri olarak DeleteRGdeğiştirin. , , csmFile, csmParametersFileoverrideParametersve deploymentModeiçin girişleri templateLocationde kaldırabilirsiniz.

variables:
  ARM_PASS: $(adminPass)

trigger:
- none

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: CopyFiles@2
  inputs:
    SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
    Contents: '**'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: AzureResourceManagerTemplateDeployment@3
  inputs:
    deploymentScope: 'Resource Group'
    azureResourceManagerConnection: '<your-resource-manager-connection>'
    subscriptionId: '<your-subscription-id>'
    action: 'DeleteRG'
    resourceGroupName: 'ARMPipelinesLAMP-rg'
    location: ''<your-closest-location>'

Sonraki adımlar