2017-03-08 12 views
1

Azure ARMテンプレートがあり、これはMicrosoft.Web/site用の設定を追加しています。ARMテンプレートに条件付きで設定値を設定する

"resources": [ 
    { 
     "apiVersion": "2016-03-01", 
     "name": "myazurefunction", 
     "type": "Microsoft.Web/sites", 
     "properties": { 
      "name": "myazurefunction", 
      "siteConfig": { 
       "appSettings": [ 
{ 
    "name": "MY_SERVICE_URL", 
    "value": "[concat('https://myservice-', parameters('env'), '.domain.ca')]" 
} 
       ]  
      } 
     } 
    } 
] 

また、parameters.environment.jsonのファイルが4つあります。たとえば、これはparameters.dev.jsonの内容です。

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01...", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
     "env": { 
      "value": "dev" 
     } 
    } 
} 

テンプレートとそのパラメータは、設定よりも慣習に適しています。これはほとんどの場合うまく機能し、次のMY_SERVICE_URL値につながります。

問題は、私たちがdev環境のための規則を破るしたいということです。我々は唯一の環境のための規則を破るためにARMテンプレートを設定するにはどうすればよい

:つまり、我々はそれが次のようになりますMY_SERVICE_URLをしたいですか?

私はまずこのような条件を使用しますが、そのようなARM関数は使用できないように見えます。

"name": "MY_SERVICE_URL", 
"value": "[parameters('env') -eq 'dev' 
    ? 'https://abc123.foo.bar.baz.ca' 
    : concat('https://myservice-', parameters('env'), '.domain.ca')]" 

答えて

2

だけパラメータに依存する変数を作成します。

"parameters": { 
... 
"DeploymentType": { 
    "type": "string", 
    "allowedValues": [ 
     "Dev", 
     "Prod" 
    ] 
} 
... 
"variables": { 
    "Dev": "https://some_service-ci.domain.com", 
    "Prod": "https://abc123.foo.bar.baz.com", 
    "DeploymentVariable": "[variables(parameters('DeploymentType'))]", 
... 
"appSettings": [ 
    "name": "MY_SERVICE_URL", 
    "value": "[variables('DeploymentVariable')]" 
] 
... 

オクラホマので、どのようにこの仕事はありません。パラメータ 'DeploymentType'を渡すと、PRODまたはDEVとなります。あなたはDEV "DeploymentVariable": "[variables(parameters('DeploymentType'))]",を渡す場合 - これは"[variables('Dev')]"に評価し、質問に例えば"Dev": "https://some_service-ci.domain.com",

+1

申し訳ありませんが、タイプミスを修正して、コメントを追加しました@ ShaunLuttin – 4c74356b41

0

の値を取得し、答えはこのように見てしまった:

"variables": { 
    "myServiceUrl_default": "[concat('https://myservice-', parameters('env'), '.domain.ca')]", 
    "myServiceUrl_dev": "https://abc123.foo.bar.baz.ca", 
    "myServiceUrl_ci": "[variables('myServiceUrl_default')]", 
    "myServiceUrl_qa": "[variables('myServiceUrl_default')]", 
    "myServiceUrl_prod": "[variables('myServiceUrl_default')]", 
    "myServiceUrl": "[variables(concat('myServiceUrl_', 'parameters('env')'))]" 
}, 

... 

"appSettings: [ 
    { 
     "name": "MY_SERVICE_URL", 
     "value": "[variables('myServiceUrl')]" 
    } 
]