2017-07-26 3 views
0

ARMテンプレート用のPowerShellスクリプトを使用して、いくつかのリソースをAzure、特にASE v2にデプロイしました。ARMテンプレートのif/else powershellを作成しようとしています

マイARMテンプレートを述べ、その中に条件があります。

"sv-ase-version": "v2", 

    "sv-asp-template-filenameHash": { 
     "v1": "[concat(variables('sv-baseURI'),concat('/azuredeploy-asp.v1.json',parameters('_artifactsLocationSasToken')))]", 
     "v2": "[concat(variables('sv-baseURI'),concat('/azuredeploy-asp.json',parameters('_artifactsLocationSasToken')))]" 
    }, 

を私はPowerShellで今持っているもの:私はPowerShellで追加したい何

Param(

    [string] $TemplateFile = 'azuredeploy-dev.json', 
    [string] $TemplateParametersFile = 'azuredeploy-dev.parameters.json', 

) 

$TemplateFile = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($PSScriptRoot, $TemplateFile)) 
$TemplateParametersFile = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($PSScriptRoot, $TemplateParametersFile)) 

は次のとおりです。

Param(

    [string] $TemplateFile = 'azuredeploy-dev.json', 
    [string] $TemplateParametersFile = 'azuredeploy-dev.parameters.json', 
    [string] $TemplateFilev2 = 'azuredeploy.json', 
    [string] $TemplateParametersFilev2 = 'azuredeploy.parameters.json', 

) 

#Checking if this is the correct way to do it 

if ("sv-ase-version" -eq "v1") { 

    $TemplateFile = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($PSScriptRoot, $TemplateFile)) 
    $TemplateParametersFile = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($PSScriptRoot, $TemplateParametersFile)) 

} 
else { 

    $TemplateFilev2 = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($PSScriptRoot, $TemplateFilev2)) 
    $TemplateParametersFilev2 = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($PSScriptRoot, $TemplateParametersFilev2)) 

} 

私の意図:PowerShellで変更を加えることなく、JSONファイルにスイッチを入れてください。

これは機能しますか?どのようにこれに違ってアプローチしますか?

ありがとうございました。

+0

'if(" sv-ase-version "-eq" v1 ")'これは意味がありません。これは常に偽です。あなたは何を達成しようとしていますか? – 4c74356b41

+0

sv-ase-versionの値がv1の場合、powershellに2つの変数を使用させようとしています。それがv2の場合、他の2つの変数を使用する必要があります。 –

+0

その値はどこから来ますか?現在ハードコードされている – 4c74356b41

答えて

0

それを行うための最も簡単な方法は、テンプレート内のパラメータを使用しdeploymentPrefixのようなもの、それを呼び出すことです:テンプレートに展開するかを決定

"deploymentPrefix": { 
    "type": "string", 
    "defaultValue": "dev", 
    "allowedValues": [ 
     "dev", 
     "prod" 
    ], 
    "metadata": { 
     "description": "Resources created will be prefixed with this." 
    } 
}, 

とそのパラメータの値に基づいて:

"variables": { 
    "template-dev": "someurl", 
    "template-prod": "someotherurl", 
    "template-url": "[concat('template-', parameters('deploymentPrefix))]" 
    ... 
} 

あなたのpowershellでNew-AzureRmResourceGroupDeploymentを使用し、その(devまたはprod)をパラメータに渡すと、template-url変数に何を使用するのかが分かります。

関連する問題