Terraform Remote Backend не заполнен - PullRequest
0 голосов
/ 20 июня 2019

Я новичок в terraform и, возможно, не понимаю, как это должно работать, но ....

Я пытаюсь настроить удаленный бэкэнд в Google Bucket Storage.Я вижу, что файл будет создан при запуске «terraform apply» в моей GCS, но файл в основном пуст.В моей локальной файловой системе будет создан файл terraform.tfstate со всей правильной конфигурацией.Я ожидал бы, что terraform.tfstate будет обновляться в моей корзине GCS, а не локально.

Ниже приведены мои настройки и как будет выглядеть вывод файла на сервере.Я не включил свой локальный файл terraform.tfstate, так как в нем есть некоторые проприетарные вещи (но он заполнен моим текущим состоянием).

Любая помощь будет принята.

main.tf

variable "cluster" {}
variable "project" {}
variable "region" {}
variable "bucket" {}
variable "terraformPrefix" {}
variable "mainNodeName" {}
variable "vpcLocation" {}
variable "nodeMachineType" {}
variable "credentialsLocation" {}


data "terraform_remote_state" "foo" {
  backend = "gcs"
  config = {
    bucket = "${var.bucket}"
    prefix = "${var.terraformPrefix}"
  }
}

provider "google" {
  //This needs to be updated to wherever you put your credentials
  credentials = "${file("${var.credentialsLocation}")}"
  project     = "${var.project}"
  region      = "${var.region}"
}

resource "google_container_node_pool" "primary_pool" {
  name       = "${var.mainNodeName}"
  cluster    = "${var.cluster}"
  location   = "${var.vpcLocation}"
  node_count = "2"

  node_config {
    machine_type = "${var.nodeMachineType}"

    oauth_scopes = [
      "https://www.googleapis.com/auth/logging.write",
      "https://www.googleapis.com/auth/monitoring",
      "https://www.googleapis.com/auth/devstorage.read_only",
      "https://www.googleapis.com/auth/service.management.readonly",
      "https://www.googleapis.com/auth/servicecontrol",
      "https://www.googleapis.com/auth/trace.append",
    ]
  }

  management {
    auto_repair  = true
    auto_upgrade = true
  }
  autoscaling {
    min_node_count = 2
    max_node_count = 10
  }
}

Состояние удаленного бэкэнда GCS:

{
    "version": 3,
    "serial": 1,
    "lineage": "760dcfe4-dee3-4875-b953-3f085439a25b",
    "modules": [
        {
            "path": [
                "root"
            ],
            "outputs": {},
            "resources": {},
            "depends_on": []
        }
    ]
}

1 Ответ

2 голосов
/ 21 июня 2019

Вы используете источник данных для определения удаленного состояния вместо внутреннего ресурса.

Таким образом, вы сможете читать только определенное вами удаленное состояние, а не записывать его.

Используйте взамен бэкэнд.

Пример:

terraform {
  backend "gcs" {
    bucket  = "tf-state-prod"
    prefix  = "terraform/state"
  }
}

Источник: https://www.terraform.io/docs/backends/types/gcs.html

...