根据documentation,要使用s3
而不是本地terraform.tfstate
文件进行状态存储,应该按照以下步骤配置后端:
terraform {
backend "s3" {
bucket = "my-bucket-name"
key = "my-key-name"
region = "my-region"
}
}
我是
terraform.tfstate
)文件provided.tf
文件terraform init
......到目前为止一直很好......
然后this混淆了关于terraform_remote_state
...
为什么我需要这个?
我的状态现在已经保存远程(在前面提到的s3存储桶上)吗?
答案 0 :(得分:6)
terraform_remote_state
不是用于存储你的状态用于在另一个terraform计划中检索。这是一个data source。例如,如果您在一个状态下输出弹性IP地址:
resource "aws_eip" "default" {
vpc = true
}
output "eip_id" {
value = "${aws_eip.default.id}"
}
然后想要在另一个状态中检索它:
data "terraform_remote_state" "remote" {
backend = "s3"
config {
bucket = "my-bucket-name"
key = "my-key-name"
region = "my-region"
}
}
resource "aws_instance" "foo" {
...
}
resource "aws_eip_association" "eip_assoc" {
instance_id = "${aws_instance.foo.id}"
allocation_id = "${data.terraform_remote_state.remote.eip_id}"
}
答案 1 :(得分:0)
远程状态允许您与其他团队成员协作,以及存储基础架构状态的中央位置。 除此之外,通过启用s3版本控制,您可以对状态文件进行版本控制,以跟踪更改。