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作为参数.