🛕

[Terraform][GCP]CloudDNSにAレコードを追加する

2020/10/01に公開

published_at: 2019-01-04 21:29


シンプルにできたので投稿
TerraformでGCP環境を管理している方であれば、1時間もあれば管理をやれるようになると思います。

refs

前提

refs: https://github.com/sogaoh/TerraformPractice/tree/master/gcp-01

  • GCP プロジェクト
    • Terraform 用のサービスアカウント作成済み (*1)
  • Terraform のインストール
  • GCS に tfstate を置くためのバケットを構築済み (*2)
    • 手動でバケット作成されていれば、GCP Cloud SDK のインストールは任意
  • (*1) のアカウントで認証済み
  • terraform init が完了していて、(*2) に tfstate 作成済み

方法

terraform import の試行

以下のようなコマンドが成功するように

terraform import \
    google_dns_managed_zone.{{any_name_z}} \
    projects/{{project-id}}/managedZones/{{zone}}

以下のようなリソースファイルを作成

resource "google_dns_managed_zone" "{{any_name_z}} " {
  name     = "{{zone}}"
  dns_name = "{{your_domain}}."    # 最後のドットは必要とのこと
}

成功するとこんな感じ

 terraform import google_dns_managed_zone.{{any_name_z}} projects/{{project-id}}/managedZones/{{zone}}
google_dns_managed_zone.{{any_name_z}}: Importing from ID "projects/{{project-id}}/managedZones/{{zone}}"...
google_dns_managed_zone.{{any_name_z}} : Import complete!
  Imported google_dns_managed_zone (ID: {{zone}})
google_dns_managed_zone.{{any_name_z}}: Refreshing state... (ID: {{zone}})

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.

Aレコード用のリソースファイルを整備

例えばこんな感じかと

・・・
resource "google_dns_record_set" "{{any_name_sd}}" {
  managed_zone = "${google_dns_managed_zone.{{any_name_z}}.name}"
  name         = "pera.${google_dns_managed_zone.{{any_name_z}}.dns_name}"
  type         = "A"
  ttl          = 300
  rrdatas      = ["${google_compute_instance.{{target-instance-name}}.network_interface.0.access_config.0.nat_ip}"]
}

plan & apply

あとは

terraform plan
terraform apply

確認

少し時間をおいて、任意の方法で

  • dig コマンド
  • GCP管理コンソールの Cloud DNS

その他

既存の他のレコードの取得方法を知りたい・・・

Discussion