terraform基本介绍
概念
Terraform 是一种用声明式语言管理基础设施( infrastructure as code,简称IaC)的工具。特点如下
- 语言简单易读,使用门槛低
- 基础设施的生命周期用代码管理,可以加入devops流水线
terraform与API/SDK的区别
区别于API,使用terraform管理云资源,不需要写大段的代码逻辑构造签名,也不需要了解API的参数细节。
区别于SDK,SDK分语言,而terraform不需要选择语言。
terraform更适合运维人员管理云上的基础设施,而API/SDK更适合研发,把资源管理逻辑嵌入业务代码中。
每个云厂商都会提供一个terraform provider,封装各产品的API。TF配置文件中的声明式语言通过terraform传入provider,由provider适配后再去调用云资源的openapi。
terraform工作流程
terraform核心流程分为3个阶段
- Write: 编写tf配置文件。
- Plan: Terraform 自动创建一个执行计划,描述接下来terraform会创建、更新或删除的资源。
- Apply: terraform按顺序执行plan所描述的操作。比如更新VPC、创建ecs。
Why Terraform?
可管理任何基础设施
几乎每个云厂商都提供了terraform provider。
在同一个terraform环境中,安装不同云厂商的provider,用相似的配置文件,可以管理不同平台的资源。多云管理的复杂度变得很低。
维护基础设施状态
Terraform会自动生成state file来记录和维护基础设施的真实状态,与本地configuration对比,制定变更计划。
声明式指令,简单易用
Terraform配置文件是声明式的,不用理清各种产品api的具体细节,provider底层会实现接口逻辑
易于协作
Terraform的运作基于配置文件,使得基础设施管理,可以通过Devops流水线来实施。