Terraform 是一個 IT 基礎架構自動化編排工具,它的口號是 "Write, Plan, and create Infrastructure as Code", 基礎架構即代碼。具體的說就是能夠用代碼來管理維護 IT 資源,好比針對 AWS,咱們能夠用它建立,修改,刪除 S3 Bucket, Lambda, EC2 實例,Kinesis, VPC 等各類資源。而且在真正運行以前能夠看到執行計劃(即幹運行-dryrun)。因爲狀態保存到文件中,所以可以離線方式查看資源狀況 -- 固然,前提是不要在 Terraform 以外對資源進行修改。html
Terraform 配置的狀態除了可以保存在本地文件中,也能夠保存到 Consul, S3, azure, http, swift 等處。swift
Terraform 是一個高度可擴展的工具,經過 Provider 來支持新的基礎架構,AWS 不過爲目前官方內建 68 個 Providers 中的一個。其餘能用 Terraform 的地方有 Alicloud(阿里雲, 實名制備案才能用), Google Cloud, Heroku, Kubernetes, Microsoft Azure, MySQL, RabbitMQ, Docker 等等。願意的話能夠寫本身的 Provider, 如搞個 Kafka 的話,用來管理 Topic 等的建立,維護工做。架構
Terraform 以前咱們對 AWS 的操做用的是 awscli, 或 Serverless。awscli 什麼都能作,但它是無狀態的,必須明確用不一樣的命令來建立,修改和刪除。Serverless 不是用來管理基礎架構的,用它建立 Lambda 時建立資源都是很麻煩的事。AWS 提供的 CloudFormation 纔是與 Terraform 較相似的工具,可是看到用法就頭疼。 閱讀全文 >>less