我有一个模板来创建密钥保管库和其中的秘密。我还有一个 Service Fabric 模板,它需要密钥保管库中的 3 个内容:保管库 URI、证书 URL 和证书指纹。
如果我使用 powershell 创建密钥保管库和密钥,则可以轻松地从输出中手动复制这 3 个内容,并将它们粘贴到服务结构模板的参数中。但是,由于该证书与服务结构集群具有相同的生命周期,我希望做的是从密钥保管库模板链接到服务结构模板,因此当我部署密钥保管库和秘密时(顺便说一句,这是一个已使用 Base 64 编码为字符串的密钥。我可以将其作为另一个密钥保管库中的秘密...),我可以将这 3 个值作为参数传递。
所以我有两个问题。
-
如何检索手臂模板中的 3 个值。 Powershell 将它们输出为密钥保管库的“ResourceId”、秘密的“Id”和秘密的“版本”。我的尝试:
"sourceVaultValue": {
"value": "resourceId('Microsoft.KeyVault/vaults/', parameters('keyVaultName')"
},
"certificateThumbprint": {
"value": "[listKeys(resourceId('secrets', parameters('secretName')), '2015-06-01')"
},
"certificateUrlValue": { "value": "[concat('https://', parameters('keyVaultName'), '.vault.azure.net:443/secrets/', parameters('secretName'), resourceId('secrets', parameters('secretName')))]"
但certificateUrlValue不正确。您可以看到我尝试过使用和不使用 listKeys,但似乎都不起作用...(指纹位于 certUrl 本身内)
- 如果我要获得正确的值,我想尝试将它们作为参数传递给下一个模板。然而,所讨论的模板比我想传递的 3 个参数多了很多参数。那么是否可以有一个parametersLink 元素来链接到参数文件,以及一个仅用于这3 个参数的元素?或者是否有一种预期的方法可以做到这一点?
Cheers
好吧,当你回到键盘时试试这个......
1) 对于 uri,您可以使用如下输出:
"secretUri": {
"type": "string",
"value": "[reference(resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), parameters('secretName'))).secretUri]"
}
对于#2,您不能混合和匹配链接和某些值,只能是其中之一。
关于如何做到这一点的一些想法(这在一定程度上取决于您想要如何构建部署的其余部分)...
- 考虑这个问题的一种方法是不要嵌套 SF,而是将它们部署在同一个模板中,因为它们具有相同的生命周期
- 不要嵌套 SF 模板,而是嵌套 KV 模板并在 SF 模板中引用该部署的输出...
除此之外,我想不出任何优雅的东西 - 因为您想将“动态”参数传递给嵌套部署,所以唯一的方法就是在链接后面动态写入参数文件或将所有参数传递到部署中资源。
HTH - LMK 如果没有......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)