Alıştırma - Modül oluşturma ve kullanma
Ş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
Visual Studio Code'u açın.
main.bicep adlı yeni bir dosya oluşturun.
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
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.
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.defaultHostNameBu 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.
Dosyadaki değişiklikleri kaydedin.
Modülü Bicep şablonunuza ekleme
Burada uygulama modülünü Bicep şablonunuza başlangıç noktası olarak ekleyeceksiniz.
main.bicep dosyasını açın.
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.
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.Açılır menüden Gerekli özellikler'i seçin:
Modül bildirimini tamamlayın:
module app 'modules/app.bicep' = { name: 'toy-launch-app' params: { appServiceAppName: appServiceAppName appServicePlanName: appServicePlanName appServicePlanSkuName: appServicePlanSkuName location: location } }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.appServiceAppHostNameDosyadaki değişiklikleri kaydedin.
İçerik teslim ağı için modül oluşturma
modules klasöründe cdn.bicep adlı bir dosya oluşturun. Dosyayı kaydedin.
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.hostNameBu dosya iki kaynak dağıtır: CDN profili ve CDN uç noktası.
Dosyadaki değişiklikleri kaydedin.
Modülleri ana Bicep şablonuna ekleme
main.bicep dosyasını açın.
parametresinin
appServicePlanSkuNamealtına aşağıdaki parametreyi ekleyin:@description('Indicates whether a CDN should be deployed.') param deployCdn bool = trueModül tanımının
appaltında modülü tanımlayıncdn:module cdn 'modules/cdn.bicep' = if (deployCdn) { name: 'toy-launch-cdn' params: { httpsOnly: true originHostName: app.outputs.appServiceAppHostName } }Modülün, yalnızca
deployCdnparametresinin değeri olarak ayarlandığındatruedağıtılacağı bir koşula sahip olduğuna dikkat edin. Ayrıca modülün parametresinin modüldekioriginHostNameçıkışınappServiceAppHostNamedeğerine ayarlandığınaappdikkat edin.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.appServiceAppHostNameDosyadaki 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.
Terminal menüsünde Yeni Terminal’i seçin. Terminal penceresi genellikle ekranınızın alt yarısında açılır.
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 dışında bir kabuk görüntülenirse, kabuk açılan okunu ve ardından Git Bash'i seçin.
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
Visual Studio Code terminalinde aşağıdaki komutu çalıştırarak Azure'da oturum açın:
az loginAçı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.
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 tableBu 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.
Terminal menüsünde Yeni Terminal’i seçin. Terminal penceresi genellikle ekranınızın alt yarısında açılır.
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.
pwsh veya powershell dışında bir kabuk görünürse, kabuk açılan okunu ve ardından PowerShell'i seçin.
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
Visual Studio Code terminalinde aşağıdaki komutu çalıştırarak Azure'da oturum açın:
Connect-AzAccountAçılan tarayıcıda Azure hesabınızda oturum açın.
Aşağıdaki komutu çalıştırarak bu alıştırmada kullanmak istediğiniz aboneliğin kimliğini alın:
Get-AzSubscriptionAbonelik kimliği, ikinci sütundur. İkinci sütunu kopyalayın. aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e gibi görünür.
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
Azure portalında oturum açın ve uygun aboneliği kullandığınızdan emin olun:
- Sayfanın sağ üst köşesindeki avatarınızı seçin.
- Dizini değiştir’i seçin. Listede uygun dizini seçin.
Sol taraftaki panelde Kaynak grupları'nı seçin.
myResourceGroupName öğesini seçin.
Soldaki menüde Ayarlar'ın altında Dağıtımlar'ı seçin.
Üç dağıtım listelenir.
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.
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
Oyuncak-başlatma-uygulama dağıtımını seçin.
Çıkışlar’ı seçin.
Çıktının
appServiceAppHostNamekopyala düğmesini seçin.Yeni bir tarayıcı sekmesinde, önceki adımda kopyaladığınız adrese gitmeyi deneyin. Adres ile
https://başlamalıdır.
App Service karşılama sayfası görüntülenir ve uygulamayı başarıyla dağıttığınız gösterilir.
Ana dağıtıma gidin ve Çıkışlar'ı seçin.
Çıktının
websiteHostNamedeğerini kopyalayın. Azure Content Delivery Network ana bilgisayar adı olduğundan bu ana bilgisayar adının farklı olduğuna dikkat edin.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.