Terraform s3 бэкэнд против terraform_remote_state - PullRequest
0 голосов
/ 12 июня 2018

В соответствии с документацией , чтобы использовать s3, а не локальный файл terraform.tfstate для хранения состояний, необходимо настроить бэкэнд более или менее следующим образом:

terraform {

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

Я был

  • используя локальный (terraform.tfstate) файл
  • добавил приведенный выше фрагмент в мой provided.tf файл
  • run (снова) terraform init
  • попросил terraform перенести мое состояние в вышеуказанное ведро

... пока все хорошо ...

Но потом приходит это запутанная часть о terraform_remote_state ...

Зачем мне это нужно?

Разве мое состояние теперь не сохраняется удаленно (в вышеупомянутой корзине s3) уже?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Удаленное состояние позволяет вам сотрудничать с другими членами команды и централизованно размещать данные о состоянии вашей инфраструктуры.Помимо этого, включив s3 управления версиями, вы можете иметь управление версиями для файла состояния для отслеживания изменений.

0 голосов
/ 12 июня 2018

terraform_remote_state не для хранения вашего состояния, оно для извлечения в другом плане terraform, если у вас есть выходные данные.Это источник данных .Например, если вы выводите свой эластичный 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}"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...