APC 技術ブログ

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

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

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

ACS 事業部の埜下です。

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

github.com


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

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


AppConfiguration, DataFactory, SignalRServiceリソースプロバイダーが登録されます

このバージョンから Azure リソースプロバイダーとして次のプロバイダーが自動登録されます。

  • AppConfiguration
  • DataFactory
  • SignalRService

これにより、Terraform で利用する Azure ユーザやサービスプリンシパルにサブスクリプションへの「所有者 (Owner)」か「共同作成者 (Contributor)」のロールが付与されていないとエラーが発生します。 権限が制限されている環境で Terraform を利用されている場合はご注意ください。

プロバイダー 'AppConfiguration' が未登録の状態

リソースプロバイダーが登録されていない、かつ権限が不足している場合は Terrraform で次のようなエラーが発生します。

$ terraform plan

Planning failed. Terraform encountered an error while generating this plan.

╷
│ Error: Error ensuring Resource Providers are registered.
│ 
│ Terraform automatically attempts to register the Resource Providers it supports to
│ ensure it's able to provision resources.
│ 
│ If you don't have permission to register Resource Providers you may wish to use the
│ "skip_provider_registration" flag in the Provider block to disable this functionality.
│ 
│ Please note that if you opt out of Resource Provider Registration and Terraform tries
│ to provision a resource from a Resource Provider which is unregistered, then the errors
│ may appear misleading - for example:
│ 
│ > API version 2019-XX-XX was not found for Microsoft.Foo
│ 
│ Could indicate either that the Resource Provider "Microsoft.Foo" requires registration,
│ but this could also indicate that this Azure Region doesn't support this API version.
│ 
│ More information on the "skip_provider_registration" flag can be found here:
│ https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs#skip_provider_registration
│ 
│ Original Error: Cannot register providers: Microsoft.SignalRService, Microsoft.DataFactory, Microsoft.AppConfiguration. Errors were: Cannot register provider Microsoft.SignalRService with Azure Resource Manager: unexpected status 403 with error: AuthorizationFailed: The client '00000000-0000-0000-0000-000000000000' with object id '00000000-0000-0000-0000-000000000000' does not have authorization to perform action 'Microsoft.SignalRService/register/action' over scope '/subscriptions/00000000-0000-0000-0000-000000000000' or the scope is invalid. If access was recently granted, please refresh your credentials..
│ Cannot register provider Microsoft.DataFactory with Azure Resource Manager: unexpected status 403 with error: AuthorizationFailed: The client '00000000-0000-0000-0000-000000000000' with object id '00000000-0000-0000-0000-000000000000' does not have authorization to perform action 'Microsoft.DataFactory/register/action' over scope '/subscriptions/00000000-0000-0000-0000-000000000000' or the scope is invalid. If access was recently granted, please refresh your credentials..
│ Cannot register provider Microsoft.AppConfiguration with Azure Resource Manager: unexpected status 403 with error: AuthorizationFailed: The client '00000000-0000-0000-0000-000000000000' with object id '00000000-0000-0000-0000-000000000000' does not have authorization to perform action 'Microsoft.AppConfiguration/register/action' over scope '/subscriptions/00000000-0000-0000-0000-000000000000' or the scope is invalid. If access was recently granted, please refresh your credentials..
│ 
│   with provider["registry.terraform.io/hashicorp/azurerm"],
│   on providers.tf line 10, in provider "azurerm":
│   10: provider "azurerm" {
│ 
╵

プロバイダーを追加する場合、権限を持っているユーザが手動登録するか、Terraform のユーザやサービスプリンシパルにロールを付与して実行してください。 後者では terraform plan コマンドだけでプロバイダーが登録されます。

Terraform からプロバイダーを登録中

今回は 1分ほどで登録が完了しました。

Terraform からプロバイダーを登録

プロバイダーを登録せずに Terraform を実行したい場合は provider ブロックに skip_provider_registration = true を設定するか、環境変数 ARM_SKIP_PROVIDER_REGISTRATION を使用してください。

provider "azurerm" {
  skip_provider_registration = true
  features {}
}

新規リソース

azurerm_kubernetes_fleet_update_strategy (Azure Kubernetes Fleet Manager)

ドキュメント:azurerm_kubernetes_fleet_update_strategy

azurerm_kubernetes_fleet_update_strategy はA zure Kubernetes Fleet Manager の複数クラスタ間で更新プログラムを調整する「更新戦略」を構成するリソースです。

learn.microsoft.com

引用:Azure Kubernetes Fleet Manager のアーキテクチャの概要 ― 複数のクラスター間での更新のオーケストレーション

上図のように、更新戦略にはクラスタの更新順序を定義する「ステージ」と「グループ」、それとステージ間の「待機時間」があります。 azurerm_kubernetes_fleet_update_strategy リソースはそれらを構成します。

resource "azurerm_kubernetes_fleet_update_strategy" "example" {
  name                        = "example"
  kubernetes_fleet_manager_id = azurerm_kubernetes_fleet_manager.example.id
  stage {
    name = "example-stage-1"
    group {
      name = "example-group-1"
    }
    after_stage_wait_in_seconds = 21
  }
}

では、この更新戦略を適用するクラスタの指定ですが、それは次のバージョン v3.91.0 でリリースされた azurerm_kubernetes_fleet_member リソースで構成できます。 そのため、この Azure Kubernetes Fleet Manager を Terraform で管理する場合はこのバージョン v.3.90.0 ではなく次のバージョン v.3.91.0 を利用するのがよいでしょう。

azurerm_site_recovery_vmware_replicated_vm (Azure Site Recovery)

ドキュメント:azurerm_site_recovery_vmware_replicated_vm

Azure Site Recovery で VMware VM に対するレプリケーションを Terraform で設定できるようになりました。 これにより、VMware VM のディザスターリカバリー先として Azure を利用できます。

learn.microsoft.com

resource "azurerm_site_recovery_vmware_replicated_vm" "example" {
  name                                       = "example-vmware-vm"
  recovery_vault_id                          = azurerm_recovery_services_vault.example.id
  source_vm_name                             = "example-vm"
  appliance_name                             = "example-appliance"
  recovery_replication_policy_id             = azurerm_site_recovery_vmware_replication_policy_association.example.policy_id
  physical_server_credential_name            = "example-creds"
  license_type                               = "NotSpecified"
  target_boot_diagnostics_storage_account_id = azurerm_storage_account.example.id
  target_vm_name                             = "example_replicated_vm"
  target_resource_group_id                   = azurerm_resource_group.example.id
  default_log_storage_account_id             = azurerm_storage_account.example.id
  default_recovery_disk_type                 = "Standard_LRS"
  target_network_id                          = azurerm_virtual_network.example.id

  network_interface {
    source_mac_address = "00:00:00:00:00:00"
    target_subnet_name = azurerm_subnet.example.name
    is_primary         = true
  }
}

azurerm_spring_cloud_new_relic_application_performance_monitoring (Azure Spring Apps)

ドキュメント:azurerm_spring_cloud_new_relic_application_performance_monitoring

Azure Spring Apps の Spring Boot アプリケーションを New Relic で監視する設定を azurerm_spring_cloud_new_relic_application_performance_monitoring リソースで構成できます。

learn.microsoft.com

newrelic.com

resource "azurerm_spring_cloud_new_relic_application_performance_monitoring" "example" {
  name                    = "example"
  spring_cloud_service_id = azurerm_spring_cloud_service.example.id
  app_name                = "example-app-name"
  license_key             = "example-license-key"
  app_server_port         = 8080
  labels = {
    tagName1 = "tagValue1"
    tagName2 = "tagValue2"
  }
  globally_enabled = true
}

新規データソース

azurerm_nginx_configuration (Nginx デプロイ)

ドキュメント:azurerm_nginx_configuration

Nginx デプロイの構成を参照するデータソース azurerm_nginx_configuration が追加されました。

learn.microsoft.com

これで v3.27.0 で追加された azurerm_nginx_deployment リソース、v3.29.0 で追加された azurerm_nginx_configuration リソースと azurerm_nginx_certificate リソースに対応するデータソースを利用できるようになりました。

azurerm_virtual_desktop_workspace (Azure Virtual Desktop)

ドキュメント:azurerm_virtual_desktop_workspace

Azure Virtual Desktop のワークスペースを参照できるデータソース azurerm_virtual_desktop_workspace が追加されました。

learn.microsoft.com

ワークスペースは、Azure Virtual Desktop でのアプリケーション グループの論理的なグループです。 ユーザーに公開されたデスクトップとアプリケーションがそのユーザーに表示されるようにするには、各 Azure Virtual Desktop アプリケーション グループがワークスペースに関連付けられている必要があります。


今回はアップデート確認は以上です。

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

www.ap-com.co.jp

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

www.ap-com.co.jp

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