3 votes

Obtenir des balises d'un groupe de ressources dans un modèle de gestionnaire de ressources Azure

À partir d'un groupe de ressources avec une balise définie nommée tag1 (je l'ai fait via le portail), j'ai le modèle de déploiement suivant dans Visual Studio :

{
      "name": "appsettings",
      "type": "config",
      "apiVersion": "2015-08-01",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('websiteName'))]"
      ],
      "tags": {
        "displayName": "website AppSettings"
      },
      "properties": {
        "Setting1":  "[resourceGroup().tags.tag1]",
        "Setting2": "[parameters('param2')]"
      }
    }

Je reçois cette erreur :

... 'La propriété d'expression de langage 'tags' n'existe pas, les propriétés disponibles sont 'id, name, location, properties'...

Mais en utilisant https://resources.azure.com, je peux voir que le groupe de ressources a effectivement la propriété de tag :

{
    "id": "/subscriptions/{someguid}/resourceGroups/resourceGroup1",
    "name": "resourceGroup1",
    "location": "brazilsouth",
    "tags": {
        "tag1": "test"
    },
    "properties": {
        "provisioningState": "Succeeded"
    }
}

Y a-t-il un moyen d'obtenir les balises du groupe de ressources à l'intérieur du modèle de déploiement ?

Mise à jour

Comme l'a souligné @juvchan, les balises doivent exister sinon cette erreur se produit. J'ai créé la balise, mais lors du déploiement du modèle depuis Visual Studio, les balises sont supprimées, tandis que lors du déploiement depuis le portail, les balises sont conservées. Cela conduit à un problème et une question différente.

La raison en est que le projet Visual Studio a un script PowerShell avec cette ligne :

# Créer ou mettre à jour le groupe de ressources en utilisant le fichier de modèle spécifié et le fichier de paramètres de modèle
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $ResourceGroupLocation -Verbose -Force -ErrorAction Stop

Mais la cmdlet New-AzureRmResourceGroup ne conserve pas les balises existantes. Soyez conscient. Solution : modifier le script pour ne pas exécuter la cmdlet si le groupe de ressources existe déjà.

1voto

juvchan Points 4633

Votre syntaxe de modèle ARM pour obtenir l'étiquette du groupe de ressources ci-dessous est correcte.

"[resourceGroup().tags.tag1]"

Vous devez vous assurer que votre groupe de ressources a les étiquettes mentionnées ci-dessus créées avant de déployer votre modèle ARM afin d'obtenir la valeur spécifique de l'étiquette.

"tags": { "tag1": "test" },

Je suis capable de reproduire votre erreur exacte lorsque j'essaie de déployer le modèle ARM pour obtenir l'étiquette du groupe de ressources qui n'est pas encore créée.

Je suis également capable d'obtenir la valeur de l'étiquette du groupe de ressources comme prévu dans mon déploiement de modèle ARM lorsque j'ai créé l'étiquette sur le groupe de ressources avant le déploiement.

{
  "id": "/subscriptions/{id}/resourceGroups/ResourceGroupwithTag",
  "name": "ResourceGroupwithTag",
  "location": "southeastasia",
  "tags": {
    "displayName": "test"
  },
  "properties": {
    "provisioningState": "Succeeded"
  }
}

Section de sortie de mon modèle ARM pour afficher l'étiquette du groupe de ressources.

"outputs": {
    "rgTag": {
        "type": "String",
        "value": "[resourceGroup().tags.displayName]"
    }
}

entrer la description de l'image ici

J'espère que cela vous aide!

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