我正在考慮定義API版本號,它看起來像我在所有鏈接模板中引用的某個模板中一直重複的,但看起來好像我在這樣做時遇到了問題,米不知道這是否應該甚至可能,更不用說如何做到這一點。在ARM模板之間共享變量或常量
例如,詮釋azuredeploy-shared.json
我可以做類似
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"apiVersion": {
"resources": { "deployments": "2015-01-01" }
}
}
}
和azuredeploy.json
然後我可以使用它像
resources": [
{
"name": "someResource",
"type": "Microsoft.Resources/deployments",
"apiVersion": "[variables('apiVersion').resources.deployments]",
第一個攔路虎是需要有一個resources
部分。這讓我懷疑我是否引用了錯誤的模式或者應該引用一個。如果我創建了一些我認爲是虛擬資源的東西,並提供了這個想法,那麼azuredeploy.json
應如何引用此文件?
我可以做類似"[concat(parameters('_artifactsLocation'), '/ProjectName/Templates/azuredeploy-shared-json', parameters('_artifactsLocationSasToken'))]"
的東西,但我不知道它在哪裏或如何以及它是否仍然有效。所以,工作指點在這方面表示讚賞。我確實看到了How to pass variables between templates - ARM json,但不幸的是我不明白它應該如何工作,也不知道鏈接的Azure示例。
只是爲了確保我理解你的場景......你是否試圖從2個json文件中提取parametrers /變量 - 一個是共享值,另一個是那個部署特有的值? –
@ bmoore-msft我想創建一個文件「常量」,我可以「包含」在其他文件中,然後用一些常量變量名稱引用常量。我注意到我有很多字符串,例如「apiVersion」:「2015-01-01」,我想立即更新,一旦工具不抱怨,例如在這種情況下,關於使用*「2016- 03-30" *。我害怕我錯過了一些簡單的事情。我設法「包含」其他片段(在那裏使用'concat'),並將參數傳遞給它們,但不能從它們*中*。也許我應該以某種方式利用'outputs'指令..? – Veksi