Vagrant で Windows もゲストOSに

  • 72
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

基本的に 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の手順に従いましょう。

  1. VirtualBox を起動します。
  2. メニューから [仮想マシン] > [新規] を選択します。
  3. 名前に [Win7SP1x86] と入力します。これはあとで使うので、分かりやすい名前を付けます。
  4. メモリーは 1024MB 、 HDD容量は 25GB の可変とします。
  5. [オーディオ] と [USB] を無効化します。
  6. [ストレージ]に ISO イメージを指定します。
  7. メニューから [仮想マシン] > [起動] を選択します。
  8. OS インストールが始まるので、アカウント名に vagrant 、パスワードに vagrant を指定します。
  9. WindowsUpdate は無効化しておきます。
  10. メニューから [デバイス] > [Guest Additions のCDイメージを挿入...] を選択します。
  11. ゲストOSの D ドライブを開いて VBoxWindowsAdditions を実行します。
  12. メニューから [デバイス] > [CD/DVD デバイス] > [仮想ドライブからディスクを除去] を選択します。

仮想イメージの調整

ここからはゲストOS側で作業します。まずは UAC を無効化します。

  1. Win+R で msconfig と入力します。
  2. [ツール] > [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 をポートフォワーディングしておきましょう。

Vagrantfile.txt
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 では下記のようにしましょう。

Vagrantfile.txt
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.

参考URLの通りに構成を変更して VirtualBox を再起動しましょう。

  1. Win+R > DCOMCNFG > [コンピューター] > [マイ コンピューター] > [DCOM の構成] > [VirtualBox Application]右クリック > [プロパティ]
  2. [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 環境ができるようになります。