3 votes

La référence à "Microsoft.Resources/deployments/" nécessite une version de l'API

Si j'ajoute une condition avant de déployer un modèle pour un réseau virtuel, j'obtiens toujours cette erreur : si je supprime la condition, cela fonctionne ?

a renvoyé les erreurs suivantes : Erreur : Code=InvalidTemplate ; Message=Deployment template validation failed : 'The template resource 'Microsoft.Resources/deployments/dm5DbServer' reference to 'Microsoft.Resources/deployments/dm5VirtualNetwork' requires an API version.

"resources": [
{
  "condition": "[equals(parameters('BuildDatabaseServer'), 'yes')]",
  "apiVersion": "2016-02-01",
  "name": "[variables('virtualNetworkName')]",
  "type": "Microsoft.Resources/deployments",
  "dependsOn": [],
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "uri": "[concat(parameters('_artifactsLocation'), '/', variables('virtualNetworkTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
      "contentVersion": "1.0.0.0"
    },
    "parameters": {
      "virtualNetworkName": { "value": "[variables('virtualNetworkName')]" },
      "vNetPrefix": { "value": "[variables('vNetPrefix')]" },
      "databaseSubnetPrimaryName": { "value": "[variables('databaseSubnetPrimaryName')]" },
      "databaseSubnetPrimaryPrefix": { "value": "[variables('databaseSubnetPrimaryPrefix')]" },
      "databaseSubnetPrimaryNsgName": { "value": "[variables('databaseSubnetPrimaryNsgName')]" }
    }
  }
},

Modèle appelé :

  {
  "name": "[parameters('virtualNetworkName')]",
  "type": "Microsoft.Network/virtualNetworks",
  "location": "[resourceGroup().location]",
  "apiVersion": "2016-03-30",
  "dependsOn": [
    "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('databaseSubnetPrimaryNsgName'))]",
  ],
  "tags": {
    "displayName": "[parameters('virtualNetworkName')]"
  },
  "properties": {
    "addressSpace": {
      "addressPrefixes": [
        "[parameters('vNetPrefix')]"
      ]
    },
    "subnets": [

      {
        "name": "[parameters('databaseSubnetPrimaryName')]",
        "properties": {
          "addressPrefix": "[parameters('databaseSubnetPrimaryPrefix')]",
          "networkSecurityGroup": {
            "id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('databaseSubnetPrimaryNsgName'))]"
          }
        }
      }

  {
  "condition": "[equals(parameters('BuildDatabaseServer'), 'yes')]",
  "apiVersion": "2016-02-01",
  "name": "[variables('databaseServerName')]",
  "type": "Microsoft.Resources/deployments",
  "dependsOn": [
    "[resourceId('Microsoft.Resources/deployments', variables('virtualNetworkName'))]"
  ],
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "uri": "[concat(parameters('_artifactsLocation'), '/', variables('commonTemplateArchiveFolder'), '/', variables('virtualMachineTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
      "contentVersion": "1.0.0.0"
    },
    "parameters": {
      "serverName": { "value": "[variables('databaseServerName')]" },
      "adminUserName": { "value": "[variables('databaseServerAdminUserName')]" },
      "adminPassword": { "value": "[parameters('databaseServerAdminPassword')]" },
      "serverWindowsOSVersion": { "value": "[parameters('databaseServerWindowsOSVersion')]" },
      "serverVmSize": { "value": "[variables('databaseServerVmSize')]" },
      "primaryNetworkSecurityGroupName": { "value": "[variables('databaseSubnetPrimaryNsgName')]" },
      "primarySubnetRef": { "value": "[reference(variables('virtualNetworkName')).outputs.databaseSubnetPrimaryRef.value]" },
      "primaryPrivateIPAddress": { "value": "[variables('databaseServerPrimaryPrivateIPAddress')]" },
      "serverOsDiskStorageAccountType": { "value": "[variables('databaseServerOSDiskStorageAccountType')]" },
      "serverDataDiskStorageAccountType": { "value": "[variables('databaseServerDataDiskStorageAccountType')]" },
      "serverDataDiskSizeGB": { "value": "[variables('databaseServerDataDiskSizeGB')]" },
      "monitoringAgentWorkspaceID": { "value": "[parameters('monitoringAgentWorkspaceID')]" },
      "monitoringAgentWorkspaceKey": { "value": "[parameters('monitoringAgentWorkspaceKey')]" },
      "customscripts": { "value": "[variables('customScripts')]" }
    }
  }
},

6voto

4c74356b41 Points 23968

A en juger par l'erreur, vous avez un autre déploiement d'enfant ( Microsoft.Resources/deployments/dm5DbServer ) dans le même modèle et vous utilisez une fonction de référence pour récupérer des données à partir de ce modèle et cela échoue, parce que vous ne fournissez pas la version de l'API. Consulter la documentation sur ce point. Si la ressource à laquelle vous faites référence n'est pas déployée dans le même modèle, vous devez fournir une version d'api à la fonction de référence.

reference(xxx, '2017-01-01`)

0voto

Dans mon cas, je déployais une ressource avec une condition. Le déploiement échouait avec un message d'erreur lorsque cette condition n'était pas remplie.

La raison en est que j'ai référencé la ressource conditionnelle ailleurs à l'aide de l'élément reference(...) déclaration. Il semble que les appels de référence soient toujours évalués même si la ressource ne doit pas être déployée.

L'ajout d'une condition avant l'appel de référence a permis de résoudre le problème :

if({condition}, {original Statement}, 'resource not deployed')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X