管理Terraform狀態文件的最佳方式是通過雲端的統一的存儲,如谷歌雲就用GCS。 首先要創建一個Bucket: $ gsutil mb -p pkslow -l us-west1 -b on gs://pkslow-terraform Creating gs://pkslow-terraform ...
管理Terraform狀態文件的最佳方式是通過雲端的統一的存儲,如谷歌雲就用GCS。
首先要創建一個Bucket:
$ gsutil mb -p pkslow -l us-west1 -b on gs://pkslow-terraform
Creating gs://pkslow-terraform/...
$ gsutil ls gs://
gs://pkslow-terraform/
然後在Terraform文件中配置對應的信息:
terraform {
backend "gcs" {
bucket = "pkslow-terraform"
prefix = "state/gcp/pubsub"
}
}
初始化後,就會在Bucket上創建對應的目錄:
$ terraform init -plugin-dir=${TERRAFORM_PLUGIN}
變更生效:
$ terraform apply -auto-approve
我們在瀏覽器查看一下,發現已經成功狀態了對應的狀態文件:
通過遠程的雲端,不僅可以存入狀態文件,也可以從狀態文件讀取數據,如一些輸出變數。比如模塊A創建了一個VM,而我們可能通過這種方式獲取它的IP,以便在其它模塊使用。大致的配置如下:
data "terraform_remote_state" "foo" {
backend = "gcs"
config = {
bucket = "terraform-state"
prefix = "prod"
}
}
resource "template_file" "bar" {
template = "${greeting}"
vars {
greeting = "${data.terraform_remote_state.foo.greeting}"
}
}
代碼
代碼請查看GitHub: https://github.com/LarryDpk/pkslow-samples
Reference: