LoginSignup
11
16

More than 5 years have passed since last update.

Windows ServerのVagrant box構築を自動化する(VirtualBox編)

Last updated at Posted at 2017-06-18

概要

Windows ServerのVagrant box構築を自動化する(今回は2012R2と2008R2)。boxを構築しておけば必要な時にVM作って消してやり直してが高速で出来るので大変便利である。
自動化されるのは以下の部分である。

  • 評価版ISOイメージのダウンロード
  • 仮想マシン(VM)の構築と起動
  • OSインストール
  • 更新(Windows Update)
  • VirtualBox Guest Additionsのインストール
  • 各種設定(リモートデスクトップなど)
  • sysprep(セキュリティID消去など)
  • boxの構築

つまり、Windows Updateが全て終わった最新の状態を作成できる。
今回はpacker-templateを使う。詳しい説明はこちら

経緯

2008R2での検証が必要になりvagrantで効率化しようと考えたのだが、ネット上からwindowsのboxを適当に拾ってくるわけにもいかず、自前で構築する事に(だって何か怖いじゃん。プロプライエタリだよ?)。Windowsのbox構築を自動化する用のpackerテンプレートはいくつかあるのだが、packer-templateは2008R2に対応しておらず、boxcutterは手元の環境でうまく動かない。packer-templateが2012R2で動くことは確認できたので、今回はpacker-templateを元にboxcutterの2008R2用の設定を移植することとした。

注意点

この手順は非常に時間がかかる(Windows Updateや仮想HDDのシュリンク等を含むため)。手元の環境では2012R2が8時間かかった。2008R2は更にかかった(よく覚えてないくらい)。

検証

以下の環境にて動作を確認した

  • ホストOS

    • OS:Windows 10 Home
    • CPU:Core-i5 2450M (2.5GHz)
    • Memory:4GB
    • SSD:128GB
  • ゲストOS

    • Windows Server 2012 R2 (評価版)
    • Windows Server 2008 R2 (評価版)

なおゲストOSはどちらも英語版である。
とりあえず特定のOSに依存する部分は無いような気がしている。もしMacOSやLinux上で動いたら教えて欲しい。

必要ソフト

今回は必要ソフトの詳しい説明は省く。既に良い記事が幾らでもQiitaにある。

Vagrant

仮想環境のフロントエンドツール。VMの構築や削除をコマンド一つで行える。作って壊してを繰り返す時に大変便利。

VirtualBox

Oracle社の仮想環境。わりとどこでも動く。

Packer

boxの作成を自動化するツール。vagrantと作者が同じ。

packer-template

packerでの自動化に必要なテンプレート。2012R2用のものしかなかったので今回はforkして2008R2用を追加した。親リポジトリはこちら

構築手順

必要ソフトをインストール

インストールはWindowsならChocolatey、MacOSならHomebrew経由が簡単である。今回はChocolateyを使ったやり方を述べる。まずインストーラーをダウンロードして管理者権限で実行する。その後下記コマンドでVagrant, VirtualBox, Pakcerをインストール出来る。

>./install.ps1
>choco install vagrant virtualbox packer -y

管理者権限で実行すること。powershellを右クリックして[管理者として実行する]でOK

packer-templateはgit cloneかzipでダウンロードするかして、どこでもよいので適当なフォルダに配置する。以降の作業はこのフォルダで行うので、容量の大きいパーティション上を推奨(例えば構築中の仮想マシンの仮想HDDファイルはこのディレクトリ以下に配置される)。

評価版ISOイメージの取得(Optional)

デフォルトではpackerが自動でダウンロードするので前もってダウンロードしておく必要はない。もし既にダウンロード済みであれば以下の修正でISOイメージからVMを構築できる。ちなみにダウンロードはこちらから。2008R2 2012R2
2008R2の場合は./vbox-2008r2.jsonを、2012R2の場合は./vbox-2012r2.jsonの下記の部分を変更する。(2008R2のイメージをダウンロードして./isoフォルダに置いた場合の設定。ISOイメージ名は環境による(と思う)。)

./vbox-2008r2.json
- "iso_url": "http://care.dlservice.microsoft.com/dl/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO"?

+ "iso_url": "./iso/7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso"

(行頭-が削除行、+が追加行である)

boxの構築

カレントディレクトリにて下記コマンドを実行。非常に時間がかかるので注意

2012R2を使う場合
>packer build -force -only virtualbox-iso ./vbox-2012r2.json

2008R2を使う場合
>packer build -force -only virtualbox-iso ./vbox-2008r2.json

使用手順

box listに出来たboxを追加する
>vagrant box add ?

仮想マシンを配置するフォルダで下記コマンドを実行
>vagrant init

あとはいつも通りup,halt,destroy出来る。
起動:>vagrant up
停止:>vagrant halt
破壊:>vagrant destroy
もちろん破壊後>vagrant upすれば最初の状態に戻る。お疲れ様でした。boxの更新についてはQiitaを(ry

正規版DVDからの構築

正規版DVDのISOイメージを用いた作成も可能とは思うが未検証である。手順は以下。
正規版DVDからISOイメージを作成し、適当なフォルダに格納する。
チェックサムを計算する。Windowsであればここからツールをダウンロードできる。
ISOイメージの場所とチェックサム値を用いて./vbox-2012r2.jsonファイルのチェックサムとパスを修正する。(2008R2の場合は./vbox-2008r2.jsonを修正)

./vbox-2012r2.json
- "iso_checksum": "beed231a34e90e1dd9a04b3afabec31d62ce3889",
- "iso_url": "./iso/7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso"?

+ "iso_checksum": "<計算したチェックサム値>",
+ "iso_url": "<取得したISOイメージへのパス>"

あとはbox構築のコマンドを発行すればよい。

今後の課題など

  • 日本語対応
  • Hyper-V上での動作
  • PullRequestするかどうか
  • なんか文章が読みにくい

PullRequestってどういう時にしてもいいんでしょうね?適当?

11
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16