Aracılığıyla paylaş


ARM şablonlarındaki çıktılar

Bu makalede, Azure Resource Manager şablonunuzda (ARM şablonu) çıkış değerlerinin nasıl tanımlanacağı açıklanır. Dağıtılan kaynaklardan değer döndürmeniz gerektiğinde çıkışları kullanırsınız.

Her çıkış değerinin biçimi, veri türlerinden birine çözümlenmelidir.

Tavsiye

ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep önerilir. Daha fazla bilgi edinmek için bkz.

Bir şablonda 64 çıkışla sınırlısınız. Daha fazla bilgi için bkz. şablon sınırları.

Çıkış değerlerini tanımlayın

Aşağıdaki örnekte, dağıtılan bir kaynaktan bir özelliğin nasıl döndürüleceği gösterilmektedir. Çıkışlar bölümünü şablona ekleyin. Çıkış değeri, genel IP adresi için tam etki alanı adını alır:

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]"
  },
}

Adında kısa çizgi bulunan bir özelliğin çıktısını almanız gerekiyorsa, noktalı virgül yerine adın çevresinde köşeli ayraç kullanın. Örneğin, ['property-name'] yerine .property-name kullanın.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "user": {
      "user-name": "Test Person"
    }
  },
  "resources": [
  ],
  "outputs": {
    "nameResult": {
      "type": "string",
      "value": "[variables('user')['user-name']]"
    }
  }
}

Koşullu çıkış

Koşullu olarak bir değer döndürmek için öğesini kullanabilirsiniz condition . Genellikle, bir kaynağı koşullu olarak dağıttığınızda koşullu çıkış kullanırsınız. Aşağıdaki örnekte, yeni bir ip adresinin dağıtılıp dağıtılmadığını temel alarak genel IP adresinin kaynak kimliğini koşullu olarak döndürme gösterilmektedir:

"outputs": {
  "resourceID": {
    "condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

Koşullu çıktının basit bir örneği için koşullu çıktı şablonuna bakın.

Dinamik çıkış sayısı

Bazı senaryolarda, şablonu oluştururken döndürmeniz gereken bir değerin örnek sayısını bilemezsiniz. Yinelemeli çıktı kullanarak değişken sayıda değer döndürebilirsiniz. Çıktıyı copy yinelemek için öğesini ekleyin:

"outputs": {
  "storageEndpoints": {
    "type": "array",
    "copy": {
      "count": "[parameters('storageCount')]",
      "input": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
    }
  }
}

Daha fazla bilgi için bkz. ARM şablonlarında çıkış yinelemesi.

Bağlı şablonlar

Bağlantılı şablonları kullanarak ilgili şablonları dağıtabilirsiniz. Bağlantılı şablondan çıkış değerini almak için üst şablondaki işlevini kullanın reference . Üst şablondaki sözdizimi şöyledir:

"[reference('<deploymentName>').outputs.<propertyName>.value]"

Aşağıdaki örnekte, bağlı şablondan bir değer alarak yük dengeleyicide IP adresinin nasıl ayarlanacağı gösterilmektedir:

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs.resourceID.value]"
}

Özellik adında kısa çizgi varsa, adın etrafında nokta gösterimi yerine köşeli parantez kullanın.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs['resource-ID'].value]"
}

İşlevi referenceiç içe bir şablonunçıkışlar bölümünde kullanamazsınız. İç içe şablonda dağıtılan bir kaynağın değerlerini döndürmek için, iç içe şablonunuzu bağlantılı bir şablona dönüştürün.

Örnek şablon

Aşağıdaki şablon herhangi bir kaynak dağıtmaz. Farklı türlerdeki çıkışları döndürmenin bazı yollarını gösterir:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[deployment().name]"
    },
    "integerOutput": {
      "type": "int",
      "value": "[length(environment().authentication.audiences)]"
    },
    "booleanOutput": {
      "type": "bool",
      "value": "[contains(deployment().name, 'demo')]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[environment().authentication.audiences]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[subscription()]"
    }
  }
}

Çıkış değerlerini alma

Dağıtım başarılı olduğunda, dağıtım sonuçlarında çıkış değerleri otomatik olarak döndürülür.

Dağıtım geçmişinden çıkış değerlerini almak için betik kullanabilirsiniz.

(Get-AzResourceGroupDeployment `
  -ResourceGroupName <resource-group-name> `
  -Name <deployment-name>).Outputs.resourceID.value

Çıkışlardaki nesneleri sıralama

JSON'da nesne, sıfır veya daha fazla anahtar/değer çifti içeren sıralanmamış bir koleksiyondur. Sıralama, uygulamalara bağlı olarak farklı olabilir. Örneğin, Bicep items() işlevi nesneleri alfabetik düzende sıralar. Diğer yerlerde özgün sıralama korunabilir. Bu determinizm olmadığından, dağıtım parametreleri ve çıkışlarıyla etkileşim kuran kod yazarken nesne anahtarlarının sıralanmasıyla ilgili varsayımlarda bulunmaktan kaçının.

Sonraki Adımlar

Çıkışların kullanılabilir özellikleri hakkında bilgi edinmek için BKZ. ARM şablonlarının yapısı ve söz dizimi.