Azure Resource Manager(ARM)テンプレートはLinked Templatesを使用できます。これらのリンクされたテンプレートは、ARMテンプレートのデプロイ時に作成する追加のリソースを定義できます。Azure Resource Managerの依存関係の処理リンクされたテンプレート
ARMテンプレートでは、dependenciesがサポートされているため、他のリソースが作成される前にリソースが確実に作成されます。
マスターテンプレートで作成されたリソースのリンクテンプレートに依存関係を指定したいとします。私はリンクされたテンプレートに依存関係を含めると、それは次のようになります。
"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')]"
}
}
}
}
おもしろいです!私はこれをロールバックしなければならないでしょう。 resourceGroup()。nameは、デフォルトではすべての 'dependsOn'呼び出しで自動的に設定されるはずです@ bmore-msftの理解です。それはネストされたテンプレートの場合ですか? –
- もしそれが供給されなければ、それは同じテンプレートにあると見なされます - ネストされたテンプレートは実際にはAzureRMの独立した/独立した展開です。 –
残念ながら、これは前と同じエラーメッセージを出力します。テンプレート内でリソース 'Microsoft.Web/sites/somesite'が定義されていません。 –