2017-02-10 1 views
0

New-AzureRmResourceGroupDeployment 명령을 실행하면 TemplateParameterObject 매개 변수를 통해 템플릿 매개 변수를 전달할 수 있습니다. 그 간단한 속성과 배열을 위해 잘 작동하지만 참조를 위해 작동하도록 할 수 없습니다. 그래서 ARM 템플릿 매개 변수 파일과 같을 것이다 뭔가 :ARMtemplate을 배포 할 때 TemplateParameterObject 매개 변수에서 참조를 전달하는 방법

"adminPassword": { 
    "reference": { 
    "keyVault": { 
     "id": "/subscriptions/365d8c14-efa0-437e-a2c8-c3ffc8f6287a/resourceGroups/musw1-prf-jboyd-kv-rg/providers/Microsoft.KeyVault/vaults/musw1-prf-jboyd-kv" 
    }, 
    "secretName": "adminPassword" 
    } 
} 

나는이 시도 :

$parameters = @{ 
    adminPassword = @{ 
     reference = @{ 
      keyVault = @{ 
       id = $KeyVaultId 
      } 
      secretName = 'adminPassword' 
     } 
    } 
} 

New-AzureRmResourceGroupDeployment ` 
    -ResourceGroupName $ResourceGroupName ` 
    -TemplateFile $TemplateFile ` 
    -TemplateParameterObject $parameters 

하지만 내가 가진 전부입니다

배포 템플릿의 유효성 검사가 실패 : '템플릿 매개 변수'adminPassword '에 대해'13 '행과'27 '열에 제공된 값이 유효하지 않습니다.'

답변

1

, ARM 템플릿 매개 변수의 키 볼트 참조는 매개 변수 파일이 아닌 매개 변수 개체를 통해 지원 될 것으로 보인다 PowerShell을 통해 JSON 템플릿 파일을 프로그래밍 방식으로 생성하고 채우는 것입니다. 그런 다음 New-AzureRmResourceGroupDeployment으로 전달하십시오. 이렇게하면 로컬에 저장하거나 어떤 방식 으로든 일반 텍스트로 노출하지 않고 간접적으로 키 볼트 비밀을 계속 참조 할 수 있습니다.

+0

사실, 이것이 결국 내가 한 일이다. –

+0

지금 포인트를 드리 겠지만 지원을 추가 할 때 답장을 업데이트해야합니다 :) –

+0

하하 - 거래입니다;) – AndyHerb

0
$keyVaultData = Get-AzureKeyVaultSecret -VaultName vaultName -Name secretName 
$parameters = @{"param" = "data"; "secret" = $keyVaultData.SecretValue} 
New-AzureRmResourceGroupDeployment -ResourceGroupName $ResourceGroupName ` 
    -TemplateFile $TemplateFile @parameters 

또는 더 나은 옵션 - 사용 매개 변수 파일.

은 참조 : See here for the issue that's been raised with Microsoft

-TemplateParameterObject, 하나 개의 워크를 사용하는 것만 큼 쉬운 아니다 동안 : 현재 https://blogs.technet.microsoft.com/paulomarques/2016/05/27/safeguarding-your-passwords-when-deploying-azure-virtual-machines-with-azure-powershell-module-and-arm-templates-by-using-azure-key-vault/

+0

내가 틀렸다면 저를 고쳐주십시오. 그러나 이것은 매개 변수 파일의 키 저장소에 대한 참조로 정의하는 반면 ARM 템플릿을 배포하는 사람은 비밀에 대한 읽기 권한이 필요합니다. –

+0

우리는 고객이 자동차에 탑승 할 때마다 ARM 템플릿 집합을 배포하기 때문에'TemplateParameterObject'를 사용하려고합니다. 각각에는 해당 매개 변수 파일이 있습니다. 그러나 파일 사이에는 많은 중복 매개 변수가 있습니다. 이러한 모든 매개 변수 파일을 수동으로 업데이트하고 복사 및 붙여 넣기 값을 사용하는 대신 소수의 변수에서 매개 변수를 동적으로 생성하여 'TemplateParameterObject'를 통해 전달해야합니다. –

+0

나는 그 일을 할 수있는 권한이 여전히 필요하다고 확신한다. 그렇지 않으면 배포 할 수 없을 것이다 ... – 4c74356b41