Alıştırma - Modül oluşturma ve kullanma

Tamamlandı

Şirketinizin web sitesine oyuncak bir wombat başlatmak için bir içerik teslim ağı veya CDN eklemekle görevlendirildiniz. Ancak şirketinizdeki diğer ekipler CDN'ye ihtiyaç duymadıklarını söyledi. Bu alıştırmada web sitesi ve CDN için modüller oluşturacak ve modülleri bir şablona ekleyeceksiniz.

İşlem sırasında şunları yapacaksınız:

  • Uygulamanız için bir modül ekleyin.
  • Modülü kullanan bir Bicep şablonu oluşturun.
  • CDN için başka bir modül ekleyin.
  • CDN modülünü şablonunuza eklerken isteğe bağlı hale getirin.
  • Şablonu Azure’a dağıtın.
  • Dağıtım geçmişini gözden geçirin.

Uyarı

Bu alıştırma isteğe bağlıdır. Bu alıştırmayı tamamlamak istiyorsanız başlamadan önce bir Azure aboneliği oluşturmanız gerekir. Azure hesabınız yoksa veya şu anda bir hesap oluşturmak istemiyorsanız, sunulan bilgileri anlamak için yönergeleri okuyabilirsiniz.

Bu alıştırmada Visual Studio Code için Bicep uzantısı kullanılır. Visual Studio Code’da bu uzantıyı yüklediğinizden emin olun.

Uyarı

Bu alıştırmadaki adımları tamamlamak için bir kaynak grubu kullanmanız gerekir. Önceden oluşturduğunuz bir kaynak grubunu kullanabilir veya bu alıştırma için özel olarak yeni bir kaynak grubu oluşturabilirsiniz. Yeni bir kaynak grubu oluşturmayı seçerseniz, alıştırmayı tamamladığınızda oluşturduğunuz tüm kaynakları temizlemeniz kolaylaşır. Var olan bir kaynak grubunuz yoksa veya bu alıştırma için özel olarak yeni bir grup oluşturmak istiyorsanız, Azure portalını kullanarak kaynak grubu oluşturmak üzere kaynak gruplarını yönetmek için Azure portalını ve Azure Resource Manager'ı kullanma makalesindeki adımları izleyebilir veya Azure CLI kullanarak kaynak grubu oluşturmak için Azure CLI kullanarak Azure kaynak gruplarını yönetme adımlarını izleyebilirsiniz.

Uyarı

Bu alıştırma boyunca, örneklerdeki myResourceGroupName öğesini varolan bir kaynak grubunun adıyla veya bu alıştırma için oluşturduğunuz kaynak grubunun adıyla değiştirin.

Boş bicep dosyası oluşturma

  1. Visual Studio Code'u açın.

  2. main.bicep adlı yeni bir dosya oluşturun.

  3. Visual Studio Code'un Bicep araçlarını yükleyebilmesi için boş dosyayı kaydedin.

    Dosya>veya Windows'ta Ctrl+S (macOS'ta⌘+S) seçeneğini belirleyebilirsiniz. Dosyayı nereye kaydettiğinizi unutmayın. Örneğin, bunu kaydetmek için bir templates klasörü oluşturmak isteyebilirsiniz.

Uygulamanız için modül oluşturma

  1. main.bicep dosyanızı oluşturduğunuz klasörde modules adlı yeni bir klasör oluşturun. modules klasöründe app.bicep adlı bir dosya oluşturun. Dosyayı kaydedin.

  2. app.bicep dosyasına aşağıdaki içeriği ekleyin:

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @description('The name of the App Service app.')
    param appServiceAppName string
    
    @description('The name of the App Service plan.')
    param appServicePlanName string
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    
    @description('The default host name of the App Service app.')
    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

    Bu dosya bir Azure Uygulaması Hizmet planı ve bir uygulama dağıtır. Modülün oldukça genel olduğuna dikkat edin. Kaynakların adları veya App Service planının SKU'su hakkında herhangi bir varsayım içermez. Bu, modülün farklı dağıtımlar için yeniden kullanılmasını kolaylaştırır.

  3. Dosyadaki değişiklikleri kaydedin.

Modülü Bicep şablonunuza ekleme

Burada uygulama modülünü Bicep şablonunuza başlangıç noktası olarak ekleyeceksiniz.

  1. main.bicep dosyasını açın.

  2. Dosyaya aşağıdaki parametreleri ve değişkeni ekleyin:

    @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-product-launch-plan'
    

    Bu, oyuncak web siteleriniz için dağıtmayı planladığınız şablon olduğundan, biraz daha belirgindir. App Service planı adı bir değişken olarak tanımlanır. SKU parametresi, oyuncak başlatma web sitesi için anlamlı olan varsayılan bir değere sahiptir.

  3. Parametrelerin altında boş bir satır oluşturun. Şimdi uygulama modülü tanımının ilk satırını yazın:

    module app 'modules/app.bicep' = {
    

    Yazarken Visual Studio Code için Bicep uzantısının modül bildirimini iskelenize eklemenize yardımcı olduğuna dikkat edin. Modülünüzün yolunu yazdığınızda ve eşittir (=) karakterini yazdığınızda, çeşitli seçenekler içeren bir açılır menü görüntülenir.

  4. Açılır menüden Gerekli özellikler'i seçin:

    Gerekli özellikleriyle bir modülün iskelesini oluşturma seçeneğini gösteren Visual Studio Code'un ekran görüntüsü.

  5. Modül bildirimini tamamlayın:

    module app 'modules/app.bicep' = {
      name: 'toy-launch-app'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    
  6. Dosyanın en altında bir çıkış tanımlayın:

    @description('The host name to use to access the website.')
    output websiteHostName string = app.outputs.appServiceAppHostName
    
  7. Dosyadaki değişiklikleri kaydedin.

İçerik teslim ağı için modül oluşturma

  1. modules klasöründe cdn.bicep adlı bir dosya oluşturun. Dosyayı kaydedin.

  2. Cdn.bicep dosyasına aşağıdaki içeriği ekleyin:

    @description('The host name (address) of the origin server.')
    param originHostName string
    
    @description('The name of the CDN profile.')
    param profileName string = 'cdn-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the CDN endpoint')
    param endpointName string = 'endpoint-${uniqueString(resourceGroup().id)}'
    
    @description('Indicates whether the CDN endpoint requires HTTPS connections.')
    param httpsOnly bool
    
    var originName = 'my-origin'
    
    resource cdnProfile 'Microsoft.Cdn/profiles@2024-09-01' = {
      name: profileName
      location: 'global'
      sku: {
        name: 'Standard_Microsoft'
      }
    }
    
    resource endpoint 'Microsoft.Cdn/profiles/endpoints@2024-09-01' = {
      parent: cdnProfile
      name: endpointName
      location: 'global'
      properties: {
        originHostHeader: originHostName
        isHttpAllowed: !httpsOnly
        isHttpsAllowed: true
        queryStringCachingBehavior: 'IgnoreQueryString'
        contentTypesToCompress: [
          'text/plain'
          'text/html'
          'text/css'
          'application/x-javascript'
          'text/javascript'
        ]
        isCompressionEnabled: true
        origins: [
          {
            name: originName
            properties: {
              hostName: originHostName
            }
          }
        ]
      }
    }
    
    @description('The host name of the CDN endpoint.')
    output endpointHostName string = endpoint.properties.hostName
    

    Bu dosya iki kaynak dağıtır: CDN profili ve CDN uç noktası.

  3. Dosyadaki değişiklikleri kaydedin.

Modülleri ana Bicep şablonuna ekleme

  1. main.bicep dosyasını açın.

  2. parametresinin appServicePlanSkuName altına aşağıdaki parametreyi ekleyin:

    @description('Indicates whether a CDN should be deployed.')
    param deployCdn bool = true
    
  3. Modül tanımının app altında modülü tanımlayın cdn :

    module cdn 'modules/cdn.bicep' = if (deployCdn) {
      name: 'toy-launch-cdn'
      params: {
        httpsOnly: true
        originHostName: app.outputs.appServiceAppHostName
      }
    }
    

    Modülün, yalnızca deployCdn parametresinin değeri olarak ayarlandığında truedağıtılacağı bir koşula sahip olduğuna dikkat edin. Ayrıca modülün parametresinin modüldeki originHostName çıkışın appServiceAppHostName değerine ayarlandığına app dikkat edin.

  4. Konak adı çıkışını doğru ana bilgisayar adını seçebilecek şekilde güncelleştirin. Bir CDN dağıtıldığında, ana bilgisayar adının CDN uç noktasının adı olmasını istersiniz.

    output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostName
    
  5. Dosyadaki değişiklikleri kaydedin.

Bicep dosyanızı doğrulayın

Önceki tüm değişiklikleri tamamladıktan sonra main.bicep dosyanız şu örneğe benzer olmalıdır:

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

@description('Indicates whether a CDN should be deployed.')
param deployCdn bool = true

var appServicePlanName = 'toy-product-launch-plan'

module app 'modules/app.bicep' = {
  name: 'toy-launch-app'
  params: {
    appServiceAppName: appServiceAppName
    appServicePlanName: appServicePlanName
    appServicePlanSkuName: appServicePlanSkuName
    location: location
  }
}

module cdn 'modules/cdn.bicep' = if (deployCdn) {
  name: 'toy-launch-cdn'
  params: {
    httpsOnly: true
    originHostName: app.outputs.appServiceAppHostName
  }
}

@description('The host name to use to access the website.')
output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostName

Aksi takdirde, örneği kopyalayın veya şablonunuzu örnekle eşleşecek şekilde ayarlayın.

Bicep şablonunu Azure'a dağıtma

Bu şablonu Azure’a dağıtmak için, Visual Studio Code terminalinden Azure hesabınızda oturum açmanız gerekir. Azure CLI araçlarını yüklediğinizden emin olun.

  1. Terminal menüsünde Yeni Terminal’i seçin. Terminal penceresi genellikle ekranınızın alt yarısında açılır.

  2. Terminal penceresinde sağ tarafta bash görüntüleniyorsa, doğru kabuk zaten açık demektir. Alternatif olarak, sağ tarafta bir bash kabuğu simgesi görürseniz kabuğu başlatmak için bunu seçebilirsiniz.

    Bash seçeneğinin gösterildiği Visual Studio Code terminal penceresinin ekran görüntüsü.

    Bash dışında bir kabuk görüntülenirse, kabuk açılan okunu ve ardından Git Bash'i seçin.

    Terminal kabuğu açılan listesinin gösterildiği ve Git Bash Varsayılanı'nın seçili olduğu Visual Studio Code terminal penceresinin ekran görüntüsü.

  3. Terminalde, şablonunuzu kaydettiğiniz dizine gidin. Örneğin, şablonunuzu templates klasörüne kaydettiyseniz şu komutu kullanabilirsiniz:

    cd templates
    

Bicep'i yükleme

Bicep'in en son sürümüne sahip olduğunuzdan emin olmak için aşağıdaki komutu çalıştırın:

az bicep install && az bicep upgrade

Azure CLI kullanarak Azure'da oturum açma

  1. Visual Studio Code terminalinde aşağıdaki komutu çalıştırarak Azure'da oturum açın:

    az login
    
  2. Açılan tarayıcıda Azure hesabınızda oturum açın.

    Visual Studio Code terminali, bu hesapla ilişkili aboneliklerin listesini görüntüler.

  3. Listede, bu alıştırma için kullanmak istediğiniz aboneliği bulun.

    Oturum açma listesinden listeyi kaçırdıysanız, aboneliklerinizi yeniden listelemek için aşağıdaki kod parçacığını kullanabilirsiniz.

    az account list --output table
    
  4. Bu oturumda çalıştırdığınız tüm Azure CLI komutları için varsayılan aboneliği ayarlayın.

    az account set --subscription "Your Subscription Name or ID"
    

Şablonu Azure’a dağıtma

Bicep şablonunu Azure'a dağıtmak için Visual Studio Code'daki terminalden aşağıdaki kodu çalıştırın. Bu işlemin tamamlanması bir veya iki dakika sürebilir ve başarılı bir dağıtım elde edersiniz.

az deployment group create --name main --template-file main.bicep

Durum Running... terminalde görüntülenir.

Bu şablonu Azure'a dağıtmak için Visual Studio Code terminalinden Azure hesabınızda oturum açın. Azure PowerShell'i yüklediğinizden emin olun.

  1. Terminal menüsünde Yeni Terminal’i seçin. Terminal penceresi genellikle ekranınızın alt yarısında açılır.

  2. Terminal penceresinde pwsh veya powershell sağ tarafta görüntüleniyorsa, doğru kabuğun zaten açık olduğu anlamına gelir. Alternatif olarak, sağ tarafta bir PowerShell kabuğu simgesi görürseniz kabuğu başlatmak için bunu seçebilirsiniz.

    Kabuk açılan listesinde pwsh seçeneğinin görüntülendiği Visual Studio Code terminal penceresinin ekran görüntüsü.

    pwsh veya powershell dışında bir kabuk görünürse, kabuk açılan okunu ve ardından PowerShell'i seçin.

    Terminal kabuğu açılan listesinin gösterildiği ve PowerShell'in seçili olduğu Visual Studio Code terminal penceresinin ekran görüntüsü.

  3. Terminalde, şablonunuzu kaydettiğiniz dizine gidin. Örneğin, şablonunuzu templates klasörüne kaydettiyseniz şu komutu kullanabilirsiniz:

    Set-Location -Path templates
    

Bicep CLI'yi yükleme

Azure PowerShell'den Bicep'i kullanmak için Bicep CLI'yı yükleyin.

Azure PowerShell kullanarak Azure’da oturum açma

  1. Visual Studio Code terminalinde aşağıdaki komutu çalıştırarak Azure'da oturum açın:

    Connect-AzAccount
    
  2. Açılan tarayıcıda Azure hesabınızda oturum açın.

  3. Aşağıdaki komutu çalıştırarak bu alıştırmada kullanmak istediğiniz aboneliğin kimliğini alın:

    Get-AzSubscription
    

    Abonelik kimliği, ikinci sütundur. İkinci sütunu kopyalayın. aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e gibi görünür.

  4. Bu oturumda çalıştırdığınız tüm Azure PowerShell komutları için varsayılan aboneliği ayarlayın.

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Şablonu Azure’a dağıtma

Terminalde aşağıdaki Azure PowerShell komutunu kullanarak şablonu Azure'a dağıtın. Bu işlem bir veya iki dakika sürebilir ve başarılı bir dağıtım elde edersiniz.

New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep

Dağıtım geçmişini gözden geçirme

  1. Azure portalında oturum açın ve uygun aboneliği kullandığınızdan emin olun:

    1. Sayfanın sağ üst köşesindeki avatarınızı seçin.
    2. Dizini değiştir’i seçin. Listede uygun dizini seçin.
  2. Sol taraftaki panelde Kaynak grupları'nı seçin.

  3. myResourceGroupName öğesini seçin.

  4. Soldaki menüde Ayarlar'ın altında Dağıtımlar'ı seçin.

    Dağıtımlar menü öğesinin vurgulandığı kaynak grubunu gösteren Azure portalının ekran görüntüsü.

    Üç dağıtım listelenir.

  5. Ana dağıtımı seçin ve Dağıtım ayrıntıları'nı genişletin.

    Her iki modülün de listelendiğine ve türlerinin olarak Microsoft.Resources/deploymentsgörüntülendiğine dikkat edin. Çıkışlarına şablon içinde de başvurulacağından modüller iki kez listelenir.

    Ana dağıtımın dağıtım ayrıntılarını gösteren Azure portalının ekran görüntüsü.

  6. toy-launch-cdn ve toy-launch-app dağıtımlarını seçin ve her birinde dağıtılan kaynakları gözden geçirin. bunların ilgili modülde tanımlanan kaynaklara karşılık geldiğini görebilirsiniz.

Web sitesini test etme

  1. Oyuncak-başlatma-uygulama dağıtımını seçin.

  2. Çıkışlar’ı seçin.

    Çıktılar menü öğesinin vurgulandığı dağıtımı gösteren Azure portalının ekran görüntüsü.

  3. Çıktının appServiceAppHostName kopyala düğmesini seçin.

  4. Yeni bir tarayıcı sekmesinde, önceki adımda kopyaladığınız adrese gitmeyi deneyin. Adres ile https://başlamalıdır.

    App Service ana bilgisayar adını gösteren adres çubuğuyla birlikte web uygulamasının karşılama sayfasının ekran görüntüsü.

    App Service karşılama sayfası görüntülenir ve uygulamayı başarıyla dağıttığınız gösterilir.

  5. Ana dağıtıma gidin ve Çıkışlar'ı seçin.

  6. Çıktının websiteHostName değerini kopyalayın. Azure Content Delivery Network ana bilgisayar adı olduğundan bu ana bilgisayar adının farklı olduğuna dikkat edin.

  7. Yeni bir tarayıcı sekmesinde, önceki adımda kopyaladığınız ana bilgisayar adına gitmeyi deneyin. Adresin başlangıcına ekleyin https:// .

    CDN uç noktalarının etkin hale gelmesi birkaç dakika sürer. Sayfa bulunamadı hatası alırsanız, birkaç dakika bekleyin ve bağlantıyı yapıştırmayı yeniden deneyin. Ayrıca, HTTPS kullanmak için URL'nin başlangıcına eklediğinizden https:// emin olun.

    CDN uç noktası etkin olduğunda aynı App Service karşılama sayfasını alırsınız. Bu kez, web sitesinin performansını iyileştirmeye yardımcı olan Azure Content Delivery Network hizmeti aracılığıyla sunulmaktadır.

    CdN uç noktasını gösteren adres çubuğuyla birlikte web uygulamasının hoş geldiniz sayfasının ekran görüntüsü.