Шаблон Azure ARM - создание секретов KeyVault в Keyvault в другой группе ресурсов - PullRequest
0 голосов
/ 18 апреля 2019

Я развертываю виртуальную машину в Azure.Имя пользователя и пароль создаются автоматически и передаются как параметры при развертывании.Группа ресурсов, в которой развернут vm, также передается в качестве параметра, поэтому может быть любым.

My Keyvault находится в определенной группе ресурсов, и здесь должны храниться имя пользователя и пароль vm.

Когда Keyvault находится в той же группе ресурсов, что и VM, он работает нормально.Но когда он находится в другой группе ресурсов, я получаю следующую ошибку:

"error": {
    "code": "ParentResourceNotFound",
    "message": "Can not perform requested operation on nested resource. Parent resource 'mykeyvault' not found."
  }
} undefined

Это часть шаблона ARM, где я создаю секреты.

{
      "type": "Microsoft.KeyVault/vaults/secrets",
      "name": "[concat(variables('keyVaultName'), '/', variables('AdminUsername'))]",
      "apiVersion": "2018-02-14",
      "properties": {
        "contentType": "Secret",
        "value": "[variables('AdminUsername')]"
      },
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
      ]
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "name": "[concat(variables('keyVaultName'), '/', parameters('VMName'),'-AdminPassword')]",
      "apiVersion": "2018-02-14",
      "properties": {
        "contentType": "Secret",
        "value": "[parameters('AdminPassword')]"
      },
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
      ]
    },

Я также пыталсязаменить переменную keyVaultName на идентификатор ресурса keyvault, но это дает другую ошибку «Неверная длина сегмента»

1 Ответ

0 голосов
/ 18 апреля 2019

это происходит потому, что ARM Templates развертывает ресурсы в определенной группе ресурсов. Если KV находится в другой группе ресурсов, вам нужно использовать вложенное развертывание и нацелиться на эту группу ресурсов, что-то вроде этого:

{
    "apiVersion": "2017-05-10",
    "name": "nestedTemplate",
    "type": "Microsoft.Resources/deployments",
    "resourceGroup": "[parameters('kvResourceGroup')]",
    "properties": {
        "mode": "Incremental",
        "template": {
            "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "parameters": {},
            "variables": {},
            "resources": [
                {
                    "type": "Microsoft.KeyVault/vaults/secrets",
                    "name": "[concat(variables('keyVaultName'), '/', variables('AdminUsername'))]",
                    "apiVersion": "2018-02-14",
                    "properties": {
                        "contentType": "Secret",
                        "value": "[variables('AdminUsername')]"
                    },
                    "dependsOn": [
                        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
                    ]
                },
                {
                    "type": "Microsoft.KeyVault/vaults/secrets",
                    "name": "[concat(variables('keyVaultName'), '/', parameters('VMName'),'-AdminPassword')]",
                    "apiVersion": "2018-02-14",
                    "properties": {
                        "contentType": "Secret",
                        "value": "[parameters('AdminPassword')]"
                    },
                    "dependsOn": [
                        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
                    ]
                }
            ]
        }
    }
},
...