【问题标题】:Where can I run terraform?我在哪里可以运行 terraform?
【发布时间】:2019-09-07 01:47:33
【问题描述】:

这主要是一个研究问题,因为我似乎无法找到可以为我的用例运行 Terraform 的地方。

我想构建一个 Web 前端,我可以输入配置的详细信息,单击一个按钮,前端会告诉 Terraform 构建基础架构。我知道我可以使用 cli,或者创建一个 .tf 文件,然后使用 Jenkins 运行它。但我正在寻找一种基本上通过事件调用 Terraform cli 命令的方法,例如 lambda 调用。

我应该为此使用云提供商 sdks 吗?

有没有人做过类似的事情,如果有,你能分享一下你的经验吗?

【问题讨论】:

  • 我无法理解您的意思是“通过 lambda 调用等事件调用 Terraform cli 命令”。你能解释清楚一点吗?
  • 嗨@Charlew,老实说,不确定如何更好地解释它。我们需要 Terraform 的 cli 才能从我收集的内容中实际使用它,我想要一个 UI 来运行 Terraform,而不是通过单击按钮运行脚本。我正在尝试使其尽可能无服务器,但认为带有 Terraform 的容器似乎是唯一的选择。但是如何通过单击按钮调用 Terraform 命令?
  • 您需要创建一个前端以向客户显示您希望的按钮,并创建一个后端以在客户单击相应按钮时实现。可以在容器中运行后端。许多语言都可以实现它。这一切都取决于你。
  • 如果不自己手动运行,如何在容器中运行 cli 命令?
  • 按钮点击后。前端一切都很好,我似乎无法找到如何让容器与 cli 一起运行。也许将参数传递给它?

标签: automation terraform terraform-provider-aws terraform-provider-azure lambda-architecture


【解决方案1】:

你可以使用SLD (Stack-Lifecycle-Deployment)

它有一个非常酷的 ui 和 rest api

【讨论】:

    【解决方案2】:

    我想我发现了一些非常有用的东西!

    Lambda Terraform Call using Python

    这就是我的想法,生成一个 Terraform 计划文件,放入一个 S3 存储桶,然后调用 lambda 调用来启动基础架构。所有这些都可以通过前端配置设置和 API 调用来完成。

    我希望这对其他人有用,一旦我使用它,我可能会回来添加。

    【讨论】:

    • 您还可以让 EC2 实例运行 terraform 计划并在您的 cicd 系统中应用。
    • 嘿@turtlesallday,感谢您发送选项。是的,如果我不能让它按照我的想法工作,那将是我的故障转移。我正在尝试使此解决方案尽可能无服务器。只需为使用的计算或资源付费。将是一个棘手的问题,但很高兴尝试解决它:)
    • 您的问题将是当 Terraform 需要超过 15 分钟的 Lambda 函数最大执行时间时,因为您想要执行诸如创建 Cloudfront 分发或 Elasticsearch 域之类的操作。然后 Terraform 将在执行过程中中止,导致悬空资源未记录在状态文件中,并且状态文件仍处于锁定状态(假设您正在使用状态锁定并且应该使用),这可能是灾难性的。
    • @ydaetskcoR - 是的,这听起来像是一个问题,我不能假设时间段总是相同的。我也在考虑 Ansible,但同样,最大时间段会到来。开始更多地针对在事件上运行的容器,然后执行 TF 构建:/
    • 我将 Terraform 作为 Gitlab CI 作业运行以进行部署(Terraform 恰好在容器中运行),这很好。我们的 CI 基础设施会自动扩展和扩展,因此它不会花费我们太多的工程时间或 AWS 运行成本。我当然会推荐这样的东西,而不是你的回答中的一些自制的东西。
    猜你喜欢
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2021-03-09
    • 2012-12-19
    相关资源
    最近更新 更多