こんにちは、ACS 事業部の埜下です。
Terraform で Azure を管理されている方は AzureRM というプロバイダを利用されていますよね。
この AzureRM プロバイダ、リリース頻度が高くて毎週のようにマイナーバージョンが上がっていきます。 その度にアップデート内容を確認しているのですが、自分で確認して終わるだけではもったいないので、当ブログで確認内容を共有していきたいと思います。
AzureRM プロバイダのアップデート内容は 3 つのカテゴリに分かれてリリースページにて報告されていますが、FEATURES
の内容を拾いつつ、影響の大きそうな ENHANCEMENTS
や BUG FIXES
があれば確認していく予定です。
カテゴリ | 内容 |
---|---|
FEATURES | 新しいリソース、データソースの追加 プロバイダ自体の機能追加 |
ENHANCEMENTS | 既存リソース、データソースのプロパティ変更 利用している SDK (hashicorp/go-azure-sdk) などバージョンアップ対応 |
BUG FIXES | 名前の通りバグ修正 |
というわけで、今回は 2024年1月19日 にリリースされた v3.88.0 のアップデートを確認していきましょう。
新規リソース
azurerm_virtual_machine_run_command
ドキュメント:azurerm_virtual_machine_run_command
Azure VM で実行コマンドを利用する azurerm_virtual_machine_run_command
リソースが追加されました。
実行コマンドの詳しい内容については Japan Azure IaaS Core Support Blog の以下の記事がとても参考になりました。
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 統合については以下を参照ください。
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 双方のドキュメントをご確認ください。
今回はアップデート確認は以上です。
結局リンク集みたいになってしまいましたが、こんな形で AzureRM プロバイダのアップデート情報を追っていきます。
【PR】
私達 ACS 事業部は Azure・AKS などのクラウドネイティブ技術を活用した内製化のご支援をしております。
一緒に働いていただける仲間も募集中です!
まだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。
我々の事業部の CultureDeck はコチラ。