Terraform

install:

https://learn.hashicorp.com/tutorials/terraform/install-cli


CLI

操作工作目录

// 初始化目录,会根据配置下载和安装provider.
terraform init

terraform get

操作tf文件

// 格式化文件
terraform fmt -recursive

// 验证文件
terraform validate 

// 可以通过终端验证函数.
terraform console

操作基础设施:

terraform plan
terraform plan -out test.tfplan

terraform apply -auto-approve
terraform apply test.tfplan

terraform destroy

检查基础设施:

terraform show
terraform graph
terraform output
terraform state list/show

认证:

terraform login
terraform logout

TF

https://www.terraform.io/language

注释:

# comment 
// comment
/* comment */

backend and state

https://www.terraform.io/language/settings/backends

https://www.terraform.io/language/state


provider


data sources

data source: 获取服务的参数


module

管理provider上的模块/服务.定义了input, resource/data source, output的就可以认为是module.

meta-arguments

  • providers
  • depends_on
  • count
  • for_each

resources

resources: 创建服务的参数

meta-arguments

  • depends_on
  • count
  • for_each
  • provider
  • lifecycle

provisioner

特殊的resource,可以在本地或远程机器做一些准备工作。


Variable

https://www.terraform.io/language/values/variables

input variable: 输入变量

local variable: 本地变量

output variable: 输出参数

子模块无法引用父模块的local变量, resource属性,input变量。但是可以通过output参数引用。

父模块无法引用子模块的local变量,resource属性。但是可以通过output参数引用,而且父模块可以通过input变量传值给子模块。

表达式

函数

workspace

多环境构建(development, UAT, production).

terraform workspace new dev
terraform workspace list
terraform select <name>

使用terraform.workspace作为参数.