何番煎じだけどTerraformやってみたくなったのでメモ。
準備
Terraform
Terraformを入れる。tfenvを使っておくと後々便利そう。
$ brew install tfenv
$ tfenv list-remote 1.12.0-alpha20250319 1.12.0-alpha20250312 1.12.0-alpha20250213 1.11.2 1.11.1
見た感じ新しそうな1.11.2を使うことにした。
$ tfenv install 1.11.2 $ tfenv use 1.11.2
確認
$ terraform --version Terraform v1.11.2 on darwin_arm64
cf-terraforming
Cloudflareから既存の設定を持ってきてくれるやつ。
なぜかbrewでインストールするとTapが壊れるのでgo installした。
$ go install github.com/cloudflare/cf-terraforming/cmd/cf-terraforming@latest
キー類の取得
APIトークンの取得
「Cloudflare>プロフィール>APIトークン>トークンを作成する」と辿るとトークンを作成する画面に行ける。今回はDNSレコードを編集したいだけなので、「ゾーンIDを編集する」を選んだ。

ここで作成したキーを控えておく。
ゾーンIDの取得
操作対象のドメインの「概要>API>ゾーンID」も控えておく。
事初め
最初にプロバイダーを書く。
# provider.tf terraform { required_providers { cloudflare = { source = "cloudflare/cloudflare" version = "~> 5" } } } provider "cloudflare" { }
次に、書いた設定を元にinitする。
$ terraform init
CloudflareのDNSレコードのインポート
Cloudflareに既にあるDNSレコードの情報をとってくる。
$ export CLOUDFLARE_API_TOKEN='<取得してきたAPIトークン>' $ export CLOUDFLARE_ZONE_ID='<取得してきたゾーンID>' $ cf-terraforming generate --resource-type "cloudflare_dns_record" --zone $CLOUDFLARE_ZONE_ID > records.tf $ cf-terraforming import --resource-type "cloudflare_dns_record" --zone $CLOUDFLARE_ZONE_ID | sh
これで上手く取得できているはず。 最後に差分がないことを確認しておく。
$ terraform plan No changes. Your infrastructure matches the configuration.
いかにもよさそう。
DNSレコードの追加
records.tfにこんな感じで追記してみた。
resource "cloudflare_dns_record" "test_resource" { content = "this is test" name = "ドメイン" proxied = false ttl = 1 type = "TXT" zone_id = "ゾーンID" settings = {} }
変更の確認
$ terraform plan Plan: 1 to add, 0 to change, 0 to destroy.
大丈夫そうなら反映する。
$ terraform apply Plan: 1 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes
これでとりあえず入門はできたかな。 次はGitHubでCI/CDしたいよね。