GoDaddy Domain + Google Cloud DNS

시나리오

  • GoDaddy에서 test.com 도메인을 구입했다.
  • test.com을 GoDaddy가 아닌 Google Cloud DNS에서 관리하기 위해 네임서버를 이전하려 한다.
  • Terraform을 이용해 Google Cloud Platform에 Provisioning한다.

코드

Terraform 코드는 다음과 같다.

variable "dns_name" {
  default = "test.com"
}

variable "godaddy_key" {
}

variable "godaddy_secret" {
}

resource "google_dns_managed_zone" "prod" {
  name        = "prod-zone"
  dns_name    = "${var.dns_name}."
  description = "Production DNS zone"
}

data "template_file" "nameservers" {
  template = "${replace(join(",", formatlist("\"%s\"", google_dns_managed_zone.prod.name_servers)), ".\"", "\"")}"
}

resource "null_resource" "godaddy" {
  triggers {
    run_always = "${data.template_file.nameservers}"
  }

  provisioner "local-exec" {
   command = "curl -X PATCH -H 'Authorization: sso-key ${var.godaddy_key}:${var.godaddy_secret}' -H 'Content-Type: application/json' -d '{ \"nameServers\": [ ${data.template_file.nameservers.rendered} ] }' https://api.godaddy.com/v1/domains/${var.dns_name}"
 }
}
  • google_dns_managed_zonetest.com을 Google Cloud DNS에 등록한다.
  • test.com을 등록하면 Cloud DNS측 네임서버 주소 목록이 ${google_dns_managed_zone.prod.name_servers}에 담겨 나온다. GoDaddy - Nameservers
  • GoDaddy의 API를 curl로 호출해 test.com을 조회할 때 Cloud DNS측 네임서버를 쓰도록 한다.

terraform apply를 실행해 Provisioning 하고 나면 GoDaddy에 새로운 네임서버가 등록된다.

Google Cloud Platform - Networking

참고 문서

최 재훈

블로그, 페이스북, 트위터 고성능 서버 엔진, 데이터베이스, 지속적인 통합 등 다양한 주제에 관심이 많다.
Close Menu