Latihan - Otorisasi perwakilan layanan Anda untuk penyebaran

Selesai

Pada latihan sebelumnya, Anda membuat perwakilan layanan untuk alur penyebaran situs web Anda, dan Anda menguji bahwa Anda dapat masuk menggunakan kuncinya. Sekarang Anda siap untuk memberikan akses perwakilan layanan ke lingkungan Azure Anda. Dalam latihan ini, Anda akan membuat penetapan peran untuk perwakilan layanan, lalu menyebarkan file Bicep menggunakan perwakilan layanan.

Selama proses tersebut, Anda akan:

  • Masuk sebagai akun pengguna Anda sendiri.
  • Membuat grup sumber daya untuk situs web perusahaan Anda.
  • Membuat penetapan peran untuk mengizinkan perwakilan layanan menyebarkan sumber daya ke grup sumber daya.
  • Masuk sebagai perwakilan layanan dan menyebarkan file Bicep yang membuat sumber daya situs web perusahaan Anda.
  • Verifikasi penyebaran.
  • Membersihkan grup sumber daya dan perwakilan layanan.

Masuk sebagai akun pengguna Anda

Pada latihan sebelumnya, Anda masuk menggunakan perwakilan layanan lalu keluar. Anda harus masuk kembali sebagai akun pengguna Anda sendiri sehingga Anda dapat mengikuti langkah selanjutnya dalam latihan ini.

  1. Di terminal Azure Cloud Shell (bash) Visual Studio Code, masuk ke Azure dengan menjalankan perintah berikut:

    az login
    
  2. Masuk ke akun Azure Anda melalui browser yang terbuka.

  1. Di terminal Azure Cloud Shell (PowerShell) Visual Studio Code, masuk ke Azure dengan menjalankan perintah berikut:

    Connect-AzAccount
    
  2. Masuk ke akun Azure Anda melalui browser yang terbuka.

Buat grup sumber daya

Sekarang Anda akan membuat grup sumber daya untuk memuat sumber daya situs web perusahaan mainan.

  1. Jalankan perintah Azure CLI ini di terminal Visual Studio Code untuk membuat grup sumber daya:

    az group create --name ToyWebsite --location eastus
    
  2. Lihatlah output JSON dari perintah sebelumnya. Ini termasuk properti bernama id, yang merupakan ID grup sumber daya. Salin ini di tempat yang aman. Anda akan menggunakannya segera.

  1. Jalankan perintah Azure PowerShell ini di terminal Visual Studio Code untuk membuat grup sumber daya:

    New-AzResourceGroup -Name ToyWebsite -Location eastus
    
  2. Lihatlah output dari perintah sebelumnya. Ini termasuk properti bernama ResourceId, yang merupakan ID grup sumber daya. Salin ini di tempat yang aman. Anda akan menggunakannya segera.

Membuat penetapan peran

Untuk alur penyebaran situs web Anda, Anda memutuskan untuk membuat penetapan peran dengan detail berikut:

  • Penerima tugas: Perwakilan layanan yang Anda buat di latihan sebelumnya.
  • Peran: Kontributor peran bawaan.
  • Cakupan: Grup sumber daya yang Anda buat di langkah sebelumnya.

Jalankan perintah Azure CLI berikut di terminal Visual Studio Code untuk membuat penetapan peran. Ganti tempat penampung dengan nilai yang Anda salin sebelumnya.

az role assignment create \
  --assignee APPLICATION_ID \
  --role Contributor \
  --scope RESOURCE_GROUP_ID \
  --description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."

Jalankan perintah Azure CLI berikut di terminal Visual Studio Code untuk membuat penetapan peran. Ganti tempat penampung dengan nilai yang Anda salin sebelumnya.

New-AzRoleAssignment `
  -ApplicationId APPLICATION_ID `
  -RoleDefinitionName Contributor `
  -Scope RESOURCE_GROUP_ID `
  -Description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."

Membuat file Bicep

Anda sebelumnya membuat file Bicep yang menyebarkan sumber daya situs web Anda. Di sini, Anda menyimpan file ini sehingga Anda dapat mengujinya menggunakan perwakilan layanan.

  1. Buat file baru yang disebut main.bicep.

  2. Tambahkan konten berikut ke file main.bicep. Anda akan segera menyebarkan templat.

    @description('The Azure region into which the resources should be deployed.')
    param location string = resourceGroup().location
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toywebsite${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-website-plan'
    var applicationInsightsInstanceName = 'toy-website-insights'
    
    resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource applicationInsightsInstance 'Microsoft.Insights/components@2018-05-01-preview' = {
      name: applicationInsightsInstanceName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2020-06-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsightsInstance.properties.InstrumentationKey
            }
            {
              name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
              value: applicationInsightsInstance.properties.ConnectionString
            }
          ]
        }
      }
    }
    
  3. Simpan perubahan pada file. Anda dapat memilih File>Simpan Sebagai atau pilih Ctrl+S untuk Windows (⌘+S untuk macOS). Pastikan Anda mengingat di mana Anda menyimpan file tersebut. Misalnya, Anda mungkin ingin membuat folder skrip untuk menyimpan file-nya.

Menyebarkan file Bicep menggunakan perwakilan layanan

Saat ini Anda tidak memiliki alur penyebaran, jadi Anda akan menyimulasikan apa yang dilakukan alur untuk menyebarkan file Bicep Anda.

  1. Jalankan perintah Azure CLI berikut di terminal Visual Studio Code untuk masuk menggunakan info masuk perwakilan layanan. Ganti tempat penampung dengan nilai yang Anda salin di latihan sebelumnya.

    az login --service-principal \
      --username APPLICATION_ID \
      --password SERVICE_PRINCIPAL_KEY \
      --tenant TENANT_ID
    
  2. Sebarkan file Bicep dengan menjalankan perintah Azure CLI berikut:

    az deployment group create \
      --resource-group ToyWebsite \
      --template-file main.bicep
    

    Penyebaran mungkin memerlukan satu atau dua menit untuk selesai, lalu Anda akan melihat penyebaran yang berhasil.

  1. Jalankan perintah Azure PowerShell berikut di terminal Visual Studio Code untuk meminta info masuk perwakilan layanan dengan aman. Gunakan kunci dan ID aplikasi perwakilan layanan dari latihan sebelumnya untuk masing-masing nama pengguna dan kata sandi.

    $credential = Get-Credential
    
  2. Jalankan perintah Azure PowerShell berikut di terminal Visual Studio Code untuk masuk menggunakan info masuk perwakilan layanan. Ganti tempat penampung TENANT_ID dengan nilai yang Anda salin sebelumnya.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. Sebarkan file Bicep dengan menjalankan perintah Azure PowerShell berikut:

    New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
    

    Penyebaran mungkin memerlukan satu atau dua menit untuk selesai, lalu Anda akan melihat penyebaran yang berhasil.

Verifikasi penyebaran

Gunakan portal Azure untuk memeriksa sumber daya yang Anda sebarkan dan untuk memeriksa hasil penyebaran.

  1. Buka portal Microsoft Azure.

  2. Di panel kiri, pilih Grup sumber daya.

  3. Pilih ToyWebsite.

  4. Pilih Penyebaran untuk melihat penyebaran yang berhasil.

    Screenshot of the Azure portal resource group Deployments pane, displaying the successful deployment.

    Anda mungkin juga melihat penyebaran bernama Failure-Anomalies-Alert-Rule-Deployment. Application Insights membuat penyebaran ini secara otomatis.

  5. Pilih penyebaran utama untuk melihat sumber daya apa yang disebarkan, lalu perluas Detail penyebaran.

    Dalam kasus ini, paket App Service, aplikasi, dan instans Application Insights akan dicantumkan.

    Screenshot of the Azure portal deployments overview pane for the main deployment, with an App Service plan and app, and an Application Insights instance listed.

    Perhatikan bahwa tidak ada yang aneh tentang penyebaran ini. Meskipun perwakilan layanan memulainya, hal tersebut sama seperti penyebaran Bicep lainnya.

Membersihkan grup sumber daya dan perwakilan layanan

Anda telah berhasil membuat perwakilan layanan dan penetapan peran, dan Anda telah menyebarkan sumber daya situs web Anda menggunakan file Bicep. Sekarang Anda dapat menghapus sumber daya yang Anda buat.

  1. Keluar dari akun perwakilan layanan menggunakan perintah berikut:

    az logout
    
  2. Masuk kembali ke Azure dengan akun pengguna Anda sendiri dengan menjalankan perintah berikut:

    az login
    
  3. Masuk ke akun Azure Anda melalui browser yang terbuka.

  4. Jalankan perintah Azure CLI berikut untuk menghapus grup sumber daya, kontennya, dan penetapan peran:

    az group delete --name ToyWebsite
    

    Saat Anda diminta untuk mengonfirmasi, masukkan y.

  5. Jalankan perintah berikut untuk menghapus perwakilan layanan. Ganti tempat penampung APPLICATION_ID dengan ID aplikasi yang Anda salin di latihan sebelumnya:

    az ad sp delete --id APPLICATION_ID
    
  1. Keluar dari akun perwakilan layanan menggunakan perintah berikut:

    Logout-AzAccount
    
  2. Masuk kembali ke Azure dengan akun pengguna Anda sendiri dengan menjalankan perintah berikut:

    Connect-AzAccount
    
  3. Masuk ke akun Azure Anda melalui browser yang terbuka.

  4. Jalankan perintah Azure PowerShell berikut untuk menghapus grup sumber daya, kontennya, dan penetapan peran:

    Remove-AzResourceGroup -Name ToyWebsite
    

    Saat Anda diminta untuk mengonfirmasi, masukkan y.

  5. Jalankan perintah berikut untuk menghapus perwakilan layanan. Ganti tempat penampung APPLICATION_ID dengan ID aplikasi yang Anda salin di latihan sebelumnya:

    Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
    

    Saat Anda diminta untuk mengonfirmasi, masukkan y.