TerraformでVultr DNSを管理する。
Configuring Terraform for Vultr
環境変数”VULTR_API_KEY”にVultr API Keyを設定する。
export VULTR_API_KEY="my_personal_access_token"
Vultr用のprovider.tfを作成
terraform {
required_providers {
vultr = {
source = "vultr/vultr"
version = "~> 2.16"
}
}
}
variable "vultr_token" {}
provider "vultr" {
api_key = var.vultr_token
}
プロジェクトフォルダ内でterralformを初期化する。
terraform init
Importing Domains
ドメインゾーン情報をインポートするため、tfファイルを作成。
resource "vultr_dns_domain" "dok8s_net" {}
インポートする。
terraform import -var "vultr_token=${VULTR_API_KEY}" vultr_dns_domain.dok8s_net dok8s.net
下記のように表示される。
# vultr_dns_domain.dok8s_net:
resource "vultr_dns_domain" "dok8s_net" {
date_created = "2023-11-20T02:02:03+00:00"
dns_sec = "disabled"
domain = "dok8s.net"
id = "dok8s.net"
}
上記を元にtfファイルを修正。
resource "vultr_dns_domain" "dok8s_net" {
dns_sec = "disabled"
domain = "dok8s.net"
}
Importing Domain Records
ドメインレコード情報をインポートするため、tfファイルに下記を追記。
resource "vultr_dns_record" "blog_A" {}
blog.dok8s.netのid情報を確認
vultr-cli dns record list dok8s.net
下記のように表示される。
ID TYPE NAME DATA
e5c01adb-a8e2-472b-bb8f-01bd4f8fb427 A blog 207.148.90.115
このレコード情報をインポートする。
terraform import -var "vultr_token=${VULTR_API_KEY}" vultr_dns_record.blog_A dok8s.net,e5c01adb-a8e2-472b-bb8f-01bd4f8fb427
成功すると下記のように表示される。
vultr_dns_record.blog_A: Importing from ID "dok8s.net,e5c01adb-a8e2-472b-bb8f-01bd4f8fb427"...
vultr_dns_record.blog_A: Import prepared!
Prepared vultr_dns_record for import
vultr_dns_record.blog_A: Refreshing state... [id=e5c01adb-a8e2-472b-bb8f-01bd4f8fb427]
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.
terraform showでステータスを確認。
# vultr_dns_record.blog_A:
resource "vultr_dns_record" "blog_A" {
data = "207.148.90.115"
domain = "dok8s.net"
id = "e5c01adb-a8e2-472b-bb8f-01bd4f8fb427"
name = "blog"
priority = -1
ttl = 3600
type = "A"
}
上記を元にtfファイルを修正。
resource "vultr_dns_record" "blog_A" {
data = "207.148.90.115"
domain = "dok8s.net"
name = "blog"
priority = -1
ttl = 3600
type = "A"
}
terraformの実行計画を確認
terraform plan -var "vultr_token=${VULTR_API_KEY}"
成功すると下記のように表示される。
vultr_dns_record.blog_A: Refreshing state... [id=e5c01adb-a8e2-472b-bb8f-01bd4f8fb427]
vultr_dns_domain.dok8s_net: Refreshing state... [id=dok8s.net]
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.