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?
4 Réponses :
Je pense que vous devez définir les paramètres dans le deploy.yaml!
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.
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!
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.
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.