在 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 安装程序。
根据您的任务定义,您正在使用扩展中的 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 }}'