基本的に Vagrant で作ったり壊したりできる Windows 環境を手に入れるまでの手順 - てっく煮ブログ の情報通りにやれば構築できます。
ただ、いくつか追加で手順が必要です。
試してみた環境は以下の通り。
- ホストOS:Windows 8.1 Pro(x64)
- ゲストOS:Windows 7 Professional with SP1(x86)
- ゲストOS:Windows 8.1 Pro(x86)
構築したときの作業ログは こちら
環境構築
せっかくなので必要なソフトは Chocolatey でインストールしてみましょう。
chocolatey のインストールは管理者権限でコマンドプロンプトを起動して以下のコマンドを実行するだけ。
インストール完了後続けて cinst
するとエラーになることがあるので、コマンドプロンプトは一旦終了させておきましょう。
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
chocolatery を使うと VirtualBox, Vagrant のインストールはこれだけです。
cinst VirtualBox
cinst Vagrant
chocolatey が PATH
環境変数をセットしてくれるんですが、 VirtualBox は正しくセットしてくれません。
なので C:\Program Files\Oracle\VirtualBox
をセットしなおしましょう。
次に Vagrant で Windows を扱えるように SSH の代わりに WinRM を使用するプラグイン Vagrant-Windows をインストールします。なお、プロキシ環境下の場合は HTTP_PROXY
をセットしておく必要があります。
vagrant plugin install vagrant-windows
2014/06/28 追記
上記作業は Vagrant 1.5.x で必要です。 Vagrant 1.6 からゲストWindowsをサポートしているため、 Vagrant-Windows は不要です。
仮想イメージの作成
これは参考URLの手順に従いましょう。
- VirtualBox を起動します。
- メニューから [仮想マシン] > [新規] を選択します。
- 名前に [Win7SP1x86] と入力します。これはあとで使うので、分かりやすい名前を付けます。
- メモリーは 1024MB 、 HDD容量は 25GB の可変とします。
- [オーディオ] と [USB] を無効化します。
- [ストレージ]に ISO イメージを指定します。
- メニューから [仮想マシン] > [起動] を選択します。
- OS インストールが始まるので、アカウント名に
vagrant
、パスワードにvagrant
を指定します。 - WindowsUpdate は無効化しておきます。
- メニューから [デバイス] > [Guest Additions のCDイメージを挿入...] を選択します。
- ゲストOSの D ドライブを開いて
VBoxWindowsAdditions
を実行します。 - メニューから [デバイス] > [CD/DVD デバイス] > [仮想ドライブからディスクを除去] を選択します。
仮想イメージの調整
ここからはゲストOS側で作業します。まずは UAC を無効化します。
- Win+R で
msconfig
と入力します。 - [ツール] > [UAC 設定の変更] > [起動] を選択して [通知しない] に変更します。
次に WinRM を有効化します。
コマンドプロンプトを管理者権限で実行し、以下のコマンドを実行しましょう。
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
これは好みですが、便利なのでリモートデスクトップを有効化しておきましょう。
作業が終わったらシャットダウンします。
Base Box 作成
Vagrantfile.txt
作成時はリモートデスクトップと WinRM をポートフォワーディングしておきましょう。
Vagrant.configure("2") do |config|
config.vm.guest = :windows
config.vm.network :forwarded_port, guest: 3389, host: 13389
config.vm.network :forwarded_port, guest: 5985, host: 15985, id: "winrm", auto_correct: true
end
2014/06/28 追記
上記設定は Vagrant 1.5.x 用です。 Vagrant 1.6.x では下記のようにしましょう。
Vagrant.configure("2") do |config|
config.vm.guest = :windows
config.vm.communicator = "winrm"
config.vm.network :forwarded_port, guest: 3389, host: 13389
config.vm.network :forwarded_port, guest: 5985, host: 15985, id: "winrm", auto_correct: true
end
次に vagrant package
で Base Box を作成するんですが、 VirtualBox に不具合があるため失敗します。
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["showvminfo", "Win7SP1x86"]
Stderr: VBoxManage.exe: error: Failed to create the VirtualBox object!
VBoxManage.exe: error: Code CO_E_SERVER_EXEC_FAILURE (0x80080005) - Server execution failed (extended info not available)
VBoxManage.exe: error: Most likely, the VirtualBox COM server is not running or failed to start.
- vagrant up fails with VirtualBox 4.2.12 · Issue #1622 · mitchellh/vagrant
- Vagrant upエラー【0x80070005】win7編|Webのこと
参考URLの通りに構成を変更して VirtualBox を再起動しましょう。
- Win+R >
DCOMCNFG
> [コンピューター] > [マイ コンピューター] > [DCOM の構成] > [VirtualBox Application]右クリック > [プロパティ] - [ID] > [対話ユーザー]に変更
これで vagrant package --base "Win7SP1x86" --vagrantfile Vagrantfile.txt
が成功するようになります。
NOTE: Win7SP1x86
は先ほど仮想イメージで指定した名前です。
Box( package.box
) ができたら vagrant box add Win7SP1x86 package.box
で登録します。
NOTE: この Win7SP1x86
は vagrant 上で Box を区別するための名前です。上記仮想イメージの名前とは別でも構いません。
Box 起動
vagrant init
したら vagrant up
します。
この時 HTTP_PROXY
をセットしているならクリアしておきましょう。そうしないと WinRM でプロキシが使われてしまい、正常に vagrant up
が完了しません。
これで好き放題作ったり壊したりできる Windows 環境ができるようになります。