検証環境をWindows Server 2025 + Ansible + Hyper-VでIaC化する

この記事の内容

  • ホストOSをWindows Server 2025 Datacenterにアップグレードし、Hyper-V検証環境を刷新した
  • AnsibleとPlaybookを使ってHyper-V上のVM作成・Active Directory構築をコード化(IaC)している
  • ソースコードはGitHub(ebibibi/ansible-hyperv)で公開されており、自由に利用できる
  • Windows Server 2025ではWSL2がネイティブ動作するなど仕様変更があり、ルーティング設定に注意が必要
  • RRAS(ルーティングとリモートアクセス)の有効化でルーティング問題を解決できることを確認した

検証環境をWindows Server 2025にアップグレード

今回、筆者の検証環境のホストOSをWindows Server 2025 Datacenterエディションにアップグレードしました。ハードウェアはLenovo SE350(メモリ192GB)をお借りして使用しており、このマシン上でHyper-Vによる仮想環境を構築・管理しています。

検証用のVMは使い終わったら都度削除する運用を取っており、「作って・消して・また作る」というサイクルを繰り返しています。クラウドに慣れた視点でオンプレ環境も同様に扱うことで、常にクリーンな環境を保っています。


AnsibleでHyper-VをIaC化する仕組み

Ansibleプレイブックでの環境構築

検証環境の構築には、Ansibleプレイブックを使用しています。たとえばActive Directory環境を作成する場合は、以下のようなコマンドを実行するだけです。

ansible-playbook create_ad.yml

これを実行すると、ゴールデンイメージのVHDXをVM用にコピーし、必要な台数分のVMが自動的に作成されます。

リポジトリの公開

この仕組みはGitHubの以下のリポジトリで公開されています。

ebibibi/ansible-hyperv

リポジトリには実行手順の解説動画へのリンクや、ドキュメントも整備されています。Hyper-Vホストの準備方法からゲストVMのルーティング設定まで、コマンドをコピー&ペーストして進められるように記載されています。

インベントリファイルによる環境定義

作成する環境はインベントリファイル(YAMLファイル)に記述します。以下はその例です。

vms:
  - name: DC01
    type: windows
    ip: 10.1.1.1
    cpu: 2
    memory: 4096
    network: InternalSwitch
    source_vhd: /path/to/golden.vhdx
    dest_vhd: /path/to/DC01.vhdx
    extra_drives:
      - path: /path/to/DC01_D.vhdx
        size: 50GB
  - name: DC02
    type: windows
    ip: 10.1.1.2
    ...
  - name: CLIENT01
    type: windows11
    ip: 10.1.1.3
    ...

type: windows の定義を増やすだけで何台でもVMを自動作成できます。またドメインコントローラーの指定、ドメインへの参加、フォレストの作成、DNSフォワーダーの設定なども、このファイルに記述するだけで自動的に処理されます。

Ansibleの冪等性の特性により、途中で設定を変更したり再実行したりしても、すでに完了済みの処理はスキップされます。


Windows Server 2025で注意すべきポイント

WSL2がネイティブ動作するようになった

Windows Server 2025ではWSL2がネイティブで動作するようになりました。これはネットワーク構成に影響を与えます。典型的な構成では、以下の3つのネットワークが存在することになります。

  1. 物理ネットワーク(ホストの外部NIC)
  2. Hyper-V内部ネットワーク(ゲストVM群)
  3. WSL2の仮想ネットワーク

これら3つのネットワーク間で通信を行うためには、Windowsホスト側でルーティングを有効化する必要があります。

ルーティング設定の変更点

以前のWindows Server(2016〜2022)では、以下のレジストリキーを設定することでルーティングが有効になっていました。

HKEY_:L:OICP1AELn_aMbAlCeHRIoNuEt\eSrYSTEM\CurrentControlSet\Services\Tcpip\Parameters

しかしWindows Server 2025では、このレジストリ設定だけではルーティングが機能しませんでした。

RRAS(ルーティングとリモートアクセス)での対応

Windows Server 2025では、RRAS(Routing and Remote Access Service) を使って構成する方法で正常にルーティングが動作することを確認しました。

設定手順は以下のとおりです。

  1. サーバーマネージャーまたは「ルーティングとリモートアクセス」ツールを起動する
  2. 「カスタム構成」を選択する
  3. 「LANルーティング」のみを有効化する
  4. サービスを開始する

ただし、サービス開始時にエラーが表示される場合があります。これはWindows Server 2025でLANルーティングのみを構成する際に発生する既知の挙動のようです。エラーが表示されても実際のルーティング機能は正常に動作することを確認しています。

なお、このRRASサービスを停止するとルーティングが機能しなくなり、ゲストVMからの通信がエラーとなることも確認済みです。つまり、ルーティングにはこのサービスが必須です。

hostsファイルの自動上書き問題

Windows Server 2025では、hostsファイルが自動的に上書きされてしまうケースがあることも確認されています。Ansible経由でエントリを追加しても意図せず書き戻されることがあるため、ドキュメントには暫定的な対処方法が追記されています。この点については今後さらに調査・ドキュメント更新の予定です。


実際の環境構成例

今回の検証環境では、以下のような3台構成でActive Directory環境を構築しています。

VM名IPアドレス役割
DC0110.1.1.1ドメインコントローラー(1台目)
DC0210.1.1.2ドメインコントローラー(2台目)
CLIENT0110.1.1.3ワークグループ環境(ドメイン未参加)

DC01をフォレストルートドメインコントローラーとして構成し、DC02を追加ドメインコントローラーとして昇格させる設定をインベントリファイルに記述するだけで、Ansibleが自動的に処理を行います。

VM作成には相応の時間がかかるため、コマンドを実行したらしばらく休憩するのが実際の運用スタイルです。


まとめ

Windows Server 2025をホストOSとし、AnsibleでHyper-V環境をIaC化する取り組みについて紹介しました。

  • ゴールデンイメージからのVMクローン、Active Directory構築、ドメイン参加までをコードで管理することで、検証環境の再現性が大幅に向上します
  • ソースコードはGitHubリポジトリ(ebibibi/ansible-hyperv)で公開されており、ドキュメントも整備されています
  • Windows Server 2025ではWSL2のネイティブ対応により3つのネットワークが存在することになり、ルーティングにはRRASの有効化が必要です
  • レジストリ(IPEnableRouter)による従来の方法はWindows Server 2025では機能しないため注意が必要です

クラウドに慣れた感覚でオンプレ環境を「作って消して作って消して」と気軽に扱えるこの仕組みは、検証・学習用途に非常に有効です。Windowsベースのオンプレ検証環境を持っている方は、ぜひ一度試してみてください。