terraform 常用命令

文件目录

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

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注