2017-12-06 5 views
0

Azure ARM配備テンプレートでcopy element機能を使用して「ネストされたforループ」を作成しようとしていますが、リソースタイプ(Microsoft.Web/sites/hostnameBindings私の場合)Azure ARMの配備要素内の要素をコピーして、複数のインスタンスを作成する

具体的には、複数のホスト名を複数のアプリケーション(azure appサービスWebサイト)にバインドしようとしています。

これは可能ですか?または、linked templatesパスを下る必要がありますか?

ここまでは私の試みですが、動作させることはできません。

parameters.json

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": {  
    "appList": { 
     "value": [ 
     { "appName": "app1", "hostNames": [ "app1.qqq.example.com", "app1.ttt.example.com" ] }, 
     { "appName": "app2", "hostNames": [ "app2.qqq.example.com" , "app2.ttt.example.com" ] }, 
     { "appName": "app3", "hostNames": [ "app3.qqq.example.com", "app3.ttt.example.com" ] }  
     ] 
    }  
    } 
} 

template.json

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": {  
    "appList": { "type": "array" } 
    }, 
    "resources": [ 
    { 
     "type": "Microsoft.Web/sites/hostnameBindings", 
     "name": "parameters('appList')[copyIndex('webAppCopy')]/parameters('appList')[copyIndex('webAppCopy')].hostNames", 
     "copy": [ 
     { 
      "name": "webAppCopy", 
      "count": "[length(parameters('appList'))]" 
     }   
     ], 
     "apiVersion": "2016-03-01", 
     "location": "[resourceGroup().location]" 
    } 
    ], 
    "outputs": {} 
} 

答えて

0

私は、ネストされた ループの直接のサポートに関するドキュメントには何も見たことがありません。次のようにしかし、あなたはおそらくnumeric functionsでこれを解決することができます:

  1. は数の-アプリの*ナンバー・オブ・アドレスあたりのアプリですテンプレート変数を定義します。この変数を呼び出してください。bindingCount
  2. bindingCountを "コピー"の数として使用
  3. リソース名を作成するときは、div関数とmod関数を使用してcopyIndexを取得し、「appインデックス」と「hostname "インデックス。 I 名前を構成する数式で、数式をインラインで実行する必要があると思います。
+0

ありがとう@JohnRusk。私はこの解決策を働かせるために、アプリケーションごとに等しい量のホスト名を用意しましたが、そうでない場合(app1に3つのホスト名があり、app2に5つのホスト名があります)、それが破損します。それでももっと一般的な解決策を探しています。 –

+0

"condition"要素で新しい(ish) "if"ステートメントを使用できるかどうかを確認することは価値があるかもしれませんが、copyIndexがループの反復に展開されないようにしてくださいホスト名配列。キャッチすることは、それが複雑になる可能性があり、私はcopyIndexが "condition"でサポートされているかどうかもわかりません。 –

関連する問題