Azure Resource Manager (ARM) テンプレートには、リンクされたテンプレートを使用する機能があります。これらのリンクされたテンプレートは、ARM テンプレートのデプロイ中に作成する追加のリソースを定義できます。
ARM テンプレートは、一部のリソースが他のリソースより先に作成されるようにする依存関係をサポートしています。
マスター テンプレートで作成されたリソースのリンクされたテンプレートで依存関係を指定したいと考えています。リンクされたテンプレートに依存関係を含めると、次のようになります。
"resources": [
{
"apiVersion": "2015-08-01",
"type": "Microsoft.Web/sites/hostNameBindings",
"name": "[concat(parameters('siteName'),'/', parameters('fqdn'))]",
"dependsOn": [
"[concat('Microsoft.Web/sites/', parameters('siteName'))]"
],
"properties": {
"siteName": "[parameters('siteName')]"
}
}
]
はdependsOn
正しいように見えますが、リソースは で作成されMicrosoft.Web/sites/{siteNameParameter}
、ARM テンプレートをデプロイすると、次のエラー メッセージが出力されます。
InvalidTemplate : 展開テンプレートの検証に失敗しました: 'リソース 'Microsoft.Web/sites/blahblahblahblah' はテンプレートで定義されていません。使い方の詳細はhttps://aka.ms/arm-templateをご覧ください。
現在、リンクされたテンプレートの呼び出しを定義するときに、マスターテンプレートでこの依存関係を定義しています。これはもろくて壊れやすいようです。マスター ARM テンプレートで依存関係を定義するよりも良い方法はありますか?
{
"apiVersion": "2015-01-01",
"name": "SomeName",
"type": "Microsoft.Resources/deployments",
"dependsOn": [
"[concat('Microsoft.Web/sites/', parameters('siteName'))]"
],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://tempuri.org/supersecrettemplatepath/azuredeploy.json",
"contentVersion": "1.0.0.0"
},
"parameters":
{
"fqdn": {
"value": "www.tempuri.org"
},
"siteName": {
"value": "[parameters('siteName')]"
}
}
}
}