Terraform s3后端与Terraform_远程_状态

Terraform s3后端与Terraform_远程_状态,terraform,Terraform,根据,要使用s3而不是本地terraform.tfstate文件进行状态存储,应大致如下配置后端: terraform { backend "s3" { bucket = "my-bucket-name" key = "my-key-name" region = "my-region" } } 我是 使用本地(terraform.tfstate)文件 在我的提供的.tf文件中添加了上述代码段 运行(再次)terraforminit terrafo

根据,要使用
s3
而不是本地
terraform.tfstate
文件进行状态存储,应大致如下配置后端:

terraform {

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

  • 使用本地(
    terraform.tfstate
    )文件
  • 在我的
    提供的.tf
    文件中添加了上述代码段
  • 运行(再次)
    terraforminit
  • terraform要求我将我的状态迁移到上面的bucket
…到目前为止还不错

但接下来是关于
terraform\u remote\u state
的令人困惑的部分

为什么我需要这个

我的状态现在不是已经远程保存了吗?(在上述s3存储桶上)?

不是为了存储你的状态,而是为了在另一个地形平面中检索,如果你有输出。这是一个好主意。例如,如果在一种状态下输出弹性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}"
}

远程状态允许您与其他团队成员协作,并在中心位置存储您的基础结构状态。
除此之外,通过启用s3版本控制,您还可以对状态文件进行版本控制,以跟踪更改。

因此,如果我不使用
输出
则不需要远程状态?正确,除非您要检索输出@pkaramolIt,否则您不需要远程状态。令人惊讶的是,我发现有许多帖子被称为“后端状态”、“远程状态”. 正如@Brandon所说,它们是不同的。如果您的地形>=0.12
data.terraform\u remote\u state.remote.outputs.eip\u id
,请确保在引用输出时包含
输出,但S3作为后端。当您说“S3后端”时,这是远程状态的后端。