Managing DigitalOcean Doman by Terrafrom

TerraformでDigitalOceanのDomainを管理する。

Configuring Terraform for DigitalOcean

環境変数”DO_PAT”にDigitalOcean Personal Access Tokenを設定する。

export DO_PAT="my_personal_access_token"

DigitalOcean用のprovider.tfを作成

terraform {
  required_providers {
    digitalocean = {
      source = "digitalocean/digitalocean"
      version = "~> 2.0"
    }
  }
}

variable "do_token" {}

provider "digitalocean" {
  token = var.do_token
}

プロジェクトフォルダ内でterralformを初期化する。

terraform init

Importing Domains

ドメインゾーン情報をインポートするため、tfファイルを作成。

resource "digitalocean_domain" "dok8s_net" {}

インポートする

terraform import -var "do_token=${DO_PAT}" digitalocean_domain.dok8s_net dok8s.net

ステータスを確認

terraform show

下記のように表示される

# digitalocean_domain.dok8s_net:
resource "digitalocean_domain" "dok8s_net" {
    id   = "dok8s.net"
    name = "dok8s.net"
    ttl  = 1800
    urn  = "do:domain:dok8s.net"
}

上記を元にtfファイルを修正。

resource "digitalocean_domain" "dok8s_net" {
    name = "dok8s.net"
}

Importing Domin Records

ドメインレコード情報をインポートするため、tfファイルに下記を追記。

resource "digitalocean_record" "wp" {}

wp.dok8s.netのid情報を確認

doctl compute domain records list dok8s.net --format ID,Type,Name,Data

下記のように表示される。

...
367811994    A        wp                 188.166.204.136
...

このレコード情報をインポートする

terraform import -var "do_token=${DO_PAT}" digitalocean_record.wp dok8s.net,367811994

成功すると下記のように表示される

digitalocean_record.wp: Importing from ID "dok8s.net,367811994"...
digitalocean_record.wp: Import prepared!
  Prepared digitalocean_record for import
digitalocean_record.wp: Refreshing state... [id=367811994]

Import successful!

The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.

ステータスを確認

# digitalocean_record.wp:
resource "digitalocean_record" "wp" {
    domain   = "dok8s.net"
    flags    = 0
    fqdn     = "wp.dok8s.net"
    id       = "367811994"
    name     = "wp"
    port     = 0
    priority = 0
    ttl      = 3600
    type     = "A"
    value    = "188.166.204.136"
    weight   = 0
}

上記を元にtfファイルを修正。

resource "digitalocean_record" "wp" {
    domain   = "dok8s.net"
    name     = "wp"
    ttl      = 3600
    type     = "A"
    value    = "188.166.204.136"
    weight   = 0
}

terraformの実行計画を確認

terraform plan -var "do_token=${DO_PAT}" 
digitalocean_domain.dok8s_net: Refreshing state... [id=dok8s.net]
digitalocean_record.grafana: Refreshing state... [id=367811507]
digitalocean_record.wp: Refreshing state... [id=367811994]
digitalocean_record.apps: Refreshing state... [id=367827383]
digitalocean_record.www: Refreshing state... [id=368525414]

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です