Mulai cepat: Menggunakan templat ARM untuk menyebarkan aplikasi web Linux ke Azure

Azure DevOps

Mulai menggunakan templat Azure Resource Manager (templat ARM) dengan menyebarkan aplikasi web Linux dengan MySQL. Templat ARM memberi Anda cara untuk menyimpan konfigurasi Anda dalam kode. Menggunakan templat ARM adalah contoh infrastruktur sebagai kode dan praktik DevOps yang baik.

Template ARM adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Template tersebut menggunakan sintaksis deklaratif. Dalam sintaksis deklaratif, Anda menguraikan penyebaran yang Anda maksudkan tanpa menulis urutan perintah pemrograman untuk membuat penyebaran tersebut.

Anda dapat menggunakan sintaks JSON atau Bicep untuk menyebarkan sumber daya Azure. Pelajari selengkapnya tentang perbedaan antara JSON dan Bicep untuk templat.

Prasyarat

Sebelum Anda mulai, Anda perlu:

Mendapatkan kode

Fork repositori ini di GitHub:

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

Meninjau templat

Templat yang digunakan di mulai cepat ini berasal dari Templat Mulai Cepat Azure.

Templat menentukan beberapa sumber daya:

Membuat alur Anda dan menyebarkan templat Anda

  1. Masuk ke organisasi Azure DevOps Anda dan arahkan ke proyek Anda. Buat proyek jika Anda belum memilikinya.

  2. Buka Alur, lalu pilih Buat Alur.

  3. Pilih GitHub sebagai lokasi kode sumber Anda.

    Catatan

    Anda dapat dialihkan ke GitHub untuk masuk. Jika demikian, masukkan informasi masuk GitHub Anda.

  4. Saat daftar repositori muncul, pilih yourname/azure-quickstart-templates/.

    Catatan

    Anda dapat dialihkan ke GitHub untuk menginstal aplikasi Azure Pipelines. Jika demikian, pilih Setujui dan instal.

  5. Saat tab Konfigurasi muncul, pilih Starter pipeline.

  6. Ganti konten alur Anda dengan kode ini:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Buat tiga variabel: siteName, administratorLogin, dan adminPass. adminPass harus menjadi variabel rahasia.

    • Pilih Variabel.
    • + Gunakan tanda untuk menambahkan tiga variabel. Saat Anda membuat adminPass, pilih Rahasiakan nilai ini.
    • Klik Simpan saat Anda selesai.
    Variabel Nilai Rahasia?
    siteName mytestsite Tidak
    adminUser fabrikam Tidak
    adminPass Fqdn:5362! Ya
  8. Petakan variabel $(adminPass) rahasia sehingga tersedia dalam tugas Penyebaran Grup Sumber Daya Azure Anda. Di bagian atas file YAML Anda, petakan $(adminPass) ke $(ARM_PASS).

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. Tambahkan tugas Salin File ke file YAML. Anda akan menggunakan proyek.101-webapp-linux-managed-mysql Untuk informasi selengkapnya, lihat Membangun aplikasi Web di Linux dengan repositori Azure database for MySQL untuk detail selengkapnya.

    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. Menambahkan dan mengonfigurasi tugas Penyebaran Grup Sumber Daya Azure .

    Tugas ini mereferensikan artefak yang Anda buat dengan tugas Salin File dan variabel alur Anda. Atur nilai-nilai ini saat mengonfigurasi tugas Anda.

    • Cakupan penyebaran (deploymentScope): Atur cakupan penyebaran ke Resource Group. Anda dapat menargetkan penyebaran ke grup manajemen, langganan Azure, atau grup sumber daya.
    • Koneksi azure Resource Manager (azureResourceManagerConnection): Pilih koneksi layanan Azure Resource Manager Anda. Untuk mengonfigurasi koneksi layanan baru, pilih langganan Azure dari daftar dan klik Otorisasi. Lihat Menyambungkan ke Microsoft Azure untuk detail selengkapnya
    • Langganan (subscriptionId): Pilih langganan tempat penyebaran harus pergi.
    • Tindakan (tindakan): Atur ke Create or update resource group untuk membuat grup sumber daya baru atau untuk memperbarui yang sudah ada.
    • Grup sumber daya: Atur keARMPipelinesLAMP-rg untuk memberi nama grup sumber daya baru Anda. Jika ini adalah grup sumber daya yang ada, grup sumber daya akan diperbarui.
    • Lokasi(lokasi): Lokasi untuk menyebarkan grup sumber daya. Atur ke lokasi terdekat Anda (misalnya, US Barat). Jika grup sumber daya sudah ada di langganan Anda, nilai ini akan diabaikan.
    • Lokasi templat (templateLocation): Atur ke Linked artifact. Ini adalah lokasi templat Anda dan file parameter.
    • Templat (csmFile): Atur ke $(Build.ArtifactStagingDirectory)/azuredeploy.json. Ini adalah jalur ke templat ARM.
    • Parameter templat (csmParametersFile): Atur ke $(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json. Ini adalah jalur ke file parameter untuk templat ARM Anda.
    • Mengambil alih parameter templat (overrideParameters): Atur ke -siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS) untuk menggunakan variabel yang Anda buat sebelumnya. Nilai-nilai ini akan menggantikan parameter yang ditetapkan dalam file parameter templat Anda.
    • Mode penyebaran (deploymentMode): Cara sumber daya harus disebarkan. Atur ke Incremental. Inkremental menyimpan sumber daya yang tidak ada dalam templat ARM dan lebih cepat daripada Complete. Validate mode memungkinkan Anda menemukan masalah dengan templat sebelum menyebarkan.
    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. Klik Simpan dan jalankan untuk menyebarkan templat Anda. Pekerjaan alur akan diluncurkan dan setelah beberapa menit, tergantung pada agen Anda, status pekerjaan harus menunjukkan Success.

Meninjau sumber daya yang disebarkan

  1. Verifikasi bahwa sumber daya yang disebarkan. ARMPipelinesLAMP-rg Buka grup sumber daya di portal Azure dan verifikasi bahwa Anda melihat sumber daya server App Service, App Service Plan, dan Azure Database for MySQL.

    Sumber daya templat ARM di portal Azure

    Anda juga dapat memverifikasi sumber daya menggunakan Azure CLI.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Buka situs baru Anda. Jika Anda mengatur siteName ke armpipelinetestsite, situs terletak di https://armpipelinetestsite.azurewebsites.net/.

Membersihkan sumber daya

Anda juga dapat menggunakan templat ARM untuk menghapus sumber daya. action Ubah nilai dalam tugas Penyebaran Grup Sumber Daya Azure Anda menjadi DeleteRG. Anda juga dapat menghapus input untuk templateLocation, , csmFile, csmParametersFileoverrideParameters, dan deploymentMode.

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

Langkah berikutnya