使用Terraform作为API

时间:2018-03-20 15:30:51

标签: terraform

我想以编程方式使用Terraform,就像API /函数调用一样,可以在多个特定步骤中创建和拆除基础架构。例如,保留几个eip,向一个区域添加一个实例,并在不同的步骤中分配其中一个IP。 Terraform目前将在本地运行,而不是在服务器上运行。

我想知道是否有建议的方法/最佳做法来创建配置以支持此功能?到目前为止,似乎我的选择是:

  1. 正确定义输入/输出,严重依赖资源分离,模块,计数参数和插值。
  2. 将配置文件生成为JSON,这似乎不太常见
  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

我建议使用第三方构建/部署工具(例如JenkinsBambooTravis CI等来管理由您管理的基础架构的发布,而不是直接使用Terraform。 Terraform。原因是您应该以与应用程序代码完全相同的方式处理您的Terraform代码(即具有适当的构建/发布管道)。作为额外的奖励,这些工具集成了标准API,可用于执行构建和部署过程。

如果您选择不创建构建/部署管道,则其他选项是使用RunDeck等工具,它允许您在服务器上执行任意命令。它还有一个额外的好处,即拥有一个优秀的权限控制系统,只允许指定的用户执行命令。您的其他选择可能是从Terraform的开源版本升级到Pro/Premium版本。此版本包含一个集成的GUI和广泛的API

至于使用API​​通过Terraform自动创建/拆除基础架构的最佳实践,无论您使用何种工具,最佳实践都是相同的。您提到了一些好的做法,例如明确定义输入/输出并创建关注点分离,这些都是优秀的做法!我可以推荐的其他一些是:

  1. 在考虑idempotency的情况下创建所有基础架构代码。
  2. 使用模块分隔代码的常见共享部分。这样可以减少更新代码所需的位置数,从而减少推送更新时的错误点数。
  3. 从一开始就考虑可扩展性编写代码。从这开始要简单得多,而不是在为时已晚的时候进行调整。