Terraform Cloud正式GA
为了方便广大开源客户,Hashicorp在2019年5月决定将Terraform Cloud的远程状态管理功能免费开放给开源版用户。而上周在西雅图的Hashiconf上,为了满足中小企业的需求,Hashicorp正式推出了Terraform Cloud,这个版本也同时开放了更多的免费功能给不超过5人的团队使用。Terraform Cloud的功能分成免费版、团队版以及集中控制功能,本文主要对免费版功能进行介绍。
免费版功能
免费版功能包括版本控制集成、远程计划和实施远程计划和实施、通知及webhook、全http API驱动、状态管理、模拟计划、私有化模块注册器以及全HTTP界面。
版本控制集成
其中版本控制集成提供了对GitHub,GitLab,Bitbucket的支持。Terraform的源代码可以存储在以上三种版本控制软件中,在源文件出现变化的情况下,Terraform Cloud会自动同步源代码并进行计划和实施。除此之外,用户也可以通过命令行、图形界面或者API来进行计划和是实施。
对远程状态管理进行增强
除了之前开放的远程状态管理功能,Terraform Cloud的workspace中,还包括了保存敏感信息、提供terraform变量和环境变量的功能。
团队协作
免费版用户也可以创建团队,并且邀请不超过5名其它terraform 用户一起对组织里的Terraform workspace进行管理。
下面我们看一看具体怎样使用Terraform Cloud。
具体怎样使用Terraform Cloud
创建一个新的组织
首先需要创建一个新的组织,只有新创建的组织才会获得新功能。
与GitHub进行集成
创建新组织以后,会有自动向导引导用户集成版本控制,本文以GitHub为例。
首先选择GitHub,向导会要求用户授权:
经过这几个步骤以后,跟GitHub的集成就完成了,下面是向导自动创建一个新的workspace,将workspace与给定的repo连接。
下一步对workspace的变量进行配置。这里的变量包括以前在单机版上的环境变量,以及源代码tfvars文件中的terraform变量:
注意这里可以有选择的将一些变量标记成敏感,这样该变量的具体数值就不会在界面上显示,而其它用户甚至管理员也不能看到这个值。
变量配置完成以后,就可以通过图形界面驱动计划和实施了:
一个简单的图形界面人工驱动流程就完成了。下面看一下gitops的流程:
做一个pull request
Terraform Cloud会做一个模拟计划
Pull Request生成后,github会通知Terrform Cloud做检查,大约几秒钟以后,terraform cloud的检查结果就会反映到github界面上:
这个pull request的检查结果是正常的,用户也可以点击“details”,直接到Terraform Cloud中去查看具体的计划结果。
这个功能不但可以让用户看到代码的改变,而且可以看到这些代码改变对云资源的影响。
批准pull request
用户根据模拟计划的结果,决定批准还是拒绝这一个pull request。也可以拷贝粘贴terraform cloud的计划输出到github里来。
成功实施
PR通过以后,terraform cloud就会进行实施。
注意缺省设置下,这个实施需要批准,用户也可以在workspace通用设置里,设置成自动实施。
邀请其它用户一起管理workspace
有了这个基础以后,你可以开始邀请其他人加入你的团队(team),整个团队可以通过统一的流程来管理云资源了。
结语
本文用到的腾讯云例子可以在这里找到。可以看到这个目录中的源代码跟[腾讯云第一个例子](https://github.com/ausmartway/tencent-cloud-simple-example/tree/master/first-example)有所不同,原先用来保存腾讯云密钥的文件已经不再使用了,现在使用了环境变量进行存储。
Terraform Cloud本身就是一个pipeline,可以直接与版本控制集成,并通过gitops来进行整个云资源环境的规划和实施。如果你已经有了现成的pipeline,Terraform Cloud还可以通过HTTP API来驱动, 能够很简单的集成到pipeline里。各位还在等什么呢?