【问题标题】:There was a resource authorization issue: "The pipeline is not valid. > Job validate: Step TerraformTaskV1存在资源授权问题:“管道无效。> 作业验证:步骤 TerraformTaskV1
【发布时间】:2021-04-10 15:45:26
【问题描述】:

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

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

here 给出了一个解决方案,删除任务并重新添加。但它对我不起作用。

当我在一个 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 应该工作?这里没有审批问题!

【问题讨论】:

  • 不能授权(点击按钮)吗?
  • 如前所述,我做到了,但没有成功
  • 好的,怎么不完全有效?
  • 它继续显示同样的错误。

标签: azure-devops terraform azure-pipelines terraform-provider-azure terraform-template-file


【解决方案1】:

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

【讨论】:

  • @BlueClouds 如果我的回复对您有帮助,您可以考虑点赞吗?
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 2018-10-11
相关资源
最近更新 更多