ARM şablonlarındaki çıkış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.

Bahşiş

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

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

Çıkış değerlerini tanımlama

Aşağıdaki örnekte, dağıtılan bir kaynaktan bir özelliğin nasıl döndürüleceği gösterilmektedir.

outputs Bölümü ş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, yerine .property-namekullanın['property-name'].

{
  "$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 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ığına bağlı olarak genel IP adresi için kaynak kimliğinin koşullu olarak nasıl döndürüleceği 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 bkz . koşullu çıkış şablonu.

Dinamik çıkış sayısı

Bazı senaryolarda, şablonu oluştururken döndürmeniz gereken değer örneklerinin sayısını bilmezsiniz. Yinelemeli çıkış kullanarak değişken sayıda değer döndürebilirsiniz. Bir çı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 başvuru işlevini kullanın. Üst şablondaki söz dizimi şöyledir:

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

Aşağıdaki örnekte, bağlı bir ş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, noktalı gösterimi yerine adın çevresinde köşeli ayraç kullanın.

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

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

Genel IP adresi şablonu bir genel IP adresi oluşturur ve kaynak kimliğini verir. Yük dengeleyici şablonu önceki şablona bağlanır. Yük dengeleyiciyi oluştururken çıktıdaki kaynak kimliğini kullanır.

Ö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, çıkış değerleri dağıtımın sonuçlarında otomatik olarak döndürülür.

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

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

Çıkışlarda nesne 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ını ve söz dizimini anlama.