APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

Terraform AzureRM プロバイダ アップデート情報 (v3.89.0)

こんにちは、ACS 事業部の埜下です。

2024年1月25日 に Terraform の AzureRM プロバイダ v3.89.0 がリリースされましたのでアップデート内容を確認していきましょう。

github.com

今回は次のサービスに関連したアップデートがありました。

  • Azure Backup
  • Azure Chaos Studio
  • Azure Data Factory
  • Azure Elastic SAN
  • Azure NetApp Files
  • Azure Red Hat OpenShift
  • Azure Stream Analytics
  • IP グループ
  • Nginx デプロイ


AzureRM プロバイダのアップデート内容は 3 つのカテゴリに分かれてリリースページにて報告されていますが、FEATURES の内容を拾いつつ、影響の大きそうな ENHANCEMENTSBUG FIXES があれば確認します。

カテゴリ 内容
FEATURES 新しいリソース、データソースの追加
プロバイダ自体の機能追加
ENHANCEMENTS 既存リソース、データソースのプロパティ変更
利用している SDK (hashicorp/go-azure-sdk) などバージョンアップ対応
BUG FIXES バグ修正


新規リソース

azurerm_redhat_openshift_cluster (Azure Red Hat OpenShift)

ドキュメント:azurerm_redhat_openshift_cluster

ついに Azure Red Hat OpenShift (ARO) を管理できる azurerm_redhat_openshift_cluster リソースが公開されました!

ARO は Azure 上で簡単に OpenShift のクラスタを構築できるマネージド OpenShift サービスで、Microsoft と Red Hat が連携したサポートが提供されます。

「Terraform で ARO を構築できるようになったから ARO やってみよう」という方(組織)はあまりいないかも知れませんが、Terraform の可能性が広がったという点でとても喜ばしいことです。

learn.microsoft.com

azurerm_chaos_studio_target (Azure Chaos Studio)

ドキュメント:azurerm_chaos_studio_target

Azure Chaos Studio のターゲットを作成する azurerm_chaos_studio_target リソースが公開されました。

ドキュメントでは AKS をターゲットにしたサンプルが載っていますが、AKS 対して障害を引き起こす場合は事前に AKS に対して Chaos Mesh のインストールが必要です。 また、「カオス実験 (Chaos experiments)」と呼ばれる発生させたい障害を定義した Azure リソースも必要になりますが、現時点では AzureRM プロバイダでサポートされていませんのでご注意ください。

詳しくは公式ドキュメントや弊社吉川の資料をご確認ください。

learn.microsoft.com

www.docswell.com

resource "azurerm_chaos_studio_target" "example" {
  location           = azurerm_resource_group.example.location
  target_resource_id = azurerm_kubernetes_cluster.example.id
  target_type        = "example-value"
}

azurerm_elastic_san_volume_group (Azure Elastic SAN)

ドキュメント:azurerm_elastic_san_volume_group

Azure Elastic SAN のボリューム グループを管理する azurerm_elastic_san_volume_group リソースが追加されました。

Azure Elastic SAN をデプロイ手順は以下のようになります。

  1. SAN の作成
  2. ボリューム グループの作成
  3. ボリュームの作成

「1. SAN の作成」は既存の azurerm_elastic_san リソースで対応できていましたが、その他の手順に対応リソースはまだ公開されていませんでした。 今回のアップデートで「2. ボリューム グループの作成」を Terraform で実行できるようになりました。

resource "azurerm_elastic_san" "example" {
  name                = "examplees-es"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  base_size_in_tib    = 1
  sku {
    name = "Premium_LRS"
  }
}

resource "azurerm_elastic_san_volume_group" "example" {
  name            = "example-esvg"
  elastic_san_id  = azurerm_elastic_san.example.id
  encryption_type = "EncryptionAtRestWithCustomerManagedKey"

  encryption {
    key_vault_key_id          = azurerm_key_vault_key.example.versionless_id
    user_assigned_identity_id = azurerm_user_assigned_identity.example.id
  }

  identity {
    type         = "UserAssigned"
    identity_ids = [azurerm_user_assigned_identity.example.id]
  }

  network_rule {
    subnet_id = azurerm_subnet.example.id
    action    = "Allow"
  }
}

azurerm_netapp_account_encryption (Azure NetApp Files)

ドキュメント:azurerm_netapp_account_encryption

Azure NetApp Files ボリューム暗号化でカスタマー マネージド キーを設定できる azurerm_netapp_account_encryption リソースが公開されました。

learn.microsoft.com

これにより、Terraform を使って Azure Key Vault に格納したカスタマー マネージド キーを使用した Azure NetApp Files のボリュームを暗号化ができるようになります。

resource "azurerm_key_vault_key" "example" {
  name         = "anfencryptionkey"
  key_vault_id = azurerm_key_vault.example.id
  key_type     = "RSA"
  key_size     = 2048

  key_opts = [
    "decrypt",
    "encrypt",
    "sign",
    "unwrapKey",
    "verify",
    "wrapKey",
  ]
}

resource "azurerm_netapp_account" "example" {
  name                = "netappaccount"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  identity {
    type = "UserAssigned"
    identity_ids = [
      azurerm_user_assigned_identity.example.id
    ]
  }
}

resource "azurerm_netapp_account_encryption" "example" {
  netapp_account_id = azurerm_netapp_account.example.id

  user_assigned_identity_id = azurerm_user_assigned_identity.example.id

  encryption {
    key_vault_key_id = azurerm_key_vault_key.example.versionless_id
  }
}

azurerm_netapp_account_encryption リソースにあわせて azurerm_netapp_account_encryption データソースも公開されています。

新規データソース

azurerm_data_factory_trigger_schedule / azurerm_data_factory_trigger_schedules (Azure Data Factory)

ドキュメント:azurerm_data_factory_trigger_schedule, azurerm_data_factory_trigger_schedules

Azure Data Factory のスケジュール トリガーを取得する 2 種類のデータソースが追加されました。

learn.microsoft.com

データソース名が似ていますが、末尾 "s" の有無が違いです。

"s" がある azurerm_data_factory_trigger_schedules データソースは ID で指定された Azure Data Factory が持つスケジュール トリガーの名前をリストで取得できます。

一方、"s" がない azurerm_data_factory_trigger_schedule データソースは「Azure Data Factory のリソース ID」と「スケジュール トリガー名」を指定して、スケジュール トリガーの詳細情報を取得できます。

両者を以下のように組み合わせることで、Azure Data Factory のスケジュール トリガーの詳細情報を取得できそうです。

# スケジュール トリガー名のリスト
data "azurerm_data_factory_trigger_schedules" "example" {
  data_factory_id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.DataFactory/factories/datafactory1"
}

# リストのスケジュール名からスケジュール トリガー詳細情報を参照
data "azurerm_data_factory_trigger_schedule" "example" {
  for_each = toset(data.azurerm_data_factory_trigger_schedules.items)

  name            = each.value
  data_factory_id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.DataFactory/factories/datafactory1"
}

azurerm_ip_groups (IP グループ)

ドキュメント:azurerm_ip_groups

既に azurerm_ip_group というデータソースがあるのですが、こちらは末尾に "s" がつく azurerm_ip_groups データソースで、リソースグループ内の IP グループ一覧を取得します。 上記の Azure Data Factory スケジュール トリガーのデータソースと似たような関係ですね。

data "azurerm_ip_groups" "example" {
  name                = "existing"
  resource_group_name = "existing"
}

azurerm_nginx_certificate (Nginx デプロイ)

ドキュメント:azurerm_nginx_certificate

前回の v3.88.0 では Nginx デプロイを参照する azurerm_nginx_deployment データソースが追加されましたが、今回は Nginx デプロイの証明書を参照する azurerm_nginx_certificate データソースが公開されました。

techblog.ap-com.co.jp

リソースの変更

azurerm_data_protection_backup_vault でゾーン冗長がサポート (Azure Backup)

ドキュメント:azurerm_data_protection_backup_vault

Azure Backup のバックアップ コンテナー (Backup Vault) を管理する azurerm_data_protection_backup_vault リソースでゾーン冗長がサポートされました。

今までは「ローカル冗長 (LocallyRedundant)」と「Geo 冗長 (GeoRedundant)」のみ選択できていました。

resource "azurerm_data_protection_backup_vault" "example" {
  name                = "example-backup-vault"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  datastore_type      = "VaultStore"
  redundancy          = "ZoneRedundant"
}

バックアップコンテナーのゾーン冗長ストレージサポートは 2022 年には GA されていました。

azure.microsoft.com

azurerm_stream_analytics_job で 価格プラン (SKU 名) の指定がサポート (Azure Stream Analytics)

ドキュメント:azurerm_stream_analytics_job

Azure Stream Analytics はデバイスやセンサーで生成されたストリーミング データを分析および処理するように設計されたフル マネージド ストリーム処理エンジンです。

Azure Stream Analytics には「ジョブ」と「クラスター」という 2 種類のリソース モデルが存在します。

learn.microsoft.com

ジョブには「Standard」と、よりコストパフォーマンスに優れた「Standard V2」という 2 つの価格モデルが提供されています。 現在は Azure Portal で Azure Stream Analytics を作成すると Standard V2 の料金が適用されるようです。

Azure Portal で Azure Stream Analytics を作成すると Standard V2 の料金となる

今回のアップデートで Azure Stream Analytics ジョブに対応する azurerm_stream_analytics_job リソースが価格プラン (sku_name) を指定できるようになって、Terraform からも Azure Stream Analytics ジョブの Standard V2 を作成できるようになりました。


今回はアップデート確認は以上です。 ARO や Chaos Studio、Elastic SAN といった新しめのサービスに AzureRM プロバイダが対応してきていて今後も楽しみですね。

【PR】
私達 ACS 事業部は Azure・AKS などのクラウドネイティブ技術を活用した内製化のご支援をしております。

www.ap-com.co.jp

一緒に働いていただける仲間も募集中です!
まだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。
我々の事業部の CultureDeck はコチラ。

www.ap-com.co.jp

本記事の投稿者: 埜下 太一
Azure をメインにインフラ系のご支援を担当しています。
Terraform 試験に向けて勉強中です。
個人ブログ