お名前comからCloudflareにドメイン移管してTerraformで管理する

Table of Contents

Introduction

お名前comで管理していた takeokunn.org をCloudFlareに移管したのでメモしておく。

Background

お名前comには世の中のエンジニアと同じように、長年次の不満を抱えていた。

  • 管理画面がとにかく使いづらい
  • 広告・営業メールが多い
  • 自動更新やオプションの設定が本当に分かりづらい
  • IaCに対応していない

vim-jpで令和時代にドメインを管理するならCloudFlare一択という意見をもらったので移管した。

作業手順

ドメインの移管はじめてだったこと、個人ドメインであることからダウンタイムが発生許容した。 2と3を入れ替えればダウンタイムが発生しなかったかもしれない。

1. CloudFlareにアカウントを作成する

公式サイトから新規登録をしてクレジットカードを登録する。 https://www.cloudflare.com/ja-jp/

2. お名前comからCloudflareに移管する

お名前.com から Cloudflare Registrar にドメイン移管した話 - Zenn を参考に移管した。

「トランスファー申請の承認」が15分以上かかったがいずれ来るので気長に待てばよい。

3. Terraformで管理する

Terraform CloudFlare Providerを使う。

https://registry.terraform.io/providers/CloudFlare/CloudFlare/latest/docs

3.1 provider作成

sops にAPI Tokenを保存して terraform-provider-sops 経由で入れる。

terraform {
  required_providers {
    sops = {
      source  = "carlpett/sops"
      version = "~> 0.5"
    }
    cloudflare = {
      source  = "cloudflare/cloudflare"
      version = "~> 5"
    }
  }
}

provider "sops" {}

data "sops_file" "secret" {
  source_file = "./secrets.yaml"
}

provider "cloudflare" {
  api_token = data.sops_file.secret.data.cloudflare
}

3.2 レコード作成

locals {
  # for takeokunn.org
  takeokunn_org_zone_id = "xxx"
}

resource "cloudflare_dns_record" "a_records" {
  provider = cloudflare
  for_each = toset([
    "185.199.108.153",
    "185.199.109.153",
    "185.199.110.153",
    "185.199.111.153"
  ])
  zone_id = local.takeokunn_org_zone_id
  name    = "takeokunn.org"
  content = each.key
  type    = "A"
  ttl     = 1
  proxied = false
}

resource "cloudflare_dns_record" "cname_emacs" {
  zone_id = local.takeokunn_org_zone_id
  name    = "emacs.takeokunn.org"
  content = "takeokunn.github.io"
  type    = "CNAME"
  ttl     = 1
  proxied = false
}

4. 管理画面から確認する

正常に terraform apply されていることを確認する。

終わりに

お名前comからの脱却と、手元環境のTerraform化が進んできて非常によい。