ADO:TerraformCLI@1 初始化任务要求 az 登录

问题描述 投票:0回答:1

在 ADO YAML 管道中使用以下任务:

                - task: TerraformCLI@1
                  displayName: 'Terraform Init'
                  inputs:
                    provider: 'azurerm'
                    command: 'init'
                    workingDirectory: '$(Pipeline.Workspace)/ProjectFiles'
                    backendServiceArm: "ado-sub-Contributor-${{ parameters.ServiceConnectionBU }}-${{ env.name }}-$(System.TeamProject)"
                    commandOptions: '-backend-config=$(Pipeline.Workspace)/ProjectFiles/${{ env.backendConfigFile }}'

导致 ADO 出错:

Error: Error building ARM Config: obtain subscription(4b730757-1457-4ab7-9091-7f9ce3e26c46) from Azure CLI: parsing json result from the Azure CLI: waiting for the Azure CLI: exit status 1: ERROR: Please run 'az login' to setup account.

使用 Jason Johnson 的 Azure Pipelines Terraform 任务 DevOps 扩展声明这应该是一种有效的连接方法。但是,无论配置如何,包括尝试

environmentServiceName
runAzLogin: true
都会导致完全相同的错误消息。

对于为什么 ADO 无法通过我的预配置服务连接进行身份验证,您有什么想法或建议吗?请注意,如果我运行 AzureCLI@2 任务来执行

az account show
,服务连接将正常工作。运行 Windows VM、最新的 PS、TF 和 azcli 安装程序。

azure-devops terraform
1个回答
0
投票

根据您的任务定义,您正在使用扩展中的 Terraform CLI 任务:Azure Pipelines Terraform 任务

问题原因是任务语法不正确。任务中提交的

provider
无效。在这种情况下,它不会忽略
azurerm
类型设置并更改为使用默认类型:
local

这种情况下,不会读取服务连接中的认证信息

您需要更改任务参数:

来自:

provider: 'azurerm'

致:

backendType: 'azurerm'

任务示例:

- task: TerraformCLI@1
  displayName: 'Terraform Init'
  inputs:
    backendType: 'azurerm'
    command: 'init'
    workingDirectory: '$(Pipeline.Workspace)/ProjectFiles'
    backendServiceArm: "ado-sub-Contributor-${{ parameters.ServiceConnectionBU }}-${{ env.name }}-$(System.TeamProject)"
    commandOptions: '-backend-config=$(Pipeline.Workspace)/ProjectFiles/${{ env.backendConfigFile }}'
© www.soinside.com 2019 - 2024. All rights reserved.