前々からVagrantをいじりたくてうずうずしていた私。最近ようやく触る時間ができたので、Windows Server 2012 R2ゲストのBox自作に挑戦した。
最初は[Vagrant] WindowsServer2012R2のBoxを自作する #Vagrant_ja - NAVER まとめを参考にさせてもらっていたが、このまとめの作者であるk-kukitaさんから「今はvagrant-windows使ったほうがよい」とアドバイスを頂いたので、早速vagrant-windowsを試してみた。
必要な手順はvagrant-windows/README.md at master · WinRb/vagrant-windows · GitHubにほとんど書いてある。
なお、VagrantやVirtualBoxのセットアップは、この記事では省略する。
環境
私の環境は下記の通り。ホストOS:Windows7 Ultimate x64
Ruby 1.9.3
Vagrant 1.3.5
Oracle VM VirtualBox 4.3.6
vagrant-pluginをインストールする。
Rubyコマンドプロンプトにて下記コマンドを実行。C:\users\dsp74118>vagrant plugin install vagrant-windows
BaseとなるWindowsゲストを作る。
VirtualBoxに新規仮想マシンを作成し、Windows Server 2012 R2をインストールする。ここでは、仮想マシン名を"Win2012R2-Base"とした。OSインストール後、README.mdに従い下記の設定を行う。
サーバーマネージャがログオン時に表示されないように変更。
Fig.1 サーバーマネージャー自動起動を無効化 |
「コンピュータの構成\Windows の設定\セキュリティの設定\アカウント ポリシー\パスワードのポリシー\複雑さの要件を満たす必要があるパスワード」 を無効に。
Fig.2 パスワードの複雑性を無効化 |
vagrantユーザーをAdministratorsグループに追加。
Fig.3 vagrantユーザーに管理者権限を付与 |
Fig.4 UAC無効化 |
Fig.5 シャットダウンイベントの追跡ツール無効化 |
(PowerShellのプロンプトではダメなので注意。)
C:\users\dsp74118>winrm quickconfig -q C:\users\dsp74118>winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"} C:\users\dsp74118>winrm set winrm/config @{MaxTimeoutms="1800000"} C:\users\dsp74118>winrm set winrm/config/service @{AllowUnencrypted="true"} C:\users\dsp74118>winrm set winrm/config/service/auth @{Basic="true"} C:\users\dsp74118>sc config WinRM start= autoここまでがサイトに書いてある手順だが、他に
- リモートデスクトップの有効化
- VirtualBox Guest Additionのインストール
Fig.6 RDP有効化 |
コマンドプロンプトで下記コマンドを入力すればOK。
C:\users\dsp74118>C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown /mode:vm
Boxファイル作成
Sysprepによって仮想マシンがシャットダウンされるので、引き続きBoxファイルを作成する。(Boxファイルのファイル名は任意。下の例の"20140205"は、この作業をしたのが2014年2月5日だったから。)
S:\>mkdir VM\Vagrant_Boxes S:\>cd VM\Vagrant_Boxes S:\VM\Vagrant_Boxes>vagrant package --base "Win2012R2-Base" --output win2012r2-x86_64-20140205.box S:\VM\Vagrant_Boxes>vagrant box add Win2012R2 S:\VM\Vagrant_boxes\win2012r2-x86_64-20140205.box
vagrantfileを作る。
適当なフォルダを作って、vagrant initコマンドを実行する。S:\VM\Vagrant_Boxes>cd .. S:\VM>mkdir Vagrantfiles\win2012r2 S:\VM>cd Vagrantfiles\win2012r2 S:\VM\Vagrantfiles\win2012r2>vagrant init win2012r2Vagrantfileが作成されるので、エディタで開いて編集する。
※コメント行は省略
(snip) VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| (snip) config.vm.box = "Win2012R2" (snip) config.vm.provider :virtualbox do |vb| # # Don't boot with headless mode vb.gui = true (snip) end (snip) # configs for Vagrant-Windows config.vm.guest = :windows config.vm.network :forwarded_port, guest: 3389, host: 13389 config.vm.network :forwarded_port, guest: 5985, host: 5985, id: "winrm", auto_correct: true end今回は、localhost:13389をゲストOSの3389(RDP)にフォワードするように設定してみた。
あと、vb.gui=true を入れておかないと、ゲストOSがHeadlessモードで立ち上がり、VirtualBoxのGUIでゲストOSを操作することができなくなるので、忘れずに。
いよいよVagrantでゲストOSを作成
Vagrantfileが置いてあるフォルダに移動してvagrant upを実行すればOK。S:\VM\Vagrantfiles\win2012r2>vagrant up
以上。
Chefを使いたいなら、Chef-Clientのインストールを行う。本エントリではChef-Clientの導入手順は省略する。
2013.02.20 続きを書いた。VagrantでWindowsゲストを立ててChef-Soloのrecipeを実行する
0 コメント:
コメントを投稿