0%

Packerを使いWindows上でOVAを作成する - Part1: VMware Workstation ビルド環境

PackerでOVA作成シリーズです。
この前OVAを公開してみんなに使ってもらう必要があったのですが、作成に時間がかかり手作業も多く面倒でした。
OVAができたあとプロビジョニングしてみて、作業ミスをみつけると本当に心が折れます。

Packerを使うとイメージ作成が自動化できるのでプロビジョニング前にテストができます。
GCEやDockerのイメージ作成も統一化したいので、これを機会に勉強してみます。

さっそくPackerの使い方ググると、OSXのVagrantとVirtualBoxの使い方やPacker TemplatesはGitHubでもいくつかありました。
ただ、今回はWindows上でVagrantを使わずにVMwareのOVAを作りたいので、なかなか情報がみつからず困ります。

TL;DR

WindowsのPackerでOVAを作る場合VMWare Workstationとovftoolが必要です。
また、ovftoolのpost-processorはGoをインストールしてexeをビルドする必要があります。

VMware Workstationのインストール

VMware Builder from ISOを斜め読みしただけでWindowsでもVMware Playerが使えると思ってしまいpacker buildしました。
するとVMware application not foundとエラーになってしまいます。ソースを読むと、driverのパスがLinuxになっています。

おかしいと思い、VMware Builder from ISOをよく読むと、VMware Player on Linuxと書いてありました。
Windowsでは有償のVMware Workstationの9か10が必要のようです。

Goのコードは読みやすくて助かるのですが、自分で書くとちょっと物足りなく、最近はDartの方がおもしいです。

ここからVMware Workstationをダウンロードしてインストールします。
packer buildの初回起動時にライセンス入力を求められますが、スキップしても30日間は評価版で使えます。

Packerのインストール

ダウンロードページからWindows amd64をダウンロードします。2014-06-08のバージョンは、0.6.0です。

arm版もあります。Goで書いているだけあってクロスコンパイルを簡単にしているようです。
インストールはとても簡単で、zipを解凍してPATHを通すだけです。シングルバイナリなので各exeファイルは10MBと大きめになっています。

今回は、すでにPATHを通してあるC:\usr\local\binに解凍しました。Cygwin64 Terminalを起動してインストールします。

$ wget https://dl.bintray.com/mitchellh/packer/0.6.0_windows_amd64.zip
$ unzip -j 0.6.0_windows_amd64.zip -d /cygdrive/c/usr/local/bin/

バージョンを確認します。

$ packer version
Packer v0.6.0

Go1.2のインストール

Goは最新の1.2をインストールします。go.cryptoが1.1の場合はエラーになります。

undefined: cipher.AEAD
undefined: cipher.NewGCM

ダウンロードページから、Windows amd64のインストーラーをダウンロードして実行します。

Goのバージョンを確認します。

$ go version
go version go1.2.2 windows/amd64

GOPATHは、C:\gocodeにしました。

$ go env GOPATH
C:\gocode
$ go env GOROOT
C:\Go

GOPATHとGOROOTのbinをPATHに通します。

C:\Go\bin;C:\gocode\bin

go install用にGitとMercurialのインストール

go installコマンドを使うために、GitMercurialのインストーラーをダウンロードして実行します。

バージョンを確認します。

$ git version
git version 1.9.2.msysgit.0
$ hg version
Mercurial Distributed SCM (version 3.0.1)

packer-post-processor-ovftoolのインストール

packer-post-processor-ovftoolgo installします。

$ go get github.com/iancmcc/packer-post-processor-ovftool
$ go install github.com/iancmcc/packer-post-processor-ovftool

ovftoolのインストール

VMware OVF Tool 3.5.1 for Windows 64 bitをインストールします。
ダウンロードはMy VMwareから行うため、VMwareにアカウント登録が必要です。

デフォルトの場合以下にインストールされるので、PATHに通します。

C:\Program Files (x86)\VMware\VMware Workstation\OVFTool

まとめ

とりあえず開発環境のセットアップが終わりました。普段はUbuntuやOSX上で開発しているので、Windowsは面倒に感じます。VMware Playerも同じ名前でLinuxとWindowsで機能が違うのも嵌まりました。

次はPacker templateを買いてOVAをビルドしてみます。