Как добавить перенаправление хоста со вторичного на первичный домен с помощью Terraform и Google Cloud - PullRequest
3 голосов
/ 19 июня 2020

Например, у меня два домена: example.com и example.org. Я хочу сделать основной домен example.com и настроить перенаправление хоста (в терминах облака Google) с example.org и www. * На example.com. Интуитивно кажется, что мне нужно создать два «сопоставителя путей», один из которых будет обслуживать серверную часть, а другой - перенаправление хоста.

variable "primary_domain" {
  type    = string
  default = "example.com"
}

variable "secondary_domains" {
  type    = set(string)
  default = ["example.org", "www.example.com", "www.example.org"]
}

resource "google_compute_url_map" "landing_url_map" {
  name            = "landing-url-map"
  default_service = google_compute_backend_bucket.landing_backend_bucket.self_link

  host_rule {
    path_matcher = "primary"
    hosts        = [var.primary_domain]
  }

  path_matcher {
    name            = "primary"
    default_service = google_compute_backend_bucket.landing_backend_bucket.self_link
  }

  host_rule {
    path_matcher = "secondary"
    hosts        = var.secondary_domains
  }

  path_matcher {
    name = "secondary"
    default_url_redirect {
      host_redirect = var.primary_domain
    }
  }
}

Но это не удается:

Error: "path_matcher.1.default_url_redirect": conflicts with default_service

  on landing.tf line 47, in resource "google_compute_url_map" "landing_url_map":
  47: resource "google_compute_url_map" "landing_url_map" {

I Я пробовал несколько других способов заставить его работать, но ни один из них не работает. Я убеждаюсь, что он работает в веб-консоли, но не могу найти способ реализовать это с помощью terraform.

Ответы [ 2 ]

0 голосов
/ 29 июня 2020

Откат на 3.25.0 помог

О проблеме было сообщено на GitHub

https://github.com/terraform-providers/terraform-provider-google/issues/6695

0 голосов
/ 21 июня 2020

Похоже, у вас не может быть default_service на верхнем уровне карты URL-адресов и default_url_redirect в path_matcher. Попробуйте удалить default_service = google_compute_backend_bucket.landing_backend_bucket.self_link из верхнего уровня следующим образом:

resource "google_compute_url_map" "landing_url_map" {
  name            = "landing-url-map"

  host_rule {
    path_matcher = "primary"
    hosts        = [var.primary_domain]
  }

  path_matcher {
    name            = "primary"
    default_service = google_compute_backend_bucket.landing_backend_bucket.self_link
  }

  host_rule {
    path_matcher = "secondary"
    hosts        = var.secondary_domains
  }

  path_matcher {
    name = "secondary"
    default_url_redirect {
      host_redirect = var.primary_domain
    }
  }
}

Если ни одно из указанных hostRules не совпадает, запрос перенаправляется на URL-адрес, указанный в defaultUrlRedirect. Если указан defaultUrlRedirect, нельзя устанавливать defaultService или defaultRouteAction. Структура документирована ниже.

Из документов аргумента default_url_redirect для google_compute_url_map .

...