APC 技術ブログ

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

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

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

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

Terraform で Azure を管理されている方は AzureRM というプロバイダを利用されていますよね。

この AzureRM プロバイダ、リリース頻度が高くて毎週のようにマイナーバージョンが上がっていきます。 その度にアップデート内容を確認しているのですが、自分で確認して終わるだけではもったいないので、当ブログで確認内容を共有していきたいと思います。

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

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

というわけで、今回は 2024年1月19日 にリリースされた v3.88.0 のアップデートを確認していきましょう。

github.com

新規リソース

azurerm_virtual_machine_run_command

ドキュメント:azurerm_virtual_machine_run_command

Azure VM で実行コマンドを利用する azurerm_virtual_machine_run_command リソースが追加されました。

実行コマンドの詳しい内容については Japan Azure IaaS Core Support Blog の以下の記事がとても参考になりました。

jpaztech.github.io

azurerm_virtual_machine_run_command リソースの使い方は以下のような感じです。 Terraform コード内にコマンドを直接書くことも、BLOB ストレージに格納したスクリプトファイルを参照して実行することもできるようです。

# basic example
resource "azurerm_virtual_machine_run_command" "example" {
  name               = "example-vmrc"
  location           = azurerm_resource_group.example.location
  virtual_machine_id = azurerm_linux_virtual_machine.example.id
  source {
    script = "echo 'hello world'"
  }
}

# authurize to storage blob using user assigned identity
resource "azurerm_virtual_machine_run_command" "example2" {
  location           = azurerm_resource_group.example.location
  name               = "example2-vmrc"
  virtual_machine_id = azurerm_linux_virtual_machine.example.id
  output_blob_uri    = azurerm_storage_blob.example2.id
  error_blob_uri     = azurerm_storage_blob.example3.id
  run_as_password    = "P@$$w0rd1234!"
  run_as_user        = "adminuser"

  source {
    script_uri = azurerm_storage_blob.example1.id
    script_uri_managed_identity {
      client_id = azurerm_user_assigned_identity.example.client_id
    }
  }

  error_blob_managed_identity {
    client_id = azurerm_user_assigned_identity.example.client_id
  }

  output_blob_managed_identity {
    client_id = azurerm_user_assigned_identity.example.client_id
  }

  parameter {
    name  = "examplev1"
    value = "val1"
  }

  protected_parameter {
    name  = "examplev2"
    value = "val2"
  }
}

# authurize to storage blob using SAS token
resource "azurerm_virtual_machine_run_command" "example3" {
  location           = azurerm_resource_group.example.location
  name               = "example3-vmrc"
  virtual_machine_id = azurerm_linux_virtual_machine.example.id
  run_as_password    = "P@$$w0rd1234!"
  run_as_user        = "adminuser"
  error_blob_uri     = "${azurerm_storage_blob.example3.id}${data.azurerm_storage_account_sas.example.sas}"
  output_blob_uri    = "${azurerm_storage_blob.example2.id}${data.azurerm_storage_account_sas.example.sas}"

  source {
    script_uri = "${azurerm_storage_blob.example1.id}${data.azurerm_storage_account_sas.example.sas}"
  }

  parameter {
    name  = "example-vm1"
    value = "val1"
  }
}

実行コマンドは VM だけでなく VMSS も対応しているようですが、azurerm_virtual_machine_run_command リソースは VMSS には対応していないようです。 今後 VMSS 用実行コマンドリソースが出てくるものと思われます。

azurerm_spring_cloud_dynatrace_application_performance_monitoring

ドキュメント:azurerm_spring_cloud_dynatrace_application_performance_monitoring

azurerm_spring_cloud_dynatrace_application_performance_monitoring は Azure Spring Apps のアプリケーションパフォーマンスモニタリング (APM) を Dynatrace と連携するためリソースです。 正直なところ、Azure Spring Apps も Dynatrace も触ったことがないためこれ以上詳しい説明ができません……。

2021 年の記事ですが、Dynatrace の Azure Spring Apps 統合については以下を参照ください。

azure.microsoft.com

azurerm_spring_cloud_dynatrace_application_performance_monitoring リソースは基本的には azurerm_spring_cloud_service リソースと組み合わせて使います。 Azure Spring Apps のリソース ID と Dynatrace 側のエンドポイント (connection_point) を紐付けるようです。

resource "azurerm_spring_cloud_service" "example" {
  name                = "example"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  sku_name            = "E0"
}

resource "azurerm_spring_cloud_dynatrace_application_performance_monitoring" "example" {
  name                    = "example"
  spring_cloud_service_id = azurerm_spring_cloud_service.example.id
  globally_enabled        = true
  api_url                 = "https://example-api-url.com"
  api_token               = "dt0s01.AAAAAAAAAAAAAAAAAAAAAAAA.BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
  environment_id          = "example-environment-id"
  tenant                  = "example-tenant"
  tenant_token            = "dt0s01.AAAAAAAAAAAAAAAAAAAAAAAA.BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
  connection_point        = "https://example.live.dynatrace.com:443"
}

サービス名は Azure Spring Apps に変更されていますが、AzureRM プロバイダのリソース名は Azure Spring Cloud 時代のままのようですね。 Azure 側のサービス名が変わっても IaC として利用されている Terraform 側の追従は難しいのかなと想像します。

新規データソース

azurerm_nginx_deployment

ドキュメント:azurerm_nginx_deployment

azurerem_nginx_deployment データソースを使うと既存の Nginx デプロイの情報を参照できます。

では azurerm_nginx_deployment リソースでも作ることができる Nginx デプロイは何者かと言うと、Azure Native ISV Services と呼ばれる独立系ソフトウェア ベンダーのソフトウェアやサービスを簡単にデプロイできるサービスのうち、F5 社が提供する Nginx をデプロイする NGINXaaS と呼ばれるサービスのことです。

詳しくは Azure と Nginx 双方のドキュメントをご確認ください。

learn.microsoft.com

docs.nginx.com


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

結局リンク集みたいになってしまいましたが、こんな形で AzureRM プロバイダのアップデート情報を追っていきます。

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

www.ap-com.co.jp

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

www.ap-com.co.jp

本記事の投稿者: 埜下 太一
Azure をメインにインフラ系のご支援を担当しています。
Terraform v1.7 リリースされてモチベーションが上がってます。
個人ブログ