Terraform - 一款管理基础设施的自动化工具
Terraform 用于快速创建或销毁各种云平台上的实例,它根据你编写的 *.tf
文件创建出需要的实例,运行一些 Provision 的脚本。
- 可以通过
brew install terraform
在 osx 上获得软件。 - 通过编写
provider "aws"
等语句声明想要的云平台,它支持几十种平台,例如 aws, googlecloud, azure, digitalocean, heroku 等等. - 通过编写
resource XXXXX xxx
语句声明需要的资源,一般来说资源是跟 provider 相关的,aws 有 aws_instance, digitcalocean 有 digitalocean_droplet 等等。 - 在 resource 中可以声明 depends_on 定义需要先有哪些资源。
- 你可以写 terraform.tfvars 或者通过环境变量
TF_VAR_*
传入敏感配置,在 tf 文件中可以通过"${var.my_digitalocean_token}"
获得配置。 - 通过运行
terraform plan
查看要运行的命令(相当于 dry run) - 通过运行
terraform apply
运行! - 变更 *.tf 文件后运行
terraform apply
, 它可以做到自动识别变更。原理是将云平台的配置存在本地的 cache 文件terraform.tfstate
中。 terraform destroy
可以删除资源。- Provision 是在资源创建出来后运行的命令,用于将资源从裸机附加上一些功能(bootstrap)。一般用于配置 IP 啊网络啊什么的。需要注意的是,它无法代替配置管理,因为它只在创建资源时运行。
- 你可以定义 output, 这样在管理云平台的资源的时候可以快速获得某些值。