packer-windowsテンプレートを使ってWindows 8.1 update(日本語版)評価版のVagrant Boxができた
Windows環境の検証で「Vagrantが使えたらな」と思ってましたが、Vagrant 1.6から正式にWindowsゲストに対応したので、packerを使ってWindows 8.1 update(日本語版)評価版を使ってVagrant Boxを作ってみました。
準備
packer用のWindowsテンプレートは、VeeWeeからの移植版という形ですでに作られています。
- joefitzgerald/packer-windows: https://github.com/joefitzgerald/packer-windows
これをcloneして、適当にbranchを切っておきます。一回こっきりならzipファイルをダウンロードして使ってもおk。
テンプレートの中にはisoディレクトリがあるので、ここにISOイメージを置いておきます。 コピーでもシンボリックリンクでもどちらでもかまいません。
設定
変更するファイルは「windows_81.json」と「answer_files/81/Autounattend.xml」の2つです。
まずwindows_81.jsonのISOイメージの場所とmd5チェックサムを変更します。 ISOイメージの場所はisoディレクトリを指定します。 md5チェックサムは、md5sumコマンドで調べられられるのでこれを使います。
"type": "virtualbox-iso",
"iso_url": "./iso/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_ENTERPRISE_EVAL_JA-JP-IR3_CENA_X64FREE_JA-JP_DV9.ISO",
"iso_checksum_type": "md5",
"iso_checksum": "38a1026af48eff582389acb48e8429bb",
VirtualBoxの設定でゲストOSタイプが「Windows2012_64」になっているので、これを「Windows81_64」に変更しておきます。
"guest_os_type": "Windows81_64",
次に、answer_files/81/Autounattend.xmlを変更します。
KMSクライアントキーをWindows 8.1 Enterprise用に変更します。
-
Appendix A: KMS Client Setup Keys: http://technet.microsoft.com/library/jj612867.aspx
MHF9N-XY6XB-WVXMC-BTDCT-MKKG7
言語の指定をen-USからja-JPに変更します。
<SetupUILanguage>
<UILanguage>ja-JP</UILanguage>
</SetupUILanguage>
<InputLocale>ja-JP</InputLocale>
<SystemLocale>ja-JP</SystemLocale>
<UILanguage>ja-JP</UILanguage>
<UILanguageFallback>ja-JP</UILanguageFallback>
<UserLocale>ja-JP</UserLocale>
Windows関連の設定はよくわからないので、この辺も参考にするといいかも。
- Packer で Windows の Box (vmware-iso) を作成するまで - azukipochette's weblog: http://azukipochette.hatenablog.com/entry/2014/05/16/212551
作成
あとはpackerを実行すればVagrant boxが作成できます。 自分はVirtualBoxだけあればよかったので、こんな感じ。
$ packer build -only=virtualbox-iso windows_81.json
作成には、かなりの時間(自分の環境では2時間ぐらい)がかかるので気長に待ちます。
使ってみる
作成したboxをvagrant box addで追加。
Vagrantfileは、packer-windowsにvagrantfile-windows_81.templateというテンプレートがあるので、これをVagrantfileとしてコピーして、config.vm.boxを登録したbox名に編集します。
vagrant upすればWindowsのboxが起動します。
config.vm.communicatorをwinrmからsshに変更すれば、SSHでログインできます。
リモートデスクトップでの接続は、接続が許可されていないので、一度、GUIを有効にして(コメントアウトされている v.gui = true のコメントを外す)改めてリモートデスクトップの接続許可を有効にすると接続できます。