azure-devops - Terraform 和 Azure DevOps 管道
问题描述
我正在为我的组织使用一个通用的 terraform 模块,它位于 GitHub 中。所以,我通过 terraform 代码访问它,如下所示。
module "resourcegroup" {
source = "git::https://github.com/hashicorp/example.git//azure-modules/resourcegroup"
}
我通过 VS Code 进行 Terraform 开发,所以通过 VS Code 登录到 GitHub 并能够部署到 Azure。现在,由于我创建的 terraform 文件位于 Azure DevOps 的存储库中。我正在创建一个构建和发布管道来自动化 terraform 任务。
我的构建管道包含以下内容:
- 我的资源是 Azure Repos Git
- 有一个 Copy Files to: task 和一个 Publish Artifact: drop task
发布管道包含使用 Microsoft DevLabs 扩展创建的 Terraform 任务:
- 安装 Terraform 任务
- Terraform Init 任务,它从构建管道放置它的文件夹中读取配置目录。
- 然后是Terraform 计划和应用任务
我还通过转到项目设置 > 服务连接 > 其他 Git >提供了模块所在的 GitHub 的 URL、用户名和令牌(通过 GitHub 创建)以及用于所有管道的此连接的复选框来创建服务连接启用
我遇到的问题是:
- 由于 terraform 文件指向 GitHub 用于构建模块,因此发布管道在任务中挂起 - Terraform Init
- 错误消息是:等待来自代理的控制台输出...(-input=false也在附加命令参数下的 Terraform Init 任务中提供,但它没有解决问题)
- 在发布管道中没有提及服务连接的选项
因为我需要访问 GitHub 来创建 terraform 模块,并且还需要在 Terraform Init 中的AzureRM 后端配置下使用 Azure 订阅。如何让管道正常工作?
解决方案
错误消息是:正在等待来自代理的控制台输出...
这是正常行为。通常在管道完成后会弹出日志。如果您想查看详细日志,请在管道变量中将“system.debug”设置为 true,然后重新运行管道。
这是github上的案例,大家可以参考。
推荐阅读
- wsdl - 使用 Intellij 或 Eclipse 而不是 SOAPUI 进行 Web 服务测试
- windows-runtime - 进程外 WinRT 组件 + runFullTrust?
- grails - Grails 预订日历
- arrays - 将数组作为 bash 脚本变量传递
- python - 选择一个带有硒的按钮
- javascript - 对象中的Javascript自引用值作为同一对象的第二个值中的变量
- reactjs - React/Redux 应用程序需要 MaterialUI 旋转加载器帮助
- python - 如何将浮点数写入文本文件?(python3)
- class - 如何将结构(没有属性,只有方法)传递给三角函数?
- node.js - 更新 Nodejs 中的特定字段