當在配置的頂級模塊(運行terraform plan
的目錄)中使用輸出時,其值將記錄在Terraform狀態中。
爲了從另一個配置中使用此值,必須將狀態發佈到可由其他配置讀取的位置。通常的做法是使用Remote State。
隨着對第一配置啓用遠程狀態,因此能夠從使用the terraform_remote_state
data source所述秒配置讀取所得到的值。
例如,它可以通過使用類似如下的後端配置,以保持在亞馬遜S3的第一配置狀態:
terraform {
backend "s3" {
bucket = "example-s3-bucket"
key = "example-bucket-key"
region = "us-east-1"
}
}
加入這第一次配置後,Terraform會提示你運行terraform init
初始化新的後端,其中包括遷移存儲在S3上的現有狀態。
然後在秒配置這可以通過提供相同的配置到terraform_remote_state
數據源檢索到:
data "terraform_remote_state" "example" {
backend = "s3"
config {
bucket = "example-s3-bucket"
key = "example-bucket-key"
region = "us-east-1"
}
}
resource "aws_instance" "foo" {
# ...
vpc_security_group_ids = "${data.terraform_remote_state.example.security_group_id}"
}
注意,由於第二配置從所述第一讀出的狀態,有必要terraform apply
第一次配置,以便這個值將被實際記錄在狀態中。任何時候在第一個輸出發生變化時,第二個配置都必須重新應用。
如果我有本地'state'文件,該怎麼辦? –