Terraform, используя Route 53 в другой учетной записи AWS - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть скрипт terraform, который развертывает микросервис (назовем его myservice здесь), который содержит запись route53.

Этот сценарий работает нормально в районе Токио, потому что этот регион имеет все AWS службы, необходимые для myservice .

Теперь я собираюсь развернуть myservice в cn-norhthwest-1, который является регионом Нинся в Китай.

Поскольку route53 не существует в AWS Китае, в настоящее время мое решение заключается в том, чтобы вручную установить доменное имя myservice в обычной учетной записи AWS (т.е. 1044 * учетная запись, содержащая регионы Токио, Огайо, Орегон ...).

Например, указав www.myservice.com.cn на запись CNAME myservice-ningxia-elb-1234567890.cn-northwest-1.elb.amazonaws.com.cn, которая является доменным именем ELB в регионе Нинся.

Как мне автоматизировать этот процесс с помощью terraform?

Это моя структура папок:

.
├── environments
│   ├── ningxia
│   │   ├── main.tf
│   │   └── versions.tf
│   └── tokyo
│       ├── main.tf
│       └── versions.tf
└── modules
    ├── cloud-init.yaml
    ├── outputs.tf
    ├── myservice.tf
    └── variables.tf

Я могу создать myservice в районе Токио, запустив

cd environments && \
  terraform init && \
  terraform apply

Эта запись показывает, что мы можем создать aws_route53_zone в cn-northwest-1 регионе, используя следующий код

# configure AWS provider for China region. 
provider "aws" {
  region    = "cn-northwest-1"
  access_key    = AK
  secret_key    = SK

  endpoints {
    route53 = "https://api.route53.cn"
  }
}

# create a route 53 pub zone
resource "aws_route53_zone" "test" {

  name = "bobtest3.cn"
  comment = "try to create a pub zone with terraform in China region v2!"
}

Как это возможно?

Я даже не могу найти route53 в AWS консоли в регионе Нинся.

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете использовать пользовательский ресурс с использованием внешних данных, например:

data "external" "dns" {
  program = ["${path.module}/dns.sh"]
  query   = {
    region  = "${var.region}"
    profile = "${lower(var.env)}"
    dns  = "dnsname"
  }
}

, просто напишите клиент. sh, который подключается к региону route53 для создания записи.

...