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, 这样在管理云平台的资源的时候可以快速获得某些值。