ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

Terraform NIFCLOUD Provider の ESS/DNS機能を使ってみた

こんにちは、2021年度新入社員の駆け出しルーキーの藤田です。

いきなりですが、Terraform NIFCLOUD Provider はご存じでしょうか。
Terraform NIFCLOUD Providerは、IaC(Infrastructure as Code)ツールのTerraformからニフクラのインフラストラクチャを操作するためのプラグインです。
ニフクラリソースの状態をTerraformのインフラストラクチャ定義ファイルで管理することができます。
過去の記事で、Terraform NIFCLOUD Provider の詳細や基本的な利用手順などについて説明しているのでぜひご覧ください。
ニフクラがTerraformに対応したので使ってみた【基礎編】
ニフクラがTerraformに対応したので使ってみた【応用編】
Terraform NIFCLOUD Provider の NAS/Kubernetes Service Hatoba/サーバーセパレート機能を使ってみた

今回は、Terraform NIFCLOUD Provider の v1.6.0 で新たに対応した以下のニフクラリソースの構築方法を簡単に説明いたします。

・ニフクラ ESS
・ニフクラ DNS

ニフクラ ESS 構築

ニフクラ ESS は開発者のための効率の良いメール配信サービスです。

ニフクラ ESS
Terraform NIFCLOUD Providerを使用して、ニフクラ ESS の送信元メールアドレスおよび送信元ドメインの登録を行うことができます。
以下は、送信元メールアドレスの登録を行う設定ファイル例になります。

resource "nifcloud_ess_email_identity" "example" {
  email = "email@example.test"
}

上記リソースを apply することで、「email@example.test」メールアドレスを登録することができます。

以下は、送信元ドメインの登録を行う設定ファイル例になります。

resource "nifcloud_ess_domain_identity" "example" {
  domain = "example.test"
}

上記リソースを apply することで、「example.test」ドメインを登録することができます。

また、DKIM (DomainKeys Identified Mail) に対応したドメイン登録も行うことができます。

resource "nifcloud_ess_domain_identity" "example" {
  domain = "example.test"
}

resource "nifcloud_ess_domain_dkim" "example" {
  domain = nifcloud_ess_domain_identity.example.domain
}

resource "nifcloud_dns_record" "example" {
  count   = 3
  zone_id = nifcloud_dns_zone.example.id
  name    = "${element(nifcloud_ess_domain_dkim.example.dkim_tokens, count.index)}._domainkey"
  type    = "CNAME"
  ttl     = "600"
  record  = "${element(nifcloud_ess_domain_dkim.example.dkim_tokens, count.index)}.dkim.ess.nifcloud.com"
}

resource "nifcloud_dns_zone" "example" {
  name    = "example.test"
  comment = "memo"
}

上記リソースを apply することで、DKIMに対応したドメインを登録することができます。

ニフクラ DNS 構築

Terraform NIFCLOUD Providerを使用して、すでにお持ちのドメインをニフクラ DNSに登録することができます。

以下は、管理しているドメインのゾーン登録を行う設定ファイル例になります。
*ドメイン名には、既に取得済みのドメインを指定します。
(ドメイン取得は、ニフクラコントロールパネルのドメイン新規取得から申請可能です。)
*ニフクラ以外のドメインを用いてゾーン登録する場合は、ゾーン認証を行う必要があります。
DNSゾーン登録を参考に、認証の実施をお願いします。

resource "nifcloud_dns_zone" "example" {
  name    = "example.test"
  comment = "memo"
}

上記リソースを apply することで、「example.test」DNSゾーン名を登録することができます。

また、登録したゾーンにレコードを登録することができます。
以下は、DNSゾーン登録を行い、そのゾーンにレコードを登録する設定ファイル例になります。
*こちらも、ドメイン名には既に取得済みのドメインを指定する必要があります。

resource "nifcloud_dns_record" "example" {
  zone_id = nifcloud_dns_zone.example.id
  name    = "test.example.test"
  type    = "A"
  ttl     = 300
  record  = "192.168.0.1"
  comment = "memo"
}

resource "nifcloud_dns_zone" "example" {
  name    = "example.test"
  comment = "memo"
}

上記リソースを apply することで、「example.test」ゾーンに「test.example.test」レコードを登録することができます。

まとめ

今回は、Terraform NIFCLOUD Provider の v1.6.0 で新たに対応した ESS/DNS リソースの構築方法をご紹介しました。

シンプルなコードでリソース構築ができて便利ですね!
私自身初めて Terraform でリソース構築を行いましたが、思っていたよりも簡単に構築できて感動しました!(もともと謎に Terraform に抵抗感を抱いていました ...)

Terraform NIFCLOUD Provider は、この記事で紹介したもの以外にも多くのニフクラリソース構築に対応しています。 ぜひ一度 Terraform で構築の自動化(Infrastructure as Code)を行ってみてください!