如今的云计算已经不再是那个仅仅只会计算、只会存储、只会连接的机器的集合,互联网业务的敏捷化、智能化、复杂化不断推动着云计算变得更加自动和智能。
从DevOps到IaC,从公有云、私有云到多云管理,Terraform 在基础设施管理领域的地位已经变的越来越举足轻重,用户对Terraform的喜爱也在日益增强。
目前阿里云对 Terraform 的支持已经超过了50个resource,将近20个data source,但这远远无法满足用户复杂多样的业务场景,给用户一种意犹未尽的感觉。
首先,基于 terraform 创建一台 VPC 类型的 ECS,模板如下:
由于 Terraform 暂时不支持对报警规则的创建,因此先使用 CLI 代替。
CLI命令拼接好以后,利用 <code>null_resource</code> 和 <code>local_exec</code> 来执行:
执行命令 <code>terraform apply</code>,创建ECS和报警规则:
执行结果如下:

或者,可以再次使用 <code>null_resource</code> 进行查看:
为了更方便的管理和变更资源属性,可以使用<code>environment</code> 来存放 CLI Command 中的参数值,如下所示:
值得注意的是,<code>environment</code> 要求 terraform version >= v0.11.4
更近一步,由于 API 的参数相对固定不变,为了提高 CLI Command 命令的可重用性,可以将 Command 存放在 Shell Script 中,如 “create_cloudmonitor.sh”,然后直接在模板中执行 “create_cloudmonitor.sh” 即可:
本文主要讲述了 Terraform 如何 CLI 来管理自身缺失的 resource。通过本文的介绍,我们可以发现,只要阿里云产品提供了 Open API,都可以利用 Terraform 来实现对该资源的有效管理,避免了因 Terraform resource 提供不及时而带来的不便。
目前,面向阿里云的 Terraform Provider 仍在不断的发展和完善中,欢迎大家使用和提供宝贵的意见和建议。以下是相关参考资料,欢迎大家查阅。
备注:本文所涉及到的模板,可通过附件下载和使用。