PackerでOVA作成シリーズです。
Part5で構築した環境を使って、PackerからリモートのESXi5上でOVAをビルドします。
一度WindowsのPackerからリモートビルドして失敗したので、Ubuntuの仮想マシンを作業環境にして再チャレンジです。
どこかでVT-xを有効にしてくれているVPSがあると便利なのですが。
TL;DR
UbuntuからもリモートのNested ESXi5
にISOのアップロードに失敗してしまい、ビルドができません。なぜだろう。。
Vagrant
Ubuntuの仮想マシンにログインします。Vagrantのphusion/open-vagrant-boxesから、”phusion-open-ubuntu-14.04-amd64を使います。
Minttyから vagrant up
をしたあと、SSHでUbuntuにログインします。
$ vagrant up |
ESXi5
UbuntuからESXi5にログインします。
$ ssh root@192.168.56.101 |
packer buildでメッセージが表示されるので、GuestIPHackをします。
GuestIPHack is required, enable by running this on the ESX machine: |
$ esxcli system settings advanced set -o /Net/GuestIPHack -i 1 |
vim-cmdを使い、ESXi5のデータストアを確認します。 name = "datastore1"
をtemplate.jsonで使います。
$ vim-cmd hostsvc/datastore/listsummary |
UbuntuにPackerのインストール
/etc/apt/sources.listが、us.archiveになっているので、日本のミラーに変更します。
$ sudo sed -i~ -e 's/archive.ubuntu.com/ftp.jaist.ac.jp/' /etc/apt/sources.list |
必要なパッケージをインストールします。
$ sudo apt-get install unzip |
Packerから、Linux amd64のzipファイルをダウンロードします。
$ wget https://dl.bintray.com/mitchellh/packer/0.6.0_linux_amd64.zip |
zipを解凍して、適当な場所に配置してPATHを通します。すごく簡単
$ mkdir ~/bin |
プロジェクトの作成
$ mkdir -p ~/packer_apps/ubuntu1404 |
template.json
template.jsonはPackerが実行する設定ファイルです。
{ |
今回はUbuntuのOVAを作成するため、Preseedの設定ファイルを作成します。
template.jsonで、http_directory
に指定したディレクトリからHTTPで設定ファイルを読み込んでくれます。
choose-mirror-bin mirror/http/proxy string |
provisionersはtemplate.jsonでshellを指定しているので、実行するシェルスクリプトを作成します。
sudo sed -i~ -e 's;http://archive.ubuntu.com/ubuntu;http://ftp.jaist.ac.jp/pub/Linux/ubuntu;' /etc/apt/sources.list |
簡単な終了処理を実装します。
apt-get -y autoremove |
packer buildに失敗
packer validate
でtemplate.jsonの構文チェックをします。
$ packer validate template.json |
packer build
します。初回はUbuntuのインストールISOをダウンロードするため時間がかかります。
ダウンロードしたISOはpacker_cache
ディレクトリにキャッシュされます。
失敗してしまいました。。。
$ packer build template.json |
packer buildのデバッグ
PACKER_LOG=1
をprefixしてビルドを実行します。
ログを見ると、ISOファイルのアップロードに失敗しているようです。
$ PACKER_LOG=1 packer build template.json |
ESXi5にSSHログインしてアップロードしたISOを確認します。
$ ssh root@192.168.56.101 |
Ubuntuのpacker_cache
にダウンロードしたISOと比べると、ファイルサイズが違うので、SCPのアップロードが終了していないようです。
$ ls -al ~/packer_apps/ubuntu1404/packer_cache/ |
まとめ
リモートのESXi5にISOのアップロードに失敗してしまい、ビルドができません。
気長にデバッグしていきます。。。