文件目录
provider.tf provider(提供者) 配置
terraform.tfvars 配置 provider 要用到的变量
varable.tf 通用变量
resource.tf 资源定义
data.tf 包文件定义
output.tf 输出
常用命令
创建配置文件
mkdir terraform
验证*.tf目录中是否没有其他文件,因为Terraform会加载所有文件。
初始化工作目录
terraform init
terraform init -input=false
初始化,会执行几个操作
如果设置了 -from-module 会拷贝来源 module 到当前文件夹, 支持 remote path (http/git)
Child Module Installation: 获取所有依赖的 module
Backend Initialization: 初始化 backend,默认使用 local, backend 是扩展 terraform的一种方式,可以分为两种
Standard: 很多云厂商实现了这种,用于存储 state 文件
Enhanced: 处理存储 state 文件,还可以执行,比如plan, apply
安装插件 (Plugin): 主要是 providers, 获取的时候会根据名字去 registry.terraform.io 查找信息,安装
创建执行计划
terraform plan
计划执行,会生成可能的新 state 并和旧state 做比较,输出计划
加载 backend
load config, 生成一个 Operation, OperationTypePlan 并执行
Plan 操作调用 terraform.Context 执行,生成一个 terraform.Graph, 这时候的 graph builder 是一个 PlanGraphBuilder
Build graph的操作由几个 GraphTransformer 组成,比如 ConfigTransformer 创建配置中的 Resource, LocalTransformer add local values, OutputTransformer 增加输出
Walk terraform.Graph: walkOperation 为 walkPlan, walk 操作会有多个 goroutine (vertex两倍数量) 并发执行(考虑依赖关系)
Walk 对每个 vertex 执行 EnterPath,EnterEvalTree 等操作
每个 vertex 如果能 Eval,会被 Evaluation
创建一个计划并将其保存到本地文件中tfplan
terraform plan -out=tfplan -input=false
检查当前状态
terraform show
执行计划
terraform apply
应用存储在文件中的计划tfplan
terraform apply -input=false tfplan
应用计划自动批准
terraform apply -input=false -auto-approve
释放资源
terraform destroy
多环境部署
terraform workspace select QA