治理Terraform状态文件的最佳形式是通过云端的对立的存储,如谷歌云就用GCS。
首先要创立一个Bucket:
$ gsutil mb -p pkslow -l us-west1 -b on gs://pkslow-terraformCreating 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/p...
Reference:
通过Terraform创立GCP Pubsub