Terraform s3后端vs terraform_remote_state

时间:2018-06-12 15:31:19

标签: terraform

根据documentation,要使用s3而不是本地terraform.tfstate文件进行状态存储,应该按照以下步骤配置后端:

terraform {

  backend "s3" {
      bucket = "my-bucket-name"
      key = "my-key-name"
      region = "my-region"
  }
}

我是

  • 使用本地(terraform.tfstate)文件
  • 在我的provided.tf文件
  • 中添加了上述代码段
  • 再次运行terraform init
  • terraform要求
  • 将我的州迁移到上面的桶

......到目前为止一直很好......

然后this混淆了关于terraform_remote_state ...

的部分

为什么我需要这个?

我的状态现在已经保存远程(在前面提到的s3存储桶上)吗?

2 个答案:

答案 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版本控制,您可以对状态文件进行版本控制,以跟踪更改。