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.12data.terraform\u remote\u state.remote.outputs.eip\u id
,请确保在引用输出时包含输出,但S3作为后端。当您说“S3后端”时,这是远程状态的后端。