常见问题

创建 1000 台,失败 500 台如何处理?

由于 Terraform 的状态存储持久化了当前资源的状态,所以在自动化的环境中,比如 CI 执行环境下,对于偶发性质的问题,可以通过简单的重试策略来保障基础设施编排的可用性, Terraform 会继续创建失败的 500 台,大幅减少人工干预。

API 有更新如何处理?

Terraform 的状态管理中,实现了基于 Schema 版本的状态迁移机制,可以对于破坏性的变更,保持向前兼容。

Terraform 的异地容灾的架构是否是指在灾备地域迅速拉起另一套基础设施?

不完全是,Terraform 负责管理基础设施从创建到销毁的整个生命周期,对于容灾切换可以借助外部的方式来实现,有几种可行的方式:

  • 使用 Terraform 创建两套异地的 云知芯 基础设施,通过全局负载均衡做容灾切换
  • 当监控指标达到异常触发条件时,用程序调用 Terraform 迅速拉起另一套基础设施

集群的扩容是否支持? 会影响到现有的资源么?

通过简单的增加 count 的值即可水平扩容相同配置的实例。不会影响到现有的资源。

没有 provider 的支持怎么用?

可以使用命令行与 Terraform 配合使用,Terraform 可以使用 Provisioner 执行任意脚本,比如通过 local-exec/remote-exec 脚本,将标准输出导出到文件中,再通过文件加载进来,纳入 Terraform 的管理,依然享有 Terraform 基础设施即代码的优势。

部分机房不通外网,如何转换成 Terraform 接入?

云知芯 Terraform 已经支持 BaseUrl,可以调用内网 云知芯 API。

创建 100 台主机需要多少时间?

Terraform 天生支持并行资源编排,理论上和创建 1 台主机所需的时间是一个数量级,需要的时间取决于最晚创建成功的那台主机所需的时间; 目前 Terraform 默认的最大并发数是 10,也就是说创建 100 台云主机相当于创建 10 台的时间; 另外可以通过在执行命令 terraform apply -parallelism=n 来设置最大并发数 n。

API GW 是否可以抗住 Terraform 高并发的调用场景?

实际使用中,确实出现过创建主机,锁超时的情况,但这也是我们的 API 需要解决的问题,需要大家一起努力。

是否所有的可用区都可以使用 Terraform?

由于 Terraform 基于 云知芯 API。对于大部分 IaaS 产品,只要 API 支持,我们就支持。

用户如何升级版本及知晓升级? 用户可不可以不升级?

可以通过 Terraform 插件仓库,拿到 云知芯 Provider 的最新版本,这个操作是由 terraform init 命令完成的。 Terraform 支持在配置文件中使用版本锁定语法,指定一个具体的版本,也可以指定一个版本范围。