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.