使用 terraform 和 arm 模板通过工作流部署逻辑应用程序的最佳方法?

Posted

技术标签:

【中文标题】使用 terraform 和 arm 模板通过工作流部署逻辑应用程序的最佳方法?【英文标题】:Best approach to deploy logic app with workflow using terraform and arm templates? 【发布时间】:2021-01-27 10:57:01 【问题描述】:

我计划使用 terraform 脚本来配置逻辑应用程序。但是逻辑应用的工作流程,我是通过arm模板来部署的。

这是推荐的方法吗?

谁能建议我如何使用业务流程部署逻辑应用程序?

【问题讨论】:

【参考方案1】:

就 Terraform 而言,逻辑应用有点违反直觉。它是一项 Azure 服务,旨在通过易于使用的用户界面抽象出自定义编码。在使用多个环境(例如测试、登台、生产)时,在用户界面中设计某些东西通常效果不佳。这与 Terraform 的主要目的之一严重冲突:跨多个环境匹配基础设施。

当然,你可以求助于 ARM 模板的魔力,但人类并没有发明 JSON 可读性。 Azure 从未计划将 support YAML 用于 ARM 模板。那么如何从这里着手呢?我在下面列出了我们的要求、解决方案和一个 terraform 示例。

要求

    基础设施由 Terraform 部署。 基础架构部署在 4 个匹配的环境(即 dev、tst、acc、prd)中。 为逻辑应用配置参数应该是一件容易的事。 在 GUI 中构建逻辑应用程序。

解决方案

    使用azurerm_logic_app_workflow 创建一个“空”逻辑应用资源。此资源将部署在所有环境中。它是空的,因此您会在 Azure 门户中找到没有任何内容的逻辑应用程序。这意味着在您的开发环境中,您可以使用 GUI 来设计逻辑应用。 创建一个azurerm_resource_group_template_deployment 的资源,它将仅根据条件进行部署。当您提供 arm 模板路径时,此条件为真,而在 dev 环境中不会出现这种情况。 确保azurerm_resource_group_template_deployment 依赖于azurerm_logic_app_workflow 并设置deployment_mode = "Incremental"。此外,您可以通过设置parameters_content = jsonencode(var.parameters_map) 为逻辑应用提供参数。

示例

可以在 Github 上找到一个有效的 terraform 示例。

注意:另一个高级 Azure 服务是数据工厂,它在使用 Terraform 进行自动部署时面临同样的问题。

【讨论】:

以上是关于使用 terraform 和 arm 模板通过工作流部署逻辑应用程序的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用 terraform 输出恢复 Azure ARm 模板的输出值

将 ARM 模板转换为 Terraform [关闭]

Terraform适用于现有的ARM资源。需要国家吗?

Terraform - 将类型对象作为参数传递给 Azure 模板部署

如何使用 API 或 Terraform 模板在 GCP 中创建 StackDriver 工作区

如何使用 Terraform 为 Azure 资源创建警报