こんにちは。寺田です。
入社して早半年、時が過ぎ去るのは早いものです。
今回は、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_frontdoor | Azure Front Doorの作成 |
azurerm_cdn_profile | Azure CDNの作成 |
しかし、2022年3月、Azure Front DoorとAzure CDNが統合され、新しいAzure Front Doorが提供されました。
この変更に伴いTerraformも更新され、下記のリソースが新たに誕生したというわけです。※CDNとしての機能を利用する場合は、現在もazurerm_cdn_profileを利用します。
resource | 役割 |
azurerm_cdn_frontdoor_profile | 統合されたAzure Front Doorの作成 |
しかし、更新されて日が浅いこともあり、対応できている部分、対応できていない部分が多々あります。今回は、それらの点についてまとめていきます。
サポートされている項目
現時点でサポートされている項目として、以下が挙げられます。
resource | 役割 |
azurerm_cdn_frontdoor_profile | 統合されたAzure Front Doorの作成 |
azurerm_cdn_frontdoor_endpoint | エンドポイントの作成 |
azurerm_cdn_frontdoor_security_policy | セキュリティポリシーの作成 |
azurerm_cdn_frontdoor_firewall_policy | WAFの作成 |
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は配信元グループにおける配信元を作成するものですが、作成される配信元は以下のようになります。
なぜか無効状態で作成されてしまうんですね。この問題は、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の対応も進んでいます。そう遠くないうちに配信元のバグが解消され、ルートの対応も行われると思うので、期待して待ちたいと思います。