🎼

Terraform と AzAPI Provider を使用して Azure Container Apps をデプロイする

2022/10/08に公開

MS Blog にて、Terraform で Azure Container Apps をデプロイする手法が紹介されています。前々から AzAPI Provider にも触れてみたいと思っていたので、試してみました。

環境・準備

  • Windows 10
  • Terraform (v1.3.1)
  • Azure CLI (v2.40.0)

事前準備

上記の記事で記載されている Terraform コードを実行すれば良い…わけではないので、下記の GitHub リポジトリを clone しておきます。

AzAPI とは

AzAPI Provider とは、Terraform Provider のひとつ。AzureRM Provider は GA された機能を中心にしか提供されていませんが、AzAPI Provider ではプレビュー機能などの構成も行うことができます。

Azure Container Apps は AzureRM Provider では (本記事公開時点では) 提供されていないため、Terraform でデプロイするには AzAPI Provider を利用してあげる必要があります。

AzAPI Provider の詳細については、下記も参考にしてくださいませ。

やってみた

コード部分の修正

まず、clone したファイルのうち main.tf, modules/application_insights/main.tf, modules/container_apps/main.tf, modules/log_analytics/main.tf, modules/storage_account/main.tf それぞれに記載されている下記の箇所をコメントアウトします。

main.tf
experiments = [module_variable_optional_attrs]

Terraform v1.3 以降で module_variable_optional_attrs は experiments ではなくなり、当該行のような指定はサポートされなくなったためです。

変数部分の修正

variables.tfresource_prefix を自前の文字列に変更しておきます。

variables.tf
variable "resource_prefix" {
  description = "Specifies a prefix for all the resource names."
  default     = "<任意の文字列>"
  type        = string
}

これは、既定の Astra だとストレージアカウント名が重複してしまうことにより、デプロイがエラーになってしまうためです。

実行!

あとは、ブログ記事GitHub リポジトリに記載の手順を実行すれば OK です。

terraform init
terraform validate -compact-warnings
terraform plan -compact-warnings -out main.tfplan
terraform apply -compact-warnings -auto-approve main.tfplan

動作確認

エラーなくデプロイが完了したら、Container Apps 「nodeapp」のログストリームを見に行ってみましょう。

こんな感じでリクエストを受け付けたログがポチポチ流れていれば OK です。

まとめ

ということで、無事 Azure Container Apps 環境も IaC (Terraform) で実現できるようになっています。

Azure で Terraform をメインで使うなら、AzAPI Provider の使い方はマスターしておきたいですね!

Bicep も面白いですが Terraform もデファクトになっている感があるので、ある程度しっかり書けるようになっておきたい…

Discussion