带有 Key Vault 证书的 ARM 模板
ARM Template with Key Vault certificate
我遇到了一个奇怪的问题。我有 1 个 ARM 模板,用于部署 2 个环境。
我正在添加这样的证书:
{
"type": "Microsoft.Web/certificates",
"name": "[variables('certificateName')]",
"apiVersion": "2016-03-01",
"location": "[resourceGroup().location]",
"properties": {
"keyVaultId": "[parameters('almKeyVaultId')]",
"keyVaultSecretName": "[parameters('servicePrincipalCertSecretName')]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
]
},
对于我的测试环境,这成功了。
当我部署 QA 环境时,出现错误:参数 KeyVaultId 和 KeyVaultSecretName 的值无效。
但是,测试和 QA 的参数值相同(almKeyVaultId 和 servicePrincipalCertSecretName)。
知道我做错了什么吗?
更新
删除完整的 QA 资源组后,我能够重新部署完全相同的 ARM 模板。
似乎资源组应该在 Key Vault 秘密之后创建?任何想法为什么?如果我们在生产中遇到这种情况,我们不想删除整个资源组
我想我找到了这个问题的原因。
显然,创建资源组后,您不能更改秘密名称。如果这样做,将抛出上述错误。
如果要更改密文名称,需要删除资源组并重新部署所有内容。
我可以确认删除资源组会起作用,但我已将 RBAC 应用于资源组并且供应商管理我们的权限,因此重新创建资源组会导致其他问题。
我使用 resources.azure.com 从资源组中删除了证书(未在门户中的资源组中显示),导航到资源组并将其从 Microsoft.Web\Certificates 集合中删除。
我遇到了一个奇怪的问题。我有 1 个 ARM 模板,用于部署 2 个环境。
我正在添加这样的证书:
{
"type": "Microsoft.Web/certificates",
"name": "[variables('certificateName')]",
"apiVersion": "2016-03-01",
"location": "[resourceGroup().location]",
"properties": {
"keyVaultId": "[parameters('almKeyVaultId')]",
"keyVaultSecretName": "[parameters('servicePrincipalCertSecretName')]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
]
},
对于我的测试环境,这成功了。 当我部署 QA 环境时,出现错误:参数 KeyVaultId 和 KeyVaultSecretName 的值无效。
但是,测试和 QA 的参数值相同(almKeyVaultId 和 servicePrincipalCertSecretName)。
知道我做错了什么吗?
更新
删除完整的 QA 资源组后,我能够重新部署完全相同的 ARM 模板。 似乎资源组应该在 Key Vault 秘密之后创建?任何想法为什么?如果我们在生产中遇到这种情况,我们不想删除整个资源组
我想我找到了这个问题的原因。 显然,创建资源组后,您不能更改秘密名称。如果这样做,将抛出上述错误。
如果要更改密文名称,需要删除资源组并重新部署所有内容。
我可以确认删除资源组会起作用,但我已将 RBAC 应用于资源组并且供应商管理我们的权限,因此重新创建资源组会导致其他问题。
我使用 resources.azure.com 从资源组中删除了证书(未在门户中的资源组中显示),导航到资源组并将其从 Microsoft.Web\Certificates 集合中删除。