Terraformで作成するAzure Front Doorまとめ 2022年9月版

こんにちは。寺田です。

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

今回は、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の対応も進んでいます。そう遠くないうちに配信元のバグが解消され、ルートの対応も行われると思うので、期待して待ちたいと思います。

FIXER Inc. 寺田 縁
  • FIXER Inc. 寺田 縁
  • (てらだ えにし)

    2022年度入社の文系エンジニアです。座右の銘は「ユーザーの声を聞いているか」です。研究室の先生がおっしゃていた話の意訳になるのですが、開発に夢中になりすぎると自分が実装したいことを優先しそうになるので、この言葉を思い出すようにしています。