Azure Resource Manager şablon yapısını keşfetme

Tamamlandı

Bu ünitede, kod olarak altyapı uygulamak için Azure Resource Manager şablonlarını (ARM şablonları) kullanmayı öğreneceksiniz. ARM şablonunun bölümlerini inceler, ARM şablonunuzu Azure'a dağıtmayı öğrenir ve ARM şablonunun kaynaklar bölümünü ayrıntılı olarak incelersiniz.

Kod olarak altyapı nedir?

Kod olarak altyapı, uygulamanız için ihtiyacınız olan altyapıyı kod aracılığıyla açıklamanıza olanak tanır.

Kod olarak altyapı sayesinde, hem uygulama kodunuzu hem de uygulamanızı merkezi bir kod deposunda dağıtmak için ihtiyacınız olan her şeyi koruyabilirsiniz. Kod olarak altyapının avantajları şunlardır:

  • Tutarlı yapılandırmalar
  • Gelişmiş ölçeklenebilirlik
  • Daha hızlı dağıtım
  • Daha iyi izlenebilirlik

Bu videoda kod olarak altyapı açıklanmaktadır:

ARM şablonu nedir?

ARM şablonları, dağıtımınızın altyapı ve yapılandırmasını tanımlayan JavaScript Nesne Gösterimi (JSON) dosyalarıdır. Şablon, bildirim temelli söz dizimi kullanır. Bildirim temelli söz dizimi, denetim akışını açıklamadan kaynakların nasıl görüneceğini özetleyen yapıyı ve öğeleri oluşturmanın bir yoludur. Bildirim temelli söz dizimi, bilgisayarın gerçekleştirmesi için komutları kullanan kesinlik temelli söz diziminden farklıdır. Kesinlik temelli söz dizimi, kaynakların dağıtımında her bir adımın belirtilmesine odaklanır.

ARM şablonları, oluşturmak için programlama komutları dizisini yazmak zorunda kalmadan, dağıtmayı planladığınız şeyi bildirmenize olanak sağlar. ARM şablonunda kaynakları ve söz konusu kaynakların özelliklerini belirtirsiniz. Azure Resource Manager daha sonra bu bilgileri kullanarak kaynakları düzenli ve tutarlı bir şekilde dağıtır.

ARM şablonlarını kullanmanın avantajları

ARM şablonlarıyla dağıtımları otomatikleştirebilir ve kod olarak altyapıyı (IaC) kullanma yönteminden yararlanabilirsiniz. Şablon kodu, altyapınızın ve geliştirme projelerinizin bir parçası haline gelir. Uygulama kodu gibi, IAC dosyalarını bir kaynak deposunda depolayıp sürümünü oluşturabilirsiniz.

ARM şablonları her zaman aynı etkiye sahiptir; başka bir deyişle, aynı şablonu birçok defa dağıtabilir ve aynı durumda aynı kaynak türlerini elde edersiniz.

Resource Manager, kaynakları doğru sırada oluşturulacak şekilde dağıtmayı düzenler. Mümkün olduğunda kaynaklar paralel de oluşturulabilir ve böylelikle ARM şablonu dağıtımları betikleri yazılan dağıtımlardan daha hızlı tamamlanır.

Diagram showing a mapping of the template processing procedure. There's only one call to process a template as opposed to several calls to process scripts.

Resource Manager'ın yerleşik doğrulaması da vardır. Dağıtımın başarılı olacağından emin olmak için dağıtımı başlatmadan önce şablonu denetler.

Dağıtımınız daha karmaşık hale gelirse, ARM şablonlarınızı daha küçük, yeniden kullanılabilir bileşenlere böler. Dağıtım zamanında bu daha küçük şablonları birbirine bağlayabilirsiniz. Ayrıca şablonları diğer şablonların içine de yerleştirebilirsiniz.

Azure portalda dağıtım geçmişinizi gözden geçirebilir ve dağıtımın durumuyla ilgili bilgi alabilirsiniz. Portalda tüm parametrelerin ve çıkışların değerleri görüntülenir.

Ayrıca ARM şablonlarınızı, Azure Pipelines gibi sürekli tümleştirme ve sürekli dağıtım (CI/CD) araçlarıyla da tümleştirebilirsiniz; böylece hızlı ve güvenilir uygulama ve altyapı güncelleştirmeleri için yayın işlem hatlarınızı otomatikleştirebilirsiniz. Azure DevOps ve ARM şablon görevlerini kullanarak sürekli olarak projelerinizi derleyip dağıtabilirsiniz.

ARM şablon dosyası yapısı

ARM şablonu yazarken, şablonu oluşturan tüm bölümleri ve bunların ne yaptığını anlamanız gerekir. ARM şablon dosyaları aşağıdaki öğelerden oluşur:

Öğe Açıklama
Şema JSON verilerinin yapısının açıklandığı JSON şema dosyasının konumunu tanımlayan gerekli bir bölüm. Kullandığınız sürüm numarası, dağıtımın kapsamına ve JSON düzenleyicinize bağlıdır.
contentVersion Şablonunuzun sürümünü (örneğin 1.0.0.0) tanımlayan gerekli bir bölüm. Doğru şablonu dağıttığınızdan emin olmak için bu değeri kullanarak şablonunuzdaki önemli değişiklikleri belgeleyebilirsiniz.
apiProfile Kaynak türleri için API sürümlerinin koleksiyonunu tanımlayan isteğe bağlı bir bölüm. Şablondaki her bir kaynağın API sürümlerini belirtmek zorunda kalmamak için bu değeri kullanabilirsiniz.
parametreler Dağıtım sırasında sağlanan değerleri tanımladığınız isteğe bağlı bir bölüm. Bu değerler bir parametre dosyası tarafından, komut satırı parametreleri tarafından veya Azure portalında sağlanabilir.
Değişken Şablon dili ifadelerini kolaylaştırmak için kullanılan değerleri tanımladığınız isteğe bağlı bir bölüm.
Işlev Şablon içinde kullanılabilen kullanıcı tanımlı işlevleri tanımlayabileceğiniz isteğe bağlı bir bölüm. Şablonunuzda karmaşık ifadeler tekrar tekrar kullanıldığında kullanıcı tanımlı işlevler şablonunuzu basitleştirebilir.
Kaynak Bir kaynak grubunda veya abonelikte dağıtmak ya da güncelleştirmek istediğiniz asıl öğeleri tanımlayan gerekli bir bölüm.
Çıkış Dağıtımın sonunda döndürülecek değerleri belirttiğiniz isteğe bağlı bir bölüm.

ARM şablonunu Azure’a dağıtma

ARM şablonunu Azure'a aşağıdaki yollardan biriyle dağıtabilirsiniz:

  • Yerel şablonu dağıtma
  • Bağlantılı şablonu dağıtma
  • Sürekli dağıtım işlem hattında dağıtma

Bu modül, yerel bir ARM şablonunun dağıtılmasına odaklanır. Gelecekteki Learn modüllerinde, daha karmaşık bir altyapıyı dağıtma ve Azure Pipelines ile tümleştirme hakkında bilgi edineceksiniz.

Yerel bir şablon dağıtmak için Azure PowerShell veya Azure CLI'yı yerel ortamda yüklemiş olmalısınız.

İlk olarak Azure CLI veya Azure PowerShell kullanarak Azure’da oturum açarsınız.

az login

Ardından kaynak grubunuzu tanımlayın. Önceden tanımlanmış bir kaynak grubu kullanabilir veya aşağıdaki komutla yeni bir kaynak grubu oluşturabilirsiniz. Kullanılabilir konum değerlerini şu kaynaktan alabilirsiniz: az account list-locations (CLI) veya Get-AzLocation (PowerShell). kullanarak az configure --defaults location=<location>varsayılan konumu yapılandırabilirsiniz.

az group create \
  --name {name of your resource group} \
  --location "{location}"

Kaynak grubunda şablon dağıtımı başlatmak için az deployment group create Azure CLI komutunu veya New-AzResourceGroupDeployment Azure PowerShell komutunu kullanın.

Bahşiş

ile az group deployment create arasındaki az deployment group create fark, eski bir komutun az group deployment create kullanım dışı bırakılacağı ve ile az deployment group createdeğiştirileceğidir. Bu nedenle, kaynak grubu kapsamı altındaki kaynakları dağıtmak için komutunu kullanmanızı az deployment group create öneririz.

Her iki komut da dağıtım geçmişinde kolayca tanımlayabilmeniz için kaynak grubunu, bölgeyi ve dağıtımın adını gerektirir. Kolaylık olması için alıştırmalar şablon dosyasının yolunu depolayan bir değişken oluşturur. Her dağıtımda yolu yeniden yazmanız gerekmeyen bu değişken, dağıtım komutlarını çalıştırmanızı kolaylaştırır. Bir örnek aşağıda verilmiştir:

Bu dağıtım komutunu çalıştırmak için Azure CLI’nın en son sürümüne sahip olmanız gerekir.

templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
  --name blanktemplate \
  --resource-group myResourceGroup \
  --template-file $templateFile

Karmaşık çözümleri dağıtmak için bağlantılı şablonlar kullanın. Bir şablonu birkaç şablona bölebilir ve bu şablonları bir ana şablon aracılığıyla dağıtabilirsiniz. Ana şablonu dağıttığınızda, bağlı şablonun dağıtımı tetikler. Bağlı şablonu bir SAS belirteci kullanarak depolayıp güvenli hale getirebilirsiniz.

CI/CD işlem hattı, geliştirme projelerini oluşturma ve dağıtma işlemini otomatikleştirir ve ARM şablonu projeleri de bunlara dahildir. Şablon dağıtımı için kullanılan en yaygın iki işlem hattı, Azure Pipelines veya GitHub Actions’tır.

Diğer modüllerde bu iki dağıtım türü hakkında daha fazla bilgi sağlanmıştır.

Şablona kaynakları ekleme

Şablonunuza kaynak eklemek için kaynak sağlayıcısını ve kaynak türlerini bilmeniz gerekir. Bu birleşimin söz dizimi, {resource-provider}/{resource-type} biçimindedir. Örneğin, şablonunuza bir depolama hesabı kaynağı eklemek için Microsoft.Storage kaynak sağlayıcısı gerekir. Bu sağlayıcının türlerinden biri storageAccount’tur. Bu nedenle kaynak türünüz Microsoft.Storage/storageAccounts olarak görüntülenir. İhtiyacınız olan sağlayıcıları bulmak için Azure hizmetleri için kaynak sağlayıcıları listesini kullanabilirsiniz.

Sağlayıcıyı ve kaynak türünü tanımladıktan sonra, kullanmak istediğiniz her kaynak türünün özelliklerini anlamanız gerekir. Ayrıntılar için bkz. Azure Resource Manager şablonlarında kaynakları tanımlama. Kaynağı bulmak için sol sütunda listeyi görüntüleyin. Özelliklerin API sürümüne göre sıralandığına dikkat edin.

Screenshot of a Microsoft documentation page showing the storage account documentation selected.

Aşağıda, Depolama Hesapları sayfasında listelenen özelliklerden bazılarına örnek verilmiştir:

Screenshot of a Microsoft documentation page showing some of the storage account properties.

Depolama örneğimiz için şablonunuz şöyle görünebilir:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "apiProfile": "",
  "parameters": {},
  "variables": {},
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}