你一定要了解的Terraform

2021-11-6  |  09:10分类:简单生活  |  

HashiCorp正在筹备IPO,预计市值超100亿美金(参考)。创始人(参考)2011年大学毕业,2012年创建HashiCorp,2021年上市,又将是一个科技传奇。HashiCorp在Github上最受欢迎的项目就是Terraform,已经可以断定,Terraform会是未来资源编排服务的事实标准。

Terraform在国内的使用还不是很多,讨论也不太多。这里就聊一下为什么开发者会选择Terraform,为什么企业应该选择Terraform作为资源编排的标准:

1. Terraform目前已经支持了众多云厂商及其其他资源厂商,也可以反过来说,各个厂商都已经支持了terraform,对于各类云资源的管理,Terraform已经成为了IaC的事实标准。广泛的支持,让开发者不需要重复去学习和编写各个云厂商的API脚本,而是通过开源的方式,大家共用共建的Terraform内核能力,然后直接使用Terraform的描述性语言完成工作,直接复用了由开源社区构建的底层能力。

2. 虽然各个云产生也都有自己的资源管理服务,例如AWS的CloudFormation、Azure的Azure Resource Manager、阿里云的ROS等。但对一家中/大型企业来说,通常都是使用了多云的资源,那么选择第三方的服务才是最简洁、效率最高的方式。无需重复适配各家厂商自己定义的规范和API。

3. Terraform让基于云环境的Devops理念渗透到了底层资源上。通过tf脚本定义资源,创建资源后,后续流程可以根据tfstate状态文件,自动化的开始后续应用部署流程,无需人为介入,可以实现自动化的环境与资源部署,自动化与下游系统通信与衔接。

4. 对于开发者来说,即便是在一家小企业,使用Terraform也是最合理的选择,一方面为未来的多云扩展做好了准备。另一方面,对于开发者自己,掌握了Terraform,应该是在市场上更加有竞争力的一种技能,可以应对更大规模、更复杂环境下的资源管理。

5. 通过脚本语言定义资源,更加清晰,如果一个应用要在多个环境,部署很多的不同资源,还需要跨团队的协作,使用Terraform,就实现了用"代码描述资源",也就是大家常说的IaC(Infrastuctur as Code),更加清晰,更加容易保障多环境部署资源的一致性,也有很好的传承性,新人进来也不需要用文档或者口口相传去解释环境应该如何部署。在传统架构下是这样,在多云时代,这个优势又被放大了。

最后,关于HashiCorp和云厂商的关系,大家可以结合前两天Bluedavy那篇《国内云计算市场格局将走向何方》中的"惊悚建议"一起来看,应该更有意思。在开源厂商与云厂商的"竞合"中,可以说,开源厂商再下一城,未来更多的PaaS层会以各种方式去重塑云计算的市场格局。

下面是一个简单的例子,可以简单直观的理解一下什么是Terrafrom。

这时官方文档中国一个关于定义一个AWS EC2实例的代码(参考),这里省略了前面的安装和配置过程(注:需要配置一个Access Key用以授权)

provider "aws" {
  profile = "default"
  region  = "us-west-2"
}
resource "aws_instance" "app_server" {
  ami           = "ami-830c94e3"
  instance_type = "t2.micro"
  tags = {
    Name = "ExampleAppServerInstance"
  }
}

当然,实际的过程中,"resource"中通常还会提供更多的参数来自定义你需要的实例,例如VPC网络配置、安全组等。

之后,只需要使用如下执行命令,就可以完成资源的创建和创建后资源信息的查询:

terraform init    // 初始化环境与版本
terraform apply   // 实际创建资源
terraform show    // 查看资源创建状态

发表您的评论