【问题标题】:How to trigger terraform deployment that resides in a separate repo with Azure Pipelines?如何使用 Azure Pipelines 触发驻留在单独存储库中的 terraform 部署?
【发布时间】:2021-09-07 12:11:52
【问题描述】:

我们有一个 nodejs 应用程序,它具有 azure-pipelines 文件,它由 PR 触发并构建图像并将其发送到 AWS 上的 ECR。我们还将所有 terraform AWS 基础设施代码放在单独的存储库中。

我们希望在应用程序仓库上的管道完成并将图像推送到注册表后触发 terraform 部署。有什么好的方法可以做到这一点?

接受建议和建议。谢谢

【问题讨论】:

    标签: azure-devops azure-pipelines multiple-repositories


    【解决方案1】:

    您可以使用repository resource 从其他存储库中签出代码。从那里,只需运行应用 terraform 脚本所需的任何步骤。

    如果您想为该 terraform 设置单独的管道,还可以使用 TriggerBuild 任务。

    【讨论】:

    • 谢谢!因此,我似乎需要将 Azure Repos Git 用作存储库资源。我们还将 Terraform 工作区用作 dev、preprod、prod。因此,我们需要以 PR 或手动触发器运行特定工作区的方式对其进行设置。有了这个,如果我们使用存储库资源,我们是否还需要在 terraform 的存储库上有一个管道 yaml?或者如果我们使用TriggerBuild 方法,我们会需要它?
    • 我继续尝试了 multi repo checkout 方法,它检查了 terraform 代码所在的 repo。但这是一个好方法吗?如果我们创建两条管道,一条在应用程序仓库上,一条在 terraform 仓库上。应用程序管道启动并触发将图像名称作为变量等传递给它的 terraform 管道?
    • 这里没有好坏之分,这完全取决于哪个更适合您的需求,更易于理解和维护等。就我个人而言,我会创建两个管道,一个触发另一个。这样,您可以独立触发 terraform 基础设施(即,如果有一些不涉及应用部署的基础设施更改)。
    • 顺便说一句,terraform guide 对工作空间的看法如下:“特别是,组织通常希望在服务于不同开发阶段(例如分期与生产)的同一基础架构的多个部署之间建立强有力的分离,或者不同的内部团队。在这种情况下,用于每个部署的后端通常属于该部署,具有不同的凭据和访问控制。命名工作区不是这种情况下合适的隔离机制。"
    • 谢谢!事实上,在单独的管道中使用 terraform 可以让我们独立触发它(我们需要这样做)。关于工作空间,指南中提到的第一个案例与我们的案例非常相似,因此为什么要使用工作空间。我们有一个非常模块化和动态的 terraform 基础代码,我们需要将其部署到完全相同的不同环境或根据环境启用/禁用任何资源,我们为此使用了 CloudPosse 的模块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多