【基礎編】Azure仮想マシンをTerraformでデプロイする手順を解説

Azure

クラウドコンピューティングが当たり前となった現在、多くの企業が仮想マシン(Virtual Machines、VM)を利用して、柔軟で拡張性のあるITインフラを構築しています。

中でも、Microsoftの提供するAzure Virtual Machines(Azure VM)は、WindowsやLinuxなどのOS環境を自由に選択でき、開発・検証から本番運用まで幅広く対応できるサービスです。

本記事では、Azure VMの基本から使いこなしまで、エンジニア目線で分かりやすく解説していきます。

Azure Virtual Machinesとは?

Azure Virtual Machinesは、Microsoft Azureが提供するIaaS(Infrastructure as a Service)型のクラウドサービスです。物理サーバーを持たずとも、仮想的にサーバーを構築・運用でき、用途に応じて柔軟にスペックやOSを選べるのが特徴です。

オンプレミス(自社運用の物理サーバー)と比べて初期コストが不要で、インフラ構築のスピードと拡張性に優れています。

Azure Virtual Machinesでできること

VMは、物理サーバーと同等の機能をクラウド上で提供するため、幅広い用途に活用できます。以下に、主な活用シーンとその背景・利点を詳しく解説します。

■ Webサーバーやアプリケーションサーバーの構築

企業のWebサイトや業務アプリケーションのホスティングに最適です。IIS(Windows)やApache/Nginx(Linux)をインストールして、以下のような構成を簡単に構築できます。

  • Webアプリ(ASP.NET, PHP, Node.jsなど)のホスティング
  • 自社開発システムのフロントエンド/バックエンド構築
  • SSL/TLS証明書の導入によるHTTPS通信の実現

トラフィックの増加に応じてスケーリングしたり、ロードバランサーやオートスケーリングを組み合わせることで高可用性構成にも対応できます。

■ データベースのホスト

SQL ServerやMySQL、PostgreSQL、Oracle Databaseなど、さまざまなRDBMSをインストールして、自社専用のDBサーバーを構築できます。

  • オンプレからの移行先として、段階的なクラウド化が可能
  • Azureの管理型DBサービス(Azure SQLなど)とのハイブリッド運用も可能
  • 高速ストレージ(Premium SSD)や高IOPS構成により、DB性能を最大限に活用可能

可用性セットやバックアップ機能を組み合わせることで、BCP(事業継続計画)にも対応します。

■ 開発・テスト環境の構築

開発チームが複数のVMを使って、製品の開発・検証・CI/CDパイプラインを構築する場面で非常に有効です。

  • 1人1台の開発用VMを素早く展開可能(カスタムイメージで標準化も可)
  • 開発言語やSDK(.NET, Java, Pythonなど)を自由にインストール可能
  • スナップショットや自動シャットダウンを利用してコスト最適化

VMをスクリプトで動的に立ち上げたり、停止したりすることで、効率的な開発体制を構築できます。

■ バッチ処理やビッグデータ処理

一時的な高負荷計算や、スケジュールされたバックグラウンド処理にVMを利用することも可能です。

  • 複数VMをスケールアウトして分散処理
  • GPU搭載のNシリーズVMで、AI・機械学習の学習ジョブにも対応
  • Azure Blob StorageやData Lakeと連携して大規模データを処理

一時的にスピンアップしたVMでジョブを実行し、完了後に削除することでコスト効率の良い運用が可能です。

■ 仮想デスクトップ(VDI)環境の提供

テレワークやBYOD(Bring Your Own Device)環境のセキュアなデスクトップとして、WindowsベースのVDI環境をVMで提供できます。

  • Azure Virtual Desktopと連携して多人数対応も可能
  • 社内アプリやファイルサーバーに安全にアクセス
  • ローカルPCにデータを残さず、セキュアな業務環境を実現

一元的な管理・監査も可能で、セキュリティ要件が高い業種にも対応できます。


このように、Azure Virtual Machinesは汎用性が非常に高く、インフラ構築の中心的な役割を果たします。クラウド環境でも「自由度」と「拡張性」を維持しつつ、従量課金で効率よく運用したい企業やエンジニアにとって、強力な武器となるでしょう。

Azure Virtual Machinesのシリーズ

Azure VMには用途別に最適化された「シリーズ」が用意されています。

シリーズ用途
Bsシリーズ経済効率の高いバースト可能な VM
Dシリーズあらゆる環境におけるアプリケーション実行に適したシリーズ(汎用シリーズ)
Eシリーズメモリ最適化シリーズ
Fシリーズコンピューティング最適化シリーズ
Gシリーズ大規模なデータベースやアプリケーションに適したシリーズ
Hシリーズハイパフォーマンスコンピューティングアプリケーション向けに最適化されたシリーズ
Lsシリーズストレージ最適化シリーズ
MシリーズSAP HANA などの大規模なインメモリデータベースに最適なシリーズ
Mv2シリーズAzure最大のメモリ容量を持つシリーズ
NシリーズGPU最適化シリーズ

Azure Virtual Machinesのイメージとは?

「イメージ」とは、仮想マシンのOSや初期状態のソフトウェア構成を含むテンプレートのことです。Azureでは以下のようなOSイメージを選べます。

  • Windows系:Windows Server 2022/2019、Windows 11など
  • Linux系:Ubuntu、CentOS、Red Hat、Debian など

また、自作のカスタムイメージを使って社内標準の環境を再現することも可能です。

Azure Virtual Machinesのサイズの選び方

Azure VMは「サイズ」としてvCPU数、メモリ(RAM)容量、ストレージ性能などがパッケージ化されています。以下の項目を理解すると、最適なサイズ選定が可能になります。

vCPUとは?

仮想CPUのことで、実際の物理CPUコアのリソースを仮想的に割り当てたものです。処理能力に直接影響します。

RAMとは?

メモリ容量のことです。アプリケーションの同時実行やキャッシュ性能に関係します。

データ容量とは?

VMに接続されるディスクサイズのことです。OSディスクとデータディスクの両方があります。

最大IOPSとは?

1秒あたりに処理できるディスクI/O(読み書き)の回数です。データベースやファイル操作が多いシステムでは重要な指標です。

ローカルストレージとは?

VMの物理ホスト上に一時的に提供される高速ストレージです。VMの再起動でデータは消えるため、一時ファイルやキャッシュ用に適しています。

Premiumディスクとは?

高性能なSSDストレージで、通常のStandard HDD/SSDよりも高速です。高IOPSが必要なワークロード向けです。

OSディスクとは?

OSディスクとは、Azure Virtual Machineにインストールされるオペレーティングシステム(WindowsやLinux)を格納するディスクです。仮想マシンのブート(起動)時に読み込まれ、常に稼働中に読み書きが行われるため、性能と可用性が非常に重要です。

OSディスクの特徴

  • 起動ディスクであり、VMが稼働するために必須
  • VM停止中もデータは保持され、再起動で復元可能
  • サイズや種類(HDD/SSD)を選択できる
  • Azure Managed Diskとして自動的に管理される
  • スナップショット作成やバックアップが可能

Azureでは、用途やコストに応じて複数のディスク種類が提供されています。次に、それぞれのディスクタイプの特徴や用途を比較してみましょう。

種類特徴・用途
Premium SSD高IOPS・低レイテンシのSSD。実稼働や性能要求の高いワークロード向け
Premium SSD(ローカル冗長)同一リージョン内での冗長保存あり
Standard SSDコストバランスの良いSSD。中程度のパフォーマンス
Standard HDD低コストだが低性能。アクセス頻度の少ない用途向け
ゾーン冗長ストレージ(ZRS)データが3つのゾーンに自動レプリケート。非常に高い可用性

選び方のポイント

それぞれのディスクには得意とするユースケースがあり、使用目的に応じて最適なタイプを選ぶことが重要です。以下に、選定の際の判断基準を紹介します。

開発・検証環境Standard SSDStandard HDD

本番環境(中負荷)Premium SSD(ローカル冗長)

高可用性・高性能が求められるシステムPremium SSD + ゾーン冗長

コスト最優先 & 非常用Standard HDD

このように、OSディスクの選定は仮想マシン全体の安定性・性能・コストに直結するため、ワークロードの特性をよく見極めたうえで決定することが重要です。

Azure Virtual Machinesをterraformでデプロイする

Azureインフラのコード管理を効率的に行いたい場合、Terraformは非常に強力な選択肢です。ここでは、Terraformを使ってAzure上にWindows仮想マシン(Azure Virtual Machine)をデプロイする手順を、実際のコード例とともに解説します。

前提として、以下のリソースはすでに作成済みとします。

  • リソースグループ(Resource Group)
  • 仮想ネットワーク(Virtual Network)
  • サブネット(Subnet)
  • ネットワークセキュリティグループ(NSG)

今回のステップでは、以下の3つのリソースをTerraformで新たに構築します。

Terraform構成ファイル(vm.tf)の作成

まず、仮想マシンやネットワーク関連のリソースを定義するファイル vm.tf を作成し、VS Codeなどのエディタで開きます。

ファイルを開いたら下記のコードを記述(コピペ)します。

# 仮想マシン(Windows Server 2016 Datacenter)
resource "azurerm_windows_virtual_machine" "vm01" {
  name                  = "ait-vm01"
  location              = data.azurerm_resource_group.existing.location
  resource_group_name   = data.azurerm_resource_group.existing.name
  size                  = "Standard_B1s"
  admin_username        = "azureuser"
  admin_password        = "P@ssw0rd1234!" # セキュアな保管方法を推奨

  network_interface_ids = [azurerm_network_interface.vm01_nic.id]

  os_disk {
    name                 = "ait-vm01-osdisk"
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2016-Datacenter"
    version   = "latest"
  }

  provision_vm_agent = true
}

# パブリックIP
resource "azurerm_public_ip" "vm01_pip" {
  name                = "ait-vm01-pip"
  location            = data.azurerm_resource_group.existing.location
  resource_group_name = data.azurerm_resource_group.existing.name
  allocation_method   = "Static"
  sku                 = "Basic"
}

# NIC
resource "azurerm_network_interface" "vm01_nic" {
  name                = "ait-vm01-nic"
  location            = data.azurerm_resource_group.existing.location
  resource_group_name = data.azurerm_resource_group.existing.name

  ip_configuration {
    name                          = "internal"
    subnet_id                     = azurerm_subnet.snet01.id
    private_ip_address_allocation = "Dynamic"
    public_ip_address_id          = azurerm_public_ip.vm01_pip.id
  }
}

ポイント

  • size で仮想マシンのスペック(今回は Standard_B1s)を指定します。
  • source_image_reference にてWindows Serverの最新版を指定。
  • admin_password は本番環境では変数化またはAzure Key Vaultの活用を推奨。

Terraform Planの実行

構成ファイルを保存したら、Terraformで構成の差分を確認します。

terraform plan

リソースが正しく3つ追加されることが確認できればOKです。

Plan: 3 to add, 0 to change, 0 to destroy.

Azure上にデプロイ

問題がなければ、実際にAzure上にリソースを作成します。

terraform apply

下記プロンプトが表示されたら、yes と入力して実行を承認します。

Plan: 3 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
Terraform will perform the actions described above.
Only ‘yes’ will be accepted to approve.

Enter a value:

以下のメッセージが表示されれば、リソースの作成に成功しています。

Apply complete! Resources: 3 added, 0 changed, 0 destroyed.

VMが作成されていることを確認

AzureポータルまたはCLIで、仮想マシンが作成されていることを確認しましょう。

まとめ

本記事では、Terraformを使ってAzure Virtual Machinesをデプロイする一連の手順を実践的に解説しました。構成ファイルの作成から仮想マシン、ネットワークインターフェース、パブリックIPの構築、そしてデプロイの確認まで、一通りの流れを経験することで、Infrastructure as Code(IaC)によるAzure環境構築の基本を学ぶことができたはずです。

Terraformを活用することで、インフラの再現性・保守性・自動化が飛躍的に向上します。ずは小さな構成から着実に慣れ、プロジェクトに応じたスケーラブルなIaCを目指していきましょう。

プロフィール
tanat

「株式会社あいてぃ」に所属。
主にAWSとAzureなどのクラウドインフラを管理するクラウドエンジニアとして活動中。
スマホアプリやフロント部分の構築も可能なフルスタックエンジニアとして活躍できるように日々勉強中です。

tanatをフォローする
Azure
tanatをフォローする

コメント

タイトルとURLをコピーしました
function cocoon_custom_code_copy_script() { ?>   } add_action('wp_footer', 'cocoon_custom_code_copy_script');