Parametreleri ve çıktıları kullanarak Azure Resource Manager şablonunuza esneklik ekleme

Tamamlandı

Son ünitede bir Azure Resource Manager (ARM) şablonu oluşturdunuz ve bu şablona bir Azure depolama hesabı eklediniz. Şablonunuzla ilgili bir sorun olduğunu fark etmiş olabilirsiniz. Depolama hesabı adı sabit kodlanmış. Bu şablonu yalnızca her seferinde aynı depolama hesabını dağıtmak için kullanabilirsiniz. Farklı bir ada sahip bir depolama hesabı dağıtmak için, dağıtımlarınızı otomatikleştirmenin pratik bir yolu olmayan yeni bir şablon oluşturmanız gerekir. Depolama hesabı SKU'su da sabit kodlanmıştır; başka bir deyişle farklı ortamlar için depolama hesabı türünü değiştiremezsiniz. Senaryomuzda her dağıtımın farklı bir depolama hesabı türü olabileceğini unutmayın. Depolama hesabı SKU’su için bir parametre ekleyerek şablonunuzu daha fazla yeniden kullanılabilir hale getirebilirsiniz.

Bu ünitede, şablonun parametreler ve çıkışlar bölümleri hakkında bilgi edineceksiniz.

ARM şablonu parametreleri

ARM şablonu parametreleri, belirli bir ortam için uyarlanmış değerler sağlayarak dağıtımı özelleştirmenize olanak tanır. Örneğin geliştirme, test veya üretim ortamına ya da başka bir ortama dağıtmanıza bağlı olarak farklı değerler iletirsiniz. Örneğin, önceki şablonda Standard_LRS depolama hesabı SKU’su kullanılır. Depolama hesabı SKU’sunun adını bir parametre yaparak depolama hesabı oluşturan diğer dağıtımlar için bu şablonu yeniden kullanabilirsiniz. Daha sonra, şablon dağıtıldığında bu dağıtım için istediğiniz SKU’nun adını iletirsiniz. Komut satırında veya parametre dosyası kullanarak bu adımı uygulayabilirsiniz.

Şablonun parameters bölümünde, kaynakları dağıtırken hangi değerleri girebileceğinizi belirtirsiniz. Bir şablonda 256 parametreyle sınırlı olursunuz. Parametre tanımları, şablon işlevlerinin çoğunu kullanabilir.

Bir parametre için kullanılabilir özellikler şunlardır:

"parameters": {
  "<parameter-name>": {
    "type": "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [
      "<array-of-allowed-values>"
    ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array-parameters>,
    "metadata": {
      "description": "<description-of-the-parameter>"
    }
  }
}

İzin verilen parametre türleri şunlardır:

  • Dize
  • secureString
  • integers
  • boolean
  • nesne
  • secureObject
  • dizi

Parametreleri kullanma önerileri

Ortama göre değişen ayarlar için parametreleri kullanın; örneğin, SKU, boyut veya kapasite. Ayrıca, kolay tanımlama veya iç adlandırma kurallarına uymak için kendinizi belirtmek istediğiniz kaynak adları için parametreleri kullanın. Her parametrenin açıklamasını sağlayın ve mümkün olduğunca varsayılan değerleri kullanın.

Güvenlik nedeniyle, şablonlarda kullanıcı adları ve/veya parolalar için hiçbir zaman sabit kodlama veya varsayılan değerler sağlamayın. Her zaman kullanıcı adları ve parolalar (veya gizli diziler) için parametreleri kullanın. Tüm parolalar ve gizli diziler için secureString kullanın. Hassas verileri bir JSON nesnesine geçirirseniz secureObject türünü kullanın. secureString veya secureObject türlerine sahip şablon parametreleri, kaynağın dağıtımından sonra okunamaz veya kullanılamaz.

ARM şablonunda parametreleri kullanma

ARM şablonunun parametreler bölümünde, kaynakları dağıtırken girebileceğiniz parametreleri belirtin. Bir şablonda 256 parametreyle sınırlı olursunuz.

Burada, şablonun bölümünde tanımlanan depolama hesabı SKU'su için parametre içeren bir şablon dosyası örneği verilmiştır parameters . Yürütmede bir değer belirtilmediyse kullanılacak parametre için varsayılan değer sağlayabilirsiniz.

"parameters": {
  "storageAccountType": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": [
      "Standard_LRS",
      "Standard_GRS",
      "Standard_ZRS",
      "Premium_LRS"
    ],
    "metadata": {
      "description": "Storage Account type"
    }
  }
}

Daha sonra kaynak tanımında parametreyi kullanın. Söz dizimi [parameters('name of the parameter')] şeklindedir. işlevini kullanacaksınız parameters . Sonraki modülde işlevler hakkında daha fazla bilgi edineceksiniz.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-04-01",
    "name": "learntemplatestorage123",
    "location": "[resourceGroup().location]",
    "sku": {
      "name": "[parameters('storageAccountType')]"
    },
    "kind": "StorageV2",
    "properties": {
      "supportsHttpsTrafficOnly": true
    }
  }
]

Şablonu dağıtırken parametresi için bir değer sağlayabilirsiniz. Aşağıdaki komutun son satırına dikkat edin:

templateFile="azuredeploy.json"
az deployment group create \
  --name testdeployment1 \
  --template-file $templateFile \
  --parameters storageAccountType=Standard_LRS

ARM şablonu çıkışları

ARM şablonunuzun çıkışlar bölümünde, başarılı bir dağıtımdan sonra döndürülecek değerleri belirtebilirsiniz. Çıktılar bölümünü oluşturan öğeler aşağıda verilmiştir.

"outputs": {
  "<output-name>": {
    "condition": "<boolean-value-whether-to-output-value>",
    "type": "<type-of-output-value>",
    "value": "<output-value-expression>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}
Öğe Açıklama
output-name Geçerli bir JavaScript tanımlayıcısı olmalıdır.
Durum (İsteğe bağlı) Bu çıkış değerinin döndürülüp döndürülmeyeceğini belirten bir Boole değeri. True olduğunda değer, dağıtımın çıktısına dahil edilir. False olduğunda, bu dağıtım için çıktı değeri atlanır. Belirtilmediğinde, varsayılan değer true olur.
type Çıktı değerinin türü.
value (İsteğe bağlı) Değerlendirilen ve çıkış değeri olarak döndürülen bir şablon dili ifadesi.
Kopya (İsteğe bağlı) Bir çıkış için birden fazla değer döndürmek istiyorsanız copy kullanılır.

ARM şablonunda çıkışları kullanma

Depolama hesabının uç noktalarının çıkışını almak için bir örnek aşağıda verilmiştir:

"outputs": {
  "storageEndpoint": {
    "type": "object",
    "value": "[reference('learntemplatestorage123').primaryEndpoints]"
  }
}

İfadenin reference bölümüne dikkat edin. Bu işlev, depolama hesabının çalışma zamanı durumunu alır.

ARM şablonunu yeniden dağıtma

ARM şablonlarının bir kez etkili olduğunu hatırlayın; başka bir deyişle şablonu aynı ortama yeniden dağıtabilirsiniz ve şablonda hiçbir değişiklik yapılmadıysa ortamda hiçbir şey değişmez. Şablonda bir değişiklik yapıldıysa (örneğin, bir parametre değerini değiştirdiyseniz), yalnızca bu değişiklik dağıtılır. Şablonunuz, Azure çözümünüz için ihtiyacınız olan tüm kaynakları içerebilir ve bir şablonu tekrar güvenli şekilde çalıştırabilirsiniz. Kaynaklar yalnızca mevcut değilse oluşturulur ve yalnızca bir değişiklik varsa güncelleştirilir.