Как создать несколько таблиц с помощью terraform в Bigquery GCP? - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в терраформе. Пожалуйста, дайте мне знать, где я делаю неправильно. Ниже приведен мой код main.tf:

resource "google_bigquery_dataset" "demo" {
  dataset_id                  = "${var.db_id}"
  friendly_name               = "${var.friendly_name}"
  location                    = "${var.region}"
  default_table_expiration_ms = "3600000"
  labels = {
    env = "default"
  }
}
resource "google_bigquery_table" "demo" {
  dataset_id = "${var.db_id}"
  table_id   = "${var.table}"
  time_partitioning {
    type = "DAY"
  }
  labels = {
    env = "default"
  }
  schema = <<EOF
[
  {
    "name": "br_op_inventory_a",
    "type": "STRING",
    "mode": "NULLABLE"
  },
  {
    "name": "state",
    "type": "STRING",
    "mode": "NULLABLE"
  }
]
EOF
}

resource "google_bigquery_table" "devops" {
  dataset_id = "${var.db_id}"
  table_id   = "${var.table_1}"
  time_partitioning {
    type = "DAY"
  }
  labels = {
    env = "default"
  }
  schema = <<EOF
[
  {
    "name": "br_op_inventory_a",
    "type": "STRING",
    "mode": "NULLABLE"
  },
  {
    "name": "state",
    "type": "STRING",
    "mode": "NULLABLE"
  }
]
EOF
}

, а вот мой код variables.tf:

variable "friendly_name" {
    default="test"
    }
variable "region" {
    default="asia-south1"
    }
variable "db_id" {
    default="operation_performance_test_2"
    }
variable "table" {
    default="sample_demo"
    }
variable "table_1" {
    default="price_inventory"
    }

все работает нормально, когда я запускаю команды terraform init и terraform plan. Но когда я пытаюсь запустить команду terraform apply, я получаю следующую ошибку:

google_bigquery_table.demo: Creating...
google_bigquery_table.devops: Creating...
google_bigquery_dataset.demo: Creation complete after 4s [id=projects/midyear-cursor-264117/datasets/operation_performance_test_2]

Error: googleapi: Error 404: Not found: Dataset midyear-cursor-264117:operation_performance_test_2, notFound

  on main.tf line 10, in resource "google_bigquery_table" "demo":
  10: resource "google_bigquery_table" "demo" {



Error: googleapi: Error 404: Not found: Dataset midyear-cursor-264117:operation_performance_test_2, notFound

  on main.tf line 35, in resource "google_bigquery_table" "devops":
  35: resource "google_bigquery_table" "devops" {

Когда я снова пытаюсь выполнить команду terraform apply, обе таблицы создаются. Ниже приведена консоль:

google_bigquery_table.devops: Creating...
google_bigquery_table.demo: Creating...
google_bigquery_table.devops: Creation complete after 3s [id=projects/midyear-cursor-264117/datasets/operation_performance_test_2/tables/price_inventory]
google_bigquery_table.demo: Creation complete after 4s [id=projects/midyear-cursor-264117/datasets/operation_performance_test_2/tables/sample_demo]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed

Почему таблицы не создаются, когда я запускаю команду terraform apply в первый раз? Пожалуйста, помогите мне решить эту проблему.

1 Ответ

1 голос
/ 07 апреля 2020

Я цитирую свой комментарий как ответ, чтобы поддержать дальнейших участников в их исследовании по той же теме.

В вашем текущем сценарии dataset создание немного задерживается во время выполнения Bigquery, поэтому все запросы с расширением tables просто приостанавливаются с вышеупомянутой ошибкой. Можно рассмотреть возможность корректировки кода Terraform с помощью аргумента disabled_on , использующего зависимость в желаемом пути выполнения.

...