Azure Managed Service Column <Azure運用コラム>

Terraformの活用でAzure Virtual Desktopを効率的に運用しよう!

Category: 実践編

2024.06.11

Terraformを用いてAVDを構築する方法、管理、運用におけるベストプラクティスについて解説

AVD の普及とともに、企業はインフラ環境の迅速かつ、セキュリティやコンプライアンスを考慮した管理が求められるようになりました。

そこで注目されているのがInfrastructure as Code(以下、 IaC )です。 IaC は、インフラストラクチャーの設定と管理を自動化するために、コードを使用する手法であり、現代のIT運用において非常に重要な役割を果たしています。

本記事ではオープンソースの Infrastructure as Code(以下、 IaC )ツールである、 Terraform を用いて AVD を構築する方法、管理、運用におけるベストプラクティスについて解説します。

1. AVD環境におけるTerraformの活用

AVD( Azure Virtual Desktop ) は、 Azure プラットフォーム上で提供される、包括的なデスクトップおよびアプリケーション仮想化サービスです。 AVD についての詳細は Microsoft 公式サイトをご覧ください。本章では、 Terraform の概要と、 AVD 環境における Terraform のメリットについて説明します。

※参考1:Azure Virtual Desktop とは

Terraformの概要

Terraform は、 HashiCorp 社によって開発されたオープンソースの IaC ツールです。 IaCとはインフラストラクチャーの構築から管理運用までを、プラグラミングコードによって行うことです。 Terraform はクラウドサービス、オンプレミスリソースを含む広範なインフラストラクチャーコンポーネントを、コードを介して構築、変更、バージョン管理できます。

Terraformの機能

主な機能について解説します。

インフラストラクチャーのプロビジョニング

Terraform ファイル(.tf や.tfvars )を用いて、インフラストラクチャーのすべての設定をコードとして管理することで、変更の追跡、レビュー、再利用、自動化が容易になります。さらにセットアップのプランニングを、変更の確認と実行の2段階に分けて行うことが可能です。

リソースの状態管理と依存関係の管理

Terraform は常に状態を管理し、リソース間の依存関係を自動的に解決し、適切な順序でリソースを作成または削除できます。

自動化とオーケストレーション

Terraform は複数のリソースやサービスにわたる変更を一元管理し、インフラストラクチャーの変更を一自動的に調整します。例えば、大規模な環境で新しいサーバーを追加する場合、関連する設定や依存するリソースの変更が自動的に反映され、効率的な運用が可能です。

AVD環境におけるTerraformメリット

AVD環境でTerraformを利用すると享受できるメリットを紹介します。

効率的で正確なデプロイと管理運用

Terraform を使用すると、 AVD 環境のセットアップやスケーリングが自動化されます。またモジュール化することで設定の再利用が容易になり、手動プロセスに比べて時間と労力を大幅に削減し、正確性を担保できます。さらに環境に依存する値は変数として定義し、.tfvarsファイルなどで値を指定することで、異なる環境へのデプロイが容易とります。

セキュリティ

Terraform を使用することで、セキュリティポリシーとコンプライアンス要件をコードとして設定できます。 AVD 環境のセキュリティを向上させ、基準を満たした運用が可能です。

クロスプラットフォーム

Terraform は Azure を含む複数のクラウドプロバイダーに対応しており、マルチクラウド戦略の一環としてAVDを一元管理できます。異なるクラウドサービスを使用する場合でも、Terraformを使えば一つのツールで管理できるため、効率化につながります。

AVD環境におけるTerraformメリット

2. Terraformを使用したAVD環境の構築

Terraform を使用した AVD 環境の構築について、環境準備とデプロイメントプロセスを解説します。

環境準備

まずはデプロイするための環境準備について解説します。

1. Terraformのインストール

公式Terraform Community サイトから Terraform のバイナリをダウンロードし、インストールします。自身が操作するPCのOS環境に合わせてインストールしましょう。

※参考2:Terraform Community

Terraformを使用したAVD環境の構築

図版出典:HashiCorp

2. Azure CLIのインストール

Azure CLI をインストールして、 Azure のリソースに対してコマンドラインから操作できるよう環境を用意します。

※参考3:Azure CLI をインストールする方法

3. Azureサブスクリプションの準備

Azure にアカウントを作成し、サブスクリプションを持っていることを確認します。Terraform は、このサブスクリプション内で AVD のリソースを作成します。

4. Terraform用のサービスプリンシパルの作成

Terraform が Azure リソースを管理するために、 Azure CLI を使用して適切な権限を持った サービスプリンシパルを作成します。

※参考4:サービス プリンシパルの作成

5. Terraform コードの準備

Terraform 設定ファイル( .tfファイル)を作成し、 Azure provider の設定と、 AVD インフラストラクチャーに必要なリソース(仮想ネットワーク、仮想マシン、ホストプールなど)を定義します。

6. Terraformの初期化

Terraform 設定ファイルを以下のコマンドを実行して初期化します。


terraform init

これにより、プロバイダーのプラグインがダウンロードされ、 Terraform が使用する状態ファイルが準備されます。

7. 環境変数の設定

Terraform が サービスプリンシパルを使用して Azure にアクセスするために、環境変数 ARM_CLIENT_ID 、 ARM_CLIENT_SECRET 、 ARM_SUBSCRIPTION_ID 、 ARM_TENANT_ID を設定します。

※参考5:環境変数でサービス プリンシパルの資格情報を指定する

Terraform を使用して AVD 環境を設定する準備は以上です。

Terraformを用いたAVDのデプロイメントプロセス

Terraform を用いて AVD 環境をデプロイするための簡単なコードサンプルをステップバイステップのプロセスで紹介します。本章の例では、 AVD 用の基本的なホストプールと仮想マシンを設定します。

1. Terraformプロバイダーの設定

main.tf ファイルにAzureプロバイダーを設定します。以降は、 HashiCorp Configuration Language (以下、HCL)にて記述します。


provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "East US"

}

2. ネットワークリソースの設定

ネットワークリソースを作成します。


resource "azurerm_virtual_network" "example" {
  name                = "example-network"
  address_space       = ["10.0.0.0/16"]
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
}

resource "azurerm_subnet" "example" {
  name                 = "example-subnet"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.0.1.0/24"]
}

3. AVDホストプールの設定

AVD ホストプールを作成します。


resource "azurerm_virtual_desktop_host_pool" "example" {
  name                = "example-hostpool"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  type                = "Pooled"
}

4. AVDワークスペースの設定

AVDワークスペースを作成します。


resource "azurerm_virtual_desktop_workspace" "example" {
  name                = "example-workspace"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  description = "Workspace description"
}

5. Terraformの初期化とプランの作成

Terraformを初期化し、デプロイプランを作成します。Shell スクリプトによるコマンド操作箇所です。


terraform init
terraform plan

6. デプロイメントの適用

計画を確認した後、デプロイメントを適用してインフラストラクチャーを構築します。


terraform apply

7. デプロイメントの確認

AzureポータルまたはAzure CLIを使用して、デプロイされたAVDリソースを確認します。

紹介したコードは簡単な例であり、実際の使用には追加のパラメータやリソースが必要です。実際のデプロイメントでは、Terraformの公式ドキュメントやAzureのAVDに関連するドキュメントをご参照ください。

※参考6:Terraform を使用して Azure Virtual Desktop を構成する

※参考7:Terraform を使用して Azure Virtual Desktop セッション ホストを構成する

3. まとめ

Terraform を使用して AVD 環境を構成することは、インフラストラクチャーをコードで管理し、デプロイメントを自動化する効果的な方法です。 Terraformを活用することで、企業のIT担当者は、変更管理を容易にし、時間を節約し、コストを最適化し、堅牢でスケーラブルな AVD を実現することができるでしょう。

Azure の導入を相談したい

Azure導入支援サービス

Azure 導入支援サービス

Microsoft Azure 導入の具体的な方法の検討や技術検証を専門家にサポートいたします。

Free

資料ダウンロード

課題解決に役立つ詳しいサービス資料はこちら

資料ダウンロード
  • Azure導入支援・構築・運用サービス総合カタログ

    Microsoft Azure サービスの導入検討・PoC、設計、構築、運用までを一貫してご支援いたします。
    Azure導入・運用時のよくあるお悩み、お悩みを解決するためのアールワークスのご支援内容・方法、ご支援例などをご確認いただけます。

  • AVD(Azure Virtual Desktop)運用サポートサービスカタログ

    AVD 環境におけるトラブルやお問い合わせへの対応、運用方法のレクチャーなどをご支援いたします。
    Azure Monitor(監視)で検知しないようなトラブルに関する原因調査と解決策のご提示や、AVD に関する技術的な問合せ対応、お客様のご事情に合わせた最適な AVD の機能・サービスのご提案など、サービス内容をご確認いただけます。

Microsoft Azureを利用したシステムの設計・構築を代行します。お客様のご要件を実現する構成をご提案・実装いたします。

Azure導入個別相談会(無料)

Tag: Azure Virtual Desktop Terraform

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php