2017年1月18日水曜日

OSS 版の VMware Integrated Containers をビルドできる環境を構築する

概要

OSS 版として公開されている VIC のソースコードをビルドして自分でバイナリを作成できる環境を構築してみました
バグがあったときに自分で直してプルリクを送れるようにするためです

環境

  • Ubuntu 16.04 64bit
  • docker 1.11.2

事前作業

今回は docker を使ってソースコードをビルドします
なので、事前に docker が使える環境を用意しておいてください
今回は Ubuntu 16.04 上で動作させています
あと git コマンド必要なのでそれもインストールしておいてください

ビルド環境構築

では手順です

  • docker pull golang:1.7
  • mkdir $HOME/go
  • export GOPATH=$HOME/go
  • mkdir -p $GOPATH/src/github.com/vmware
  • cd $GOPATH/src/github.com/vmware
  • git clone https://github.com/vmware/vic.git
  • cd vic
  • docker run -v $(pwd):/go/src/github.com/vmware/vic -w /go/src/github.com/vmware/vic golang:1.7 make all

ビルドはだいたい 10 分くらいで完了します
最後に以下が表示されれば OK です

building vic-machine linux...
building vic-machine windows...
building vic-machine darwin...
building vic-ui linux...
building vic-ui windows...
building vic-ui darwin...

流れとしては go のイメージを取得して、そのイメージからコンテナを作成し、そのコンテナ上にソースコードを上げてそこでビルドする感じです
docker run 時に -v で Ubuntu 上のディスクをコンテナにマウントすることで作成してできたバイナリファイルを Ubuntu 上ですぐに使えるようにしてます

bin ディレクトリ配下に成果物があるので Ubuntu 上で確認してみてください

# ls -ltr bin/
合計 423600
-rwxr-xr-x 1 root root  22134400  113 19:17 port-layer-server
-rwxr-xr-x 1 root root  24797184  113 19:18 docker-engine-server
-rwxr-xr-x 1 root root  18793728  113 19:18 vicadmin
-rwxr-xr-x 1 root root   1398944  113 19:18 rpctool
-rwxr-xr-x 1 root root   7655480  113 19:18 tether-linux
-rwxr-xr-x 1 root root   6000128  113 19:19 tether-windows.exe
-rwxr-xr-x 1 root root   6357024  113 19:19 tether-darwin
-rwxr-xr-x 1 root root  15374056  113 19:19 vic-init
-rw-r--r-- 1 root root 115343360  113 19:22 appliance.iso
-rw-r--r-- 1 root root  63700992  113 19:22 bootstrap.iso
-rwxr-xr-x 1 root root  17874592  113 19:23 vic-machine-linux
-rwxr-xr-x 1 root root  17887232  113 19:23 vic-machine-windows.exe
-rwxr-xr-x 1 root root  21026272  113 19:24 vic-machine-darwin
-rwxr-xr-x 1 root root  31999424  113 19:24 vic-ui-linux
-rwxr-xr-x 1 root root  31701504  113 19:25 vic-ui-windows.exe
-rwxr-xr-x 1 root root  31695824  113 19:25 vic-ui-darwin

こんな感じでバイナリファイルが作成できていると思います

Tips

作成したバイナリを別サーバで使いたい場合に nginx を使ってバイナリを公開する手順です
これもコンテナを使えば簡単にできます

  • cd bin
  • touch index.html
  • docker pull nginx
  • docker run -d -p 8080:80 -v $(pwd):/usr/share/nginx/html/bin nginx

で Ubuntu の IP の 8080 にアクセスすればバイナリファイルをダウンロードすることができるようになります
http://xxx.xxx.xxx.xxx:8080/bin/vic-ui-linux とか

最後に

OSS 版の VIC をビルドできる環境を構築してみました
基本は docker 上でビルドできるようになっているので特に環境を構築する必要はなく一発でビルドできました

これで自分でバイナリを作成することができるので vic-machine とかにバグの挙動があった場合に自分で修正することができそうです
もちろんソースコードを理解し go をコーディングできる力は必要ですが

0 件のコメント:

コメントを投稿