ARM şablonlarındaki çıktılar

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

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

Çıkış değerlerini tanımla

Aşağıdaki örnek, dağıtılan bir kaynaktan bir özelliğin nasıl dönegösterdiğini gösterir.

outputsBölümü şablona ekleyin. Çıkış değeri, genel bir 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 bir kısa çizgi olan bir özelliğin çıktısını almanız gerekiyorsa, adın etrafında nokta gösterimi yerine köşeli ayraç kullanın. Örneğin, yerine kullanın ['property-name'] .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ış

conditionÖğesini koşullu olarak bir değer döndürmek için kullanabilirsiniz. Genellikle bir kaynağı koşullu olarak dağıttığınızda koşullu bir çıkış kullanırsınız. Aşağıdaki örnek, bir genel IP adresi için kaynak KIMLIĞININ, yeni bir birinin dağıtılıp dağıtıldığına göre nasıl koşullu olarak döndürülüp döndürülmeyeceğini göstermektedir:

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

Koşullu çıkışı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 bir değerin örnek sayısını bilemezsiniz. Yinelemeli çıkış kullanarak, değişken sayıda değer döndürebilirsiniz. copyBir çıktıyı 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ındaki çıkış yinelemesi.

Bağlı şablonlar

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

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

Aşağıdaki örnek, bir yük dengeleyicide, bağlantılı şablondan bir değer alarak IP adresinin nasıl ayarlanacağını gösterir.

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

Özellik adında bir tire varsa, nokta gösterimi yerine adın etrafında köşeli ayraç kullanın.

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

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

Genel IP adresi şablonu , genel bir IP adresi oluşturur ve kaynak Kimliğini verir. Yük dengeleyici şablonu önceki şablona bağlanır. Yük dengeleyiciyi oluştururken çıktıda kaynak KIMLIĞINI kullanır.

Örnek şablon

Aşağıdaki şablon hiçbir kaynak dağıtmaz. Farklı türlerde çıktı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 al

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

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

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

Sonraki adımlar