2
votes

Paramétrer azureSubscription à partir d'un groupe de variables dans le pipeline yaml

J'utilise Yaml pour le pipeline de devops Azure. J'utilise un style hiérarchique pour cela.

J'ai un yaml de haut niveau: feature.yaml qui a la structure suivante:

There was a resource authorization issue: "The pipeline is not valid. Job deploy: Step AzureKeyVault input ConnectedServiceName references service connection $(paramaters.subName) which could not be found. The service connection does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz."

J'ai deploy.yaml comme:

stages:
    - stage: deploy
      jobs:
        - job: deploy
          steps:
          - task: AzureKeyVault@1
            inputs:
              azureSubscription: $(paramaters.subName) #This should be resolved from parameter passed form feature.yaml
              KeyVaultName: ...
              SecretsFilter: '*'
              RunAsPreJob: true

Cependant, chaque fois que j'exécute cela à partir d'Azure DevOps, j'obtiens cette erreur:

trigger:
...
pool:
  vmImage: ...
  
variables:
  group: ...

stages:
  - template: deploy.yaml
    parameters:
      subName: $(subscription) #This should be taken from Variable group

Il semble que le pipeline ne soit pas en mesure de résoudre la valeur du nom azureSubscription à partir du groupe de variables.

Aucune suggestion?


0 commentaires

4 Réponses :


0
votes

4 commentaires

Merci pour la réponse. J'ai également ajouté des paramètres dans ce fichier. Cependant, lorsque je fais écho à la valeur de la variable en utilisant echo {{parameters.subName}}, sa valeur est $ (abonnement) que j'ai fourni dans feature.yaml. Il était censé résoudre $ (abonnement) à partir du groupe de variables avant de démarrer le modèle deploy.yaml.


Vous êtes les bienvenus! Essayez avec le sous-nom: '$ (abonnement)'. Ajoutez des guillemets simples.


Merci, il y a eu un changement mineur, cela fonctionne également sans guillemets simples maintenant.


Parfait! Si cela vous aide, veuillez marquer et voter ma réponse.



0
votes

pour ceux qui recherchent une résolution,

Voici ce que vous devrez faire: Dans le fichier feature.yaml de niveau supérieur, ajoutez le nom du groupe de variables souhaité et transmettez le paramètre du modèle qui porte le nom d'abonnement azure:

- task: AzureKeyVault@1
  inputs:
     azureSubscription: ${{ parameters.subName}}
     keyVaultName: xxx
     secretsFilter: '*'

Et utilisez ce paramètre dans le modèle deploy.yaml:

variables:
  - group: xxx

  - template: deploy.yaml
    parameters:
      subName: $(_subscriptionName)

C'est un problème connu actuellement que nous ne pouvons pas utiliser la variable du groupe de variables directement à l'entrée azureSubscription de la tâche AzureKeyVault selon ce thread.

Ce travail devrait fonctionner correctement!


0 commentaires

0
votes

Nous avons eu un problème similaire à celui-ci et c'est parce que nous avons manqué le - dans le yaml sous les variables:

variables:
  - group: ...

À:

variables:
  group: ...

Cela a résolu le problème pour nous.


0 commentaires

0
votes

J'ai découvert que lorsque le YAML est initialement analysé, il s'attend à ce que le groupe de variables soit dans la portée. J'avais besoin de déplacer mon groupe de variables en haut du fichier YAML, puis il a trouvé la variable d'abonnement azure. Pas ce à quoi je m'attendais.


0 commentaires