はじめに
「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も試してみたいところ。