-1

当我拆分 yaml 以制作模板时,我在 Azure devops 管道中收到此错误

存在资源授权问题:“管道无效。作业验证:步骤 TerraformTaskV1 输入 backendServiceArm 引用服务连接 azurerm 无法找到。服务连接不存在或未被授权使用。有关授权详情,请参阅到https://aka.ms/yamlauthz。”

这里给出了一个解决方案来删除任务并再次添加。但这对我不起作用。

当我在一个 yaml 文件中使用 terraform 时,它起作用了。

stages:
  - stage: validate
    jobs:
    - job: validate
      continueOnError: false
      steps: 
      - task: TerraformInstaller@0
        displayName: 'install'
        inputs:
          terraformVersion: '0.12.26'
      - task: TerraformTaskV1@0
        displayName: init
        inputs:
          provider: 'azurerm'
          command: 'init'
          backendServiceArm: 'azure-spn'
          backendAzureRmResourceGroupName: 'terraform-rg'
          backendAzureRmStorageAccountName: 'adsstatetr'
          backendAzureRmContainerName: 'sktfcontainer'
          backendAzureRmKey: 'terraform.tfstate'
      - task: TerraformTaskV1@0
        displayName: validate
        inputs:
          provider: 'azurerm'
          command: 'validate'

当我一分为二(模板)

stages:
  - stage: validate
    jobs:
    - template: terraform-validate.yml
      parameters:
        version: '0.12.26'
        sp: 'azurerm'
        rg: 'terraform-rg'
        sg: 'adsstatetr'
        sgContainer: 'sktfcontainer'
        skey: 'terraform.tfstate'

它失败并给出了上面写的错误!

parameters:
 version: ''
 sp: ''
 rg: ''
 sg: ''
 sgContainer: ''
 skey: ''
jobs: 
  - job: validate
    continueOnError: false
    steps: 
    - task: TerraformInstaller@0
      displayName: 'install'
      inputs:
        terraformVersion: '0.12.26'
    - task: TerraformTaskV1@0
      inputs:
        provider: 'azurerm'
        command: 'init'
        backendServiceArm: '${{ parameters.sp }}'
        backendAzureRmResourceGroupName: '${{ parameters.rg }}'
        backendAzureRmStorageAccountName: '${{ parameters.sg }}'
        backendAzureRmContainerName: '${{ parameters.sgContainer }}'
        backendAzureRmKey: '${{ parameters.skey }}'

它还显示了一个奇怪的授权资源。单击“批准”也无法解决。又是为什么?如果服务连接有任何问题,为什么我的单文件 yaml 应该工作?这里没有审批问题!在此处输入图像描述

4

2 回答 2

3

在作为 arm 连接的工作示例中,您传递backendServiceArm: 'azure-spn'并且在模板中它是sp: 'azurerm',所以如果您更改为sp: 'azure-spn',您应该没问题。

于 2021-01-04T21:38:56.380 回答
0

您的管道无法识别您传递的任何变量或参数。如果它的识别仍然存在问题而不是检查语法。比如 if 语句不在舞台之下,等等

于 2021-12-10T20:30:15.447 回答