Terraformで作成するAzure Front Doorまとめ 2022年9月版
2022-09-15
azblob://2022/11/11/eyecatch/2022-09-15-terraform-frontdoor-summarize-000.jpg

こんにちは。寺田です。

入社して早半年、時が過ぎ去るのは早いものです。

今回は、TerraformでAzure Front Doorを作成する際の、現時点の仕様についてまとめてみようと思います。

検証環境

  • Terraform v1.2.9
  • azurerm v3.22.0

Azure Front DoorとAzure CDNの統合

Terraformの説明に入る前に、Azure Front DoorとAzure CDNの統合について、軽く説明していきます。

元々は、Azure Front DoorとAzure CDNは別々のサービスとして提供されており、Terraformも以下のように対応されていました。

resource役割
azurerm_frontdoorAzure Front Doorの作成
azurerm_cdn_profileAzure CDNの作成
クラシック版

しかし、2022年3月、Azure Front DoorとAzure CDNが統合され、新しいAzure Front Doorが提供されました。

この変更に伴いTerraformも更新され、下記のリソースが新たに誕生したというわけです。※CDNとしての機能を利用する場合は、現在もazurerm_cdn_profileを利用します。

resource役割
azurerm_cdn_frontdoor_profile統合されたAzure Front Doorの作成
統合されたAzure Front Door

しかし、更新されて日が浅いこともあり、対応できている部分、対応できていない部分が多々あります。今回は、それらの点についてまとめていきます。

サポートされている項目

現時点でサポートされている項目として、以下が挙げられます。

resource役割
azurerm_cdn_frontdoor_profile統合されたAzure Front Doorの作成
azurerm_cdn_frontdoor_endpointエンドポイントの作成
azurerm_cdn_frontdoor_security_policyセキュリティポリシーの作成
azurerm_cdn_frontdoor_firewall_policyWAFの作成
azurerm_cdn_frontdoor_origin_group配信元グループの作成
azurerm_cdn_frontdoor_origin配信元グループ内の配信元の作成
azurerm_cdn_frontdoor_rule_set規則セットの作成
azurerm_cdn_frontdoor_rule規則セット内のルールの作成

WAFや規則セットなど、Azure Front Doorを構成する上で重要な要素がサポートされていますね。3か月ほど前はリソースの作成ぐらいしかできなかったので、進歩の早さに感動した覚えがあります。

しかし、Azure Front Doorにとって必須といえるルートの追加は、未対応となっています。

現時点での問題点

さて、上記でサポートされている項目をご紹介しましたが、同時に問題も抱えています。今回は重要度の高い問題として、azurerm_cdn_frontdoor_originの問題をご紹介します。

先にご説明したように、azurerm_cdn_frontdoor_originは配信元グループにおける配信元を作成するものですが、作成される配信元は以下のようになります。

Terraformで作成した配信元

なぜか無効状態で作成されてしまうんですね。この問題は、Hashicorp社公式のGithubでもissuesとして投稿されており、バグとして取り扱われています。

Azure Portal上で手動で有効化することはできるのですが、その後にTerraformを実行すると再度無効状態になってしまいますし、エラーが発生する場合もあります。※エラーメッセージもまちまちです。

配信元無効による影響

配信元が無効状態になる問題は、Terraform上でルールを作成する際にも悪影響を及ぼします。

To create the Frontdoor Rules resource successfully you must add a depends_on attribute to the azurerm_cdn_frontdoor_rule code block and reference both the azurerm_cdn_frontdoor_origin and the azurerm_cdn_frontdoor_origin_group that are associated with the Frontdoor Rule resource.

Hashicorp社公式ドキュメントより

上記のコメントは、Hashicorp社公式ドキュメントのazurerm_cdn_frontdoor_ruleのページから抜粋したものです。

ルールを作成するときは、azurerm_cdn_frontdoor_originとazurerm_cdn_frontdoor_origin_groupを必ず参照してねという意味合いですね。しかし、先述したように、azurerm_cdn_frontdoor_originは無効状態になってしまう影響でエラーが発生することがあるため、依存関係にあるazurerm_cdn_frontdoor_ruleも作成されなくなってしまうんですね。

ちなみに、azurerm_cdn_frontdoor_origin_groupのみを参照する形にすると、作成されたりします。

まとめ

さて、現時点でのAzure Front Doorの仕様についてまとめてみましたが、いかがだったでしょうか。

まだまだ問題を抱えていますが、少しずつTerraformの対応も進んでいます。そう遠くないうちに配信元のバグが解消され、ルートの対応も行われると思うので、期待して待ちたいと思います。