Параметризация azureSubscription из группы переменных в конвейере yaml

Я использую Yaml для конвейера DevOps Azure. Я использую для этого иерархический стиль.

У меня есть один yaml верхнего уровня: feature.yaml, который имеет следующую структуру:

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

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

У меня deploy.yaml как:

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

Однако всякий раз, когда я запускаю это из Azure DevOps, я получаю следующую ошибку:

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."

Кажется, конвейер не может разрешить значение имени azureSubscription из группы переменных.

Какие-либо предложения?

См. также:  Функция Azure Python. Прочитать Blob построчно
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 4
  1. Parth Makawana

    Я думаю, вам нужно определить параметры в deploy.yaml!

    https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=example%2Cparameter-schema

    введите описание изображения здесь

    Спасибо за ответ. Я также добавил параметры в этот файл. Однако, когда я повторяю значение переменной с помощью echo {{parameters.subName}}, его значение равно $ (subscription), которое я предоставил в feature.yaml. Перед запуском шаблона deploy.yaml предполагалось разрешить $ (subscription) из группы переменных. person Parth Makawana; 13.07.2020

    Пожалуйста! Попробуйте использовать subName: ‘$ (подписка)’. Добавьте одинарные кавычки. person Parth Makawana; 13.07.2020

    Спасибо, внесено небольшое изменение, теперь он работает без одинарных кавычек. person Parth Makawana; 13.07.2020

    Идеально! Если это вам поможет, отметьте мой ответ и проголосуйте за него. person Parth Makawana; 13.07.2020

  2. Parth Makawana

    для тех, кто ищет решения,

    Вот что вам нужно сделать: В файле верхнего уровня feature.yaml добавьте желаемое имя группы переменных и передайте параметр из шаблона, который имеет имя подписки Azure:

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

    И используйте этот параметр в шаблоне deploy.yaml:

    - task: [email protected]
      inputs:
         azureSubscription: ${{ parameters.subName}}
         keyVaultName: xxx
         secretsFilter: '*'
    

    В настоящее время известная проблема заключается в том, что мы не можем использовать переменную из группы переменных напрямую для ввода azureSubscription задачи AzureKeyVault согласно эта ветка.

    Эта работа должна работать нормально!

  3. Parth Makawana

    У нас была аналогичная проблема, потому что мы пропустили — в yaml под переменными:

    variables:
      group: ...
    

    To:

    variables:
      - group: ...
    

    Это устранило проблему для нас.

  4. Parth Makawana

    Я обнаружил, что при первоначальном анализе YAML ожидается, что группа переменных будет в области видимости. Мне нужно было переместить группу переменных в верхнюю часть файла YAML, а затем она нашла переменную подписки Azure. Не то, что я ожидал.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: