0%

Packerを使いWindows上でOVAを作成する - Part4: Nested ESXi5 on VirtualBox ESXi5 Vagrant

PackerでOVA作成シリーズです。
Part3でESXi4用のOVAがきれいに作成できなかったので、VirualBox 4.3.12にESXi5の
Nested Virtualization環境を構築して、PackerのESXi5ドライバーを使ってみます。

Vagrant and Chef on Windowsを参考にWindows上でVagrantを動かすところまで構築します。また、Minttyを使いやすくしてWindows7からLinuxを操作を便利にします。

VirtualBoxのインストール

VirtualBoxはダウンロードページから、最新バージョンの4.3.12をダウンロードしてインストーラーを実行します。

以下の場所にインストールされます。

C:\Program Files\Oracle\VirtualBox

Vagrantのインストール

Vagrantはダウンロードページから、最新バージョンの1.6.3をダウンロードしてインストーラーを実行します。

インストールディレクトリは、以下の場所に指定します。

C:\opt\HashiCorp\Vagrant

Windows版のVagrantには、MinGW,Mintty,RubyInstallerが同梱されています。

C:\opt\HashiCorp\Vagrant\embedded

Windowsなので仕方なく再起動すると、PATHが通って使えるようになります。

$ vagrant -v
Vagrant 1.6.3
$ ruby -v
ruby 2.0.0p353 (2013-11-22) [i386-mingw32]

Mintty

Vagrantに同梱されているMinttyを起動してvagrant upしたあと、SSHコマンドを使うので使いやすい設定をします。

Minttyは以下の場所にインストールされます。

C:\opt\HashiCorp\Vagrant\embedded\bin\mintty.exe

起動後ホームディレクトリに移動できるように、ショートカット作成を作成して、プロパティのリンク先にloginを追加します。

C:\opt\HashiCorp\Vagrant\embedded\bin\mintty.exe /bin/bash --login

Windows8 Proにvargrantを入れてみる(その1)を参考に、
作成したショートカットからMinttyを起動して、.minttyrcの設定をします。

$ cat << __EOF__ > ~/.minttyrc
BoldAsFont=no
Locale=ja_JP
Charset=UTF-8
FontHeight=12
Columns=100
Rows=34
Transparency=medium
Term=xterm-256color
RightClickAction=paste
OpaqueWhenFocused=no
PgUpDnScroll=yes
__EOF__

プロジェクトの作成

Vagrantfileを配置する作業ディレクトリを作成します。

$ mkdir -p ~/vagrant_apps/ubuntu-14.04
$ cd !$

boxのダウンロード

Vagrantのboxは、Dockerでお世話になっている、phusionのopen-vagrant-boxesを使用します。

$ vagrant init phusion/ubuntu-14.04-amd64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

リソースが少ないので、CPUコアを1に指定します。

~/vagrant_apps/ubuntu14.04/Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--cpus", "1"]
end
end

vagrant upしまず。

$ vagran up

MinGWのパッケージを追加

VagrantでインストールされるMinGWには、viやsshが含まれていないため、MinGWをインストールした後コピーして使います。

MinGWから、mingw-get-setup.exeをダウンロードして実行します。以下の場所にインストールします。

C://opt/MinGW

Minttyを起動してMinGWの中身を、Vagrant/embeddedにコピーして不足しているパッケージを追加します。

$ cp -r /c/opt/MinGW/. /c/opt/HashiCorp/Vagrant/embedded/

mingw-getは以下のディレクトリに配置されます。

$ which mingw-get
C:\opt\HashiCorp\Vagrant\embedded\bin\mingw-get.EXE

mingw-getの設定ファイルを編集し、MSYSのPATHをVagrantにコピーした場所に指定します。

defaults.xml

C:\opt\HashiCorp\Vagrant\embedded\var\lib\mingw-get\data\defaults.xml
<!--
<sysroot subsystem="MSYS" path="%R/msys/1.0" />
-->
<sysroot subsystem="MSYS" path="/opt/HashiCorp/Vagrant/embedded" />

profile.xml

C:\opt\HashiCorp\Vagrant\embedded\var\lib\mingw-get\data\profile.xml
<!--
<sysroot subsystem="MSYS" path="%R/msys/1.0" />
-->
<sysroot subsystem="MSYS" path="/opt/HashiCorp/Vagrant/embedded" />

min-getの更新をします。

$ cd /c/opt/HashiCorp/Vagrant/embedded/var/lib/mingw-get/data/
$ mingw-get update
$ mingw-get upgrade

sshやvimのパッケージをmingw-get installします。

$ mingw-get install msys-openssl msys-openssh
$ mingw-get install msys-rsync msys-tar msys-wget
$ mingw-get install msys-vim

.bash_profileと.bashrc

環境設定ファイルを作成します。
~/.bash_profileに、VirtualBoxのコマンドのパスを通します。

~/.bash_profile
export PATH=/c/Program\ Files/Oracle/VirtualBox/:$PATH

vimのエイリアスを設定します。

~/.bashrc
alias vi='vim'

環境設定ファイルを再読込します。

$ source ~/.bash_profile
$ source ~/.bashrc

SSHの設定

vagrant sshでなく、MinGWのsshを使うため、.ssh/configに設定情報を追加します。

$  mkdir -p ~/.ssh
$ vagrant ssh-config --host trusty >> ~/.ssh/config

SSHでVagrantのVMにログインします。

$ ssh trusty
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64)

* Documentation: https://help.ubuntu.com/
Last login: Tue Apr 22 19:47:09 2014 from 10.0.2.2
vagrant@ubuntu-14:~$

Git for Windows

Git for Windowsから最新バージョンの1.9.4をダウンロードしてインストールします。

c:\opt\Git

MinGWから、WindowsにインストールしたGitを使えるようにするため、以下の設定をします。

  • Adjusting your PATH environment

  • Use Git from Windows Command Prompt

  • Choosing the SSH executable

  • Use OpenSSH

  • Checieout as-is, commit Unix-style line endings

Minttyを起動して、gitの確認をします。

$ which git
c:\opt\Git\cmd\git.EXE

ディレクトリ構成

状況によってVirtualBox VMsの場所が、Windowsのホームディレクトリだったり、ルートにあったりしますが、
最終的に、ディレクトリ構成は以下のようにしました。

.vagrant.dは、Windowsのホームディレクトリにあります。

C:\Users\masato\.vagrant.d

そのほかのVagrantやVirtualBoxの設定やboxは、MinGWのホームディレクトリにあります。

C:\opt\HashiCorp\Vagrant\embedded\home\masato
$ ls -a
. .. .VirtualBox .bash_history .inputrc .minttyrc .ssh VirtualBox VMs vagrant_apps

まとめ

Linuxを主に使っていると感じませんが、OSXやWindowsで作業しているとVagrantはとても便利です。

次回はVagrantのVirtualBoxへ、NestedのESXiをインストールした後、Packer作業用のUbuntuからOVAを作成してみます。