小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文同时参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
Terraform
作为一个云计算领域IaC工具的一个举足轻重的产品,它是HashiCorp公司的核心产品,这家公司的核心产品一共有四个,包括Nomad
、Consul
、Vault
、Terraform
,为人熟知的是Consul
。Terraform
负责在不同的云平台之上创建出一致的基础设施,并维护管理其整个生命周期的状态。
HashiCorp的产品线主要有Nomad、Consul、Valut以及Terraform,另外还有Vagrant以及Packer两个开源工具,2020年还推出了Boundary以及Waypoint两个新产品。
其官网是这样介绍它的:Terraform
是一种开源基础设施即代码软件工具,可提供一致的 CLI 工作流来管理数百个云服务。总体而言,Terraform 是一个安全的,可扩展的,有扎实的理论基础,也有渐进式工程实践的资源编排工具。
Terraform 的关键特性:基础设施即代码、多云编排、执行计划与过程分离、统一的资源状态管理,是我们在新一代资源编排系统实践中的重要保障。
工欲善其事必先利其器,为了体验这个产品,首先我们先来安装它。
对于Ubuntu用户:
1 | csharp复制代码curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - |
对于CentOS用户(我是基于此安装的,没毛病):
1 | arduino复制代码sudo yum install -y yum-utils |
对于Mac用户:
1 | bash复制代码brew tap hashicorp/tap |
对于Windows用户,官方推荐的包管理器是choco,可以去chocolatey.org/ 下载安装好chocolatey后,以管理员身份启动powershell,然后:
1 | 复制代码choco install terraform |
如果只想纯手动安装,那么可以前往Terraform官网下载对应操作系统的可执行文件(Terraform是用go编写的,只有一个可执行文件),解压缩到指定的位置后,配置一下环境变量的PATH,使其包含Terraform所在的目录即可。
安装成功以后,我们验证一下是否安装成功。
Terraform早期仅支持使用HCL(Hashicorp Configuration Language)语法的.tf文件,近些年来也开始支持JSON。HashiCorp甚至修改了他们的json解析器,使得他们的json可以支持注释,但HCL相比起JSON来说有着更好的可读性。
这些因为团队的喜好和需求有差异性,我使用JSON是因为用其他代码来生成相应的JSON格式的Terraform代码(比如自研的GUI工具,通过拖拽的方式定义基础设施,继而生成相关代码)是相对契合当前的技术栈,并且假使你当初使用的HCL,也是可以通过Terraform提供的工具转换成json语法格式。
Terraform与以往诸如Ansible等配置管理工具比较大的不同在于,它是根据代码计算出的目标状态与当前状态的差异来计算变更计划的,有兴趣的读者可以在执行terraform apply
以后,直接再执行一次terraform apply
,看看会发生什么,就能明白他们之间的差异。
本文转载自: 掘金