はじめに
「Vagrant up」だけで必要ソフトが準備された状態のWindows環境を作るのが目標。
とりあえず動くようになったので、自分用のメモとして記録。
※別環境でも試したので情報を追記。(2014/09/29)
試した環境
ホスト : Windows 8.1 Pro
ゲスト : Windows 7 Pro
Vagrant : 1.5.1
VirtualBox : 4.3.12
手順
- 
VagrantとVirtualBoxをインストール 
- 
vagrant-windowsプラグインをインストール(Vagrant1.6では不要) コマンドプロンプトで下記を実行 vagrant plugin install vagrant-windows
- 
仮想マシン(Windows)の作成 VirtualBox上の名前を「Win7Pro_64bit」に設定して、仮想マシンをインストール。 
 仮想マシンの設定はWeb上の他の記事を参考に。※設定を忘れないように下記にメモ。(下記は仮想マシン上で行う) - 
管理者のユーザー名とパスワードは共に Vagrant
- 
WindowsUpdateの自動実行をOFF 
- 
リモートデスクトップを有効に 
- 
VBoxWindowsAdditionsを実行
- 
下記をコマンドプロンプトで実行(Vagrant1.6向け~~では不要か?~~でも必要)(参考ページ) winrm quickconfig -q winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"} winrm set winrm/config @{MaxTimeoutms="1800000"} winrm set winrm/config/service @{AllowUnencrypted="true"} winrm set winrm/config/service/auth @{Basic="true"} sc config WinRM start= auto
 
- 
- 
仮想マシン上にchocolateyをインストール(下記は仮想マシン上で行う) - 
PowerShellの実行ポリシーを変更 Set-ExecutionPolicy RemoteSigned
- 
PowerShellでChocolateyをインストール iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
 
- 
- 
仮想マシンの電源をOFF 
- 
Boxの作成 - 
デフォルト値を記述したVagrantfileを作成。 
- 
Vagrantfileと同じ階層で下記コマンドを実行。package.boxができる。 vagrant package --base "Win7Pro_64bit" --vagrantfile Vagrantfile
 
- 
- 
Boxを追加 vagrant box add Win7Pro_64bit package.box
- 
Vagrantfileを任意の作成 任意の場所にフォルダを作成して下記内容のファイルを配置。 VagrantfileVAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.guest = :windows config.vm.box = "Win7Pro_64bit" config.vm.provider :virtualbox do |vb| vb.gui = false end config.vm.provision "shell", path: "./setup.bat" end
- 
プロビジョン用のバッチファイルを作成 下記内容のファイルをVagrantfileと同じ場所に配置。 setup.batcinst c:\vagrant\packages.config
- 
ゲストOSへインストールするソフトをファイルに記述 インストール対象を記述したファイルをVagrantfileと同じ場所に配置。 packages.config<?xml version="1.0" encoding="utf-8"?> <packages> <package id="MicrosoftSecurityEssentials" /> <package id="GoogleChrome" /> </packages>
- 
Vagrantで仮想マシンを起動 Vagrantfileと同じ場所で下記コマンドを入力 vagrant up
- 
リモートデスクトップで localhost:13389に接続。
メモ
- ホスト上のVagrantfile配置フォルダは、ゲスト上のC:\Vagrantと同期(?)してる。
- プロビジョニング用のバッチから実行するChocolateyで、なぜか停止する場合がある模様。
- 確認できたのはFreeMindのインストール。
- パッケージによってはダイアログの「はい」ボタンを押さないとインストールが先に進まない。(これが原因か?)
- 止まってしまったらCtrl+Cで強制終了したら先に進んだ。
- 手順9でcinstを呼び出すように記述しないで、手順12のあとに手動実行した方が無難かも。
 
まとめ
vagrantでwindowsの仮想マシンを作って、プロビジョニングでChocolateyを実行してるだけ。
Chocolateyのインストールもプロビジョニングで行うのが今後の課題。
ChefとかPowerShell DSCも試してみたいところ。