Развертывание потока данных с помощью Terraform - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь развернуть шаблон потока данных с Terraform в GCloud.

Есть несколько учебных пособий, которые включают некоторый код terraform. Есть 2 варианта: использовать модуль , например, следующую ссылку или использовать ресурс , например следующую ссылку

с обоими Параметры У меня появляется следующая ошибка:

Error: googleapi: got HTTP response code 502 with body: <!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 502 (Server Error)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
  </style>
  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
  <p><b>502.</b> <ins>That’s an error.</ins>
  <p>The server encountered a temporary error and could not complete your request.<p>Please try again in 30 seconds.  <ins>That’s all we know.</ins>


  on .terraform\modules\dataflow-job\terraform-google-modules-terraform-google-dataflow-722fc1d\main.tf line 17, in resource "google_dataflow_job" "dataflow_job":
  17: resource "google_dataflow_job" "dataflow_job" {

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

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

Шаблон потока данных хранится в корзине до запуска сценария terraform.

Версия Terraform: 0.12 .19

код:

main.tf

variable "project_id" {}
<...>


provider "google" {
  version = "~> 2.8.0"
  region  = var.region
}

resource "google_dataflow_job" "dataflow_job" {
  project               = var.project_id
  region                = var.region
  zone                  = "${var.region}-a"
  name                  = var.project_name
  on_delete             = "cancel"
  max_workers           = var.max_workers
  template_gcs_path     = var.template_location
  temp_gcs_location     = "gs://${var.gcs_location}/tmp_dir"
  service_account_email = var.controller_service_account_email
  parameters = {
    inputPubSub       = var.input_PubSub_subscription
    outputPubSub      = var.output_PubSub_subscription
  }
  machine_type     = var.machine_type
}

terraform.tfvars

<...>
template_location = "gs://www/zzz/template"
gcs_location= "gs://www/yyy"
<...>

Чтобы проверить, не ошибся ли мой код, я также попытался напрямую из кода ссылка , а также с той же ошибкой.

Я пропустил какую-либо зависимость от добавить к коду?

1 Ответ

2 голосов
/ 27 января 2020

Обратите внимание, что вы объявили temp_gcs_location как "gs://${var.gcs_location}/tmp_dir", но затем в terraform.tvars вы установите gcs_location как "gs://www/yyy" (таким образом, префикс gs:// появляется дважды). В любом случае, задание должно быть запущено, но затем не может быть создано.

Я сделал минимальный пример со следующими версиями:

$ terraform --version
Terraform v0.12.20
+ provider.google v3.5.0

и используя предоставленное Google слово количество шаблон. Мой main.tf файл:

variable "project_id" {
  type        = string
  description = "GCP Project ID."
}
variable "gcs_location" {
  type        = string
  description = "GCS bucket name (no gs:// prefix)."
}

provider "google" {
  project = var.project_id
  region  = "us-central1"
  zone    = "us-central1-c"
}

resource "google_dataflow_job" "wordcount" {
  name              = "wordcount"
  template_gcs_path = "gs://dataflow-templates/latest/Word_Count"
  temp_gcs_location = "gs://${var.gcs_location}/temp"
  parameters = {
    inputFile = "gs://dataflow-samples/shakespeare/kinglear.txt"
    output = "gs://${var.gcs_location}/wordcount/output"
  }
}

и df.tfvars (изменить с соответствующими значениями):

project_id = "PROJECT_ID"
gcs_location = "BUCKET_NAME"

Я запускаю его с:

terraform apply -var-file="df.tvars"

и задание успешно создано:

google_dataflow_job.wordcount: Creating...
google_dataflow_job.wordcount: Creation complete after 3s [id=2020-01-27_...]

Дайте мне знать, если это поможет.

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