Terraform удаленное состояние для различных сред - PullRequest
0 голосов
/ 22 января 2019

Как мне управлять удаленным состоянием для разных сред?Первоначально я хотел использовать переменные в своих определениях удаленного состояния, но понял, что не могу использовать такие переменные, как:

provider "aws" {
  region = "ap-southeast-1"
}

terraform {
  backend "s3" {
    bucket = "${var.state_bucket}"
    key = "${var.state_key}"
    region = "ap-southeast-1"
  }
}

data "terraform_remote_state" "s3_state" {
  backend = "s3"
  config {
    bucket = "${var.state_bucket}"
    key = "${var.state_key}"
    region = "ap-southeast-1"
  }
}

Но понял, что в этом случае я не могу использовать переменные?Я могу жестко закодировать имя корзины, но она может не совпадать в разных средах

1 Ответ

0 голосов
/ 22 января 2019

Вы захотите использовать то, что Terraform называет рабочими пространствами. Вот документация: https://www.terraform.io/docs/state/workspaces.html

Таким образом, у вас есть часть состояния с именем: MyStateKey

Когда вы используете рабочие пространства, он добавляет имя рабочей области в конец существующего ключа. Например, если вы создали рабочую область с именем «dev», то ключ в удаленном состоянии будет «MyStateKey: dev».

Я бы предложил вам использовать некоторые соглашения, чтобы упростить использование рабочего пространства «по умолчанию» в качестве рабочего, с дополнительными рабочими пространствами, названными в честь других ваших сред. Затем, когда вы запускаете terraform, вы можете установить рабочее пространство или использовать переменную окружения TF_WORKSPACE, чтобы установить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...