You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps Pipeline Terraform Plan阶段报AADSTS900023错误求助

解决Azure DevOps Pipeline中Terraform Plan的AADSTS900023错误

错误原因

从报错信息能明确看到:Terraform尝试用字面量$(tf_var_tenant_id)作为Azure租户ID请求访问令牌,而非变量组中存储的实际租户ID值。这说明变量没有在Terraform执行阶段被正确解析替换。

排查与修复步骤

  • 确认变量组引用是否正确
    检查流水线YAML中是否已正确引用包含tf_var_tenant_id的变量组,示例:

    variables:
      - group: Your-Variable-Group-Name  # 替换为你的实际变量组名称
    

    同时要确保该变量组已授权给当前流水线使用(在变量组设置的「流水线权限」中添加对应流水线)。

  • 验证变量作用域与可访问性
    检查tf_var_tenant_id变量的作用域是否覆盖了Terraform Plan所在的阶段/作业;如果是保密变量,确认作业中已启用保密变量传递(默认允许,但若有特殊配置需核对)。

  • 检查Terraform的变量传递方式
    根据你传递变量的方式做对应验证:

    1. 环境变量传递(推荐):确保YAML中已将变量赋值给Terraform需要的ARM环境变量:
      steps:
        - task: TerraformCLI@0
          inputs:
            command: 'plan'
          env:
            ARM_TENANT_ID: $(tf_var_tenant_id)
            ARM_CLIENT_ID: $(tf_var_client_id)
            ARM_CLIENT_SECRET: $(tf_var_client_secret)
      
    2. 命令行参数传递:如果通过-var参数传递,确保格式正确:
      - script: terraform plan -var "tenant_id=$(tf_var_tenant_id)"
        displayName: Run Terraform Plan
      
    3. tfvars文件传递:如果使用terraform.tfvars,确保文件中变量值已正确替换,或通过流水线动态生成tfvars文件。
  • 临时调试验证
    在Terraform Plan步骤前添加打印变量的步骤,确认变量是否被正确解析:

    - script: |
        echo "当前解析的租户ID:$(tf_var_tenant_id)"
      displayName: Debug Tenant Variable
    

    若输出仍是$(tf_var_tenant_id),说明变量根本没被流水线加载,需回到变量组引用和权限环节排查。

突发故障的可能触发点

既然之前运行正常,突然出错,优先排查以下变更:

  • 变量组的权限被修改,导致流水线无法读取变量
  • 变量名被误修改(比如tf_var_tenant_id被重命名)
  • 流水线YAML被修改,删除了变量组引用或环境变量传递代码
  • Azure DevOps服务临时波动,可尝试重新运行流水线或重启作业

内容的提问来源于stack exchange,提问作者Pallab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:30:08