Latihan - Menggunakan modul dari registri Anda

Selesai

Pada latihan sebelumnya, Anda menerbitkan CDN dan modul situs web ke registri perusahaan mainan Anda. Sekarang, Anda ingin menunjukkan kepada tim yang mengembangkan anjing mainan cara menggunakan modul untuk penyebarannya sendiri.

Dalam latihan ini, Anda akan:

  • Buat file Bicep yang menyertakan modul dari registri pribadi Anda.
  • Tambahkan referensi ke modul di registri.
  • Bangun dan periksa file Bicep untuk memahami cara kerja proses pemulihan modul.
  • Beralih ke menggunakan alias registri.
  • Sebarkan file Bicep Anda ke Azure.

Membuat file Bicep

  1. Di Visual Studio Code, buat file baru bernama main.bicep.

  2. Simpan file kosong sehingga Visual Studio Code dapat memuat alat Bicep.

    Anda dapat memilih File>Simpan Sebagai atau memilih Ctrl+S di Windows (⌘+S di macOS). Ingat tempat Anda menyimpan file. Misalnya, Anda mungkin ingin membuat folder templat untuk menyimpan filenya.

Tambahkan modul ke file Bicep

  1. Dalam file main.bicep, tambahkan parameter dan variabel berikut:

    @description('The Azure region into which the resources should be deployed.')
    param location string = 'westus3'
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-dog-plan'
    
  2. Di bawah parameter dan variabel, gunakan kode berikut untuk menambahkan modul situs web dari registri Anda. Ganti YOUR_CONTAINER_REGISTRY_NAME dengan nama registri pribadi Anda.

    module website 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    Perhatikan bahwa Bicep menunjukkan garis berlekuk-lekuk merah di bawah pengidentifikasi modul saat Anda mulai mengetik, tetapi kemudian garis berlekuk-lekuk itu hilang. Perilaku ini terjadi karena ekstensi Bicep untuk Visual Studio Code membaca modul dari registri dan menyimpannya ke sistem file lokal Anda.

  3. Di bawah modul yang Anda buat, gunakan kode berikut untuk menambahkan modul CDN dari registri Anda. Ganti YOUR_CONTAINER_REGISTRY_NAME dengan nama registri pribadi Anda.

    module cdn 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. Simpan file.

Membangun dan memeriksa file Bicep Anda

Di sini, Anda membuat file Bicep ke template JSON ARM. Anda biasanya tidak perlu melakukan build, tetapi sangat membantu ketika Anda mempelajari cara kerja modul.

  1. Di terminal Visual Studio Code, jalankan perintah berikut untuk membuat file Bicep menjadi file JSON:

    az bicep build --file main.bicep
    

    Bicep membuat file bernama main.json dalam folder yang sama dengan file main.bicep.

  2. Buka file main.json.

    Perhatikan bahwa di bagian resources dari templat JSON ARM, mulai dari sekitar baris 134, beberapa sumber memiliki jenis Microsoft.Resources/deployments. Sumber daya ini mewakili penyebaran modul yang ditentukan dalam modul yang Anda tambahkan dari registri.

  1. Di terminal Visual Studio Code, jalankan perintah berikut untuk membuat file Bicep menjadi file JSON:

    bicep build main.bicep
    

    Bicep membuat file bernama main.json dalam folder yang sama dengan file main.bicep.

  2. Buka file main.json.

    Perhatikan bahwa di bagian resources dari templat JSON ARM, mulai dari sekitar baris 134, beberapa sumber memiliki jenis Microsoft.Resources/deployments. Sumber daya ini mewakili penyebaran modul yang ditentukan dalam modul yang Anda tambahkan dari registri.

Membuat alias registri

Anda memutuskan untuk membuat alias registri sebagai ganti menyematkan URL registri di file Bicep Anda. Pendekatan ini membuat file Bicep lebih mudah dibaca.

  1. Di Visual Studio Code, buat file baru bernama bicepconfig.json. Buat dalam folder yang sama dengan file main.bicep.

  2. Tempelkan kode berikut ke dalam file bicepconfig.json. Ganti YOUR_CONTAINER_REGISTRY_NAME dengan nama registri pribadi Anda.

    {
      "moduleAliases": {
        "br": {
          "ToyCompanyRegistry": {
            "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io"
          }
        }
      }
    }
    
  3. Simpan file.

Menggunakan alias registri

Di sini, Anda memperbarui file Bicep Anda untuk menggunakan alias registri sebagai ganti merujuk langsung ke registri.

  1. Membuka file main.bicep.

  2. Temukan definisi modul website, dan ubah definisi untuk menyertakan alias registri:

    module website 'br/ToyCompanyRegistry:website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    Tip

    Pastikan untuk mengubah awal jalur modul dari br: ke br/. Selain itu, setelah ToyCompanyRegistry, ubah karakter garis miring (/) menjadi titik dua (:).

  3. Buat perubahan serupa pada modul cdn:

    module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. Simpan file.

Memverifikasi file Bicep Anda

Setelah Anda menyelesaikan semua perubahan sebelumnya, file main.bicep Anda akan terlihat seperti contoh ini:

@description('The Azure region into which the resources should be deployed.')
param location string = 'westus3'

@description('The name of the App Service app.')
param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'

@description('The name of the App Service plan SKU.')
param appServicePlanSkuName string = 'F1'

var appServicePlanName = 'toy-dog-plan'

module website 'br/ToyCompanyRegistry:website:v1' = {
  name: 'toy-dog-website'
  params: {
    appServiceAppName: appServiceAppName
    appServicePlanName: appServicePlanName
    appServicePlanSkuName: appServicePlanSkuName
    location: location
  }
}

module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
  name: 'toy-dog-cdn'
  params: {
    httpsOnly: true
    originHostName: website.outputs.appServiceAppHostName
  }
}

Jika file tidak cocok, salin contoh atau sesuaikan template Anda agar sesuai dengan contoh.

Sebarkan ke Azure

Di terminal Visual Studio Code, sebarkan templat ke Azure dengan menjalankan perintah berikut ini. Proses ini dapat memakan waktu beberapa menit untuk menyelesaikan penyebaran yang berhasil.

az deployment group create \
   --template-file main.bicep
New-AzResourceGroupDeployment -TemplateFile main.bicep

Verifikasi penyebaran

  1. Buka portal Microsoft Azure dan pastikan Anda berada di langganan kotak pasir:

    1. Pilih avatar Anda di sudut kanan atas halaman.
    2. Lalu pilih Beralih direktori. Dalam daftar, pilih direktori Microsoft Learn Sandbox.
  2. Di panel sebelah kiri, pilih Grup sumber daya.

  3. Pilih [nama grup sumber daya kotak pasir].

  4. Di menu kiri, pilih Penyebaran.

    Screenshot of the Azure portal that shows the resource group, with the Deployments menu item highlighted.

    Perhatikan bahwa tiga penyebaran terdaftar:

    • utama mewakili penyebaran file Bicep induk Anda.
    • toy-dog-cdn dan toy-dog-website mewakili modul yang Anda sertakan dalam file main.bicep Anda.
  5. Pilih penyebaran utama dan perluas detail Penyebaran.

    Perhatikan bahwa kedua modul terdaftar, dan bahwa jenisnya ditampilkan sebagai Microsoft.Resources/deployments. Modul toy-dog-website dicantumkan dua kali karena outputnya juga direferensikan di dalam templat.

    Screenshot of the Azure portal that shows the details of the main deployment.

  6. Pilih penyebaran toy-dog-cdn dan toy-dog-website, dan tinjau sumber daya yang disebarkan di masing-masing penyebaran. Perhatikan bahwa penyebaran tersebut sesuai dengan sumber daya yang ditentukan dalam modul masing-masing.