2013年12月18日

Re: エンジニアじゃないけど仮想ネットワークOSSのOpenVNetをサクっとインストールしとく。

このエントリーをはてなブックマークに追加

Wakame Users Group Advent Calendar 2013 12/18担当 (4回目の登場)

Wakame2-logo-mini

今回に限り「使ってみました/インストールしてみました」をしてみます。

Dockerと連携させる

Wakame Users Group Advent Calendar 2013 12/02担当がOpenVNetインストールネタ。

手順が正しいのかどうかをDockerで確認してみた。(あれ?Wakame-vdcじゃないの?)

検証環境
  • CentOS 6.5 (OpenVNet推奨はCentOS 6.4らしいけども気にしない)
  • kernel-2.6.32-431.el6.x86_64
  • docker-io-0.7.0-14.el6.x86_64
  • lxc-0.9.0-2.el6.x86_64
  • wakame-vnet.noarch 20131108190022git48a1361.fpm0-1
何度も再現させるのはDockerの得意とする所

手戻りと作業切りわけを兼ねて、3つのイメージを作成する戦略にした。

  1. repoファイルセットアップまで実施
  2. RPMインストールまで実施
  3. DB初期化まで実施
1: openvnet.repo
openvnet.repo/Dockerfileを配置
FROM hansode/centos-6-x86_64

RUN curl -fsSkL -o /etc/yum.repos.d/openvnet.repo             https://raw.github.com/axsh/openvnet/master/openvnet.repo
RUN curl -fsSkL -o /etc/yum.repos.d/openvnet-third-party.repo https://raw.github.com/axsh/openvnet/master/openvnet-third-party.repo
RUN rpm -Uvh http://dlc.wakame.axsh.jp.s3-website-us-east-1.amazonaws.com/epel-release
イメージをビルド
$ sudo docker build -t openvnet.repo .
Uploading context 10240 bytes
Step 1 : FROM hansode/centos-6-x86_64
 ---> cff199166afa
Step 2 : RUN curl -fsSkL -o /etc/yum.repos.d/openvnet.repo             https://raw.github.com/axsh/openvnet/master/openvnet.repo
 ---> Running in 5907fffae0ed
 ---> 79cea9051987
Step 3 : RUN curl -fsSkL -o /etc/yum.repos.d/openvnet-third-party.repo https://raw.github.com/axsh/openvnet/master/openvnet-third-party.repo
 ---> Running in 0ec98e92ddac
 ---> 103fb501492e
Step 4 : RUN rpm -Uvh http://dlc.wakame.axsh.jp.s3-website-us-east-1.amazonaws.com/epel-release
 ---> Running in 57110506cb9b
warning: /var/tmp/rpm-tmp.epxeye: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving http://dlc.wakame.axsh.jp.s3-website-us-east-1.amazonaws.com/epel-release
Preparing...                ##################################################
epel-release                ##################################################
 ---> ceb9cf50ef7e
Successfully built ceb9cf50ef7e
ビルドされたイメージの内容を確認
$ sudo docker images openvnet.repo
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
openvnet.repo       latest              ceb9cf50ef7e        25 seconds ago      14.42 MB (virtual 586.8 MB)

ここまでに586.8 MB使用。

2: openvnet.common
openvnet.common/Dockerfileを配置
FROM openvnet.repo

RUN yum install --disablerepo=updates -y wakame-vnet
イメージをビルド
$ sudo docker build -t openvnet.common .
Uploading context 10240 bytes
Step 1 : FROM openvnet.repo
 ---> ceb9cf50ef7e
Step 2 : RUN yum install --disablerepo=updates -y wakame-vnet
 ---> Running in 8ab3ffbfd54f
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
...
Installed:
  wakame-vnet.noarch 0:20131108190022git48a1361.fpm0-1

Dependency Installed:
  dash.x86_64 0:0.5.5.1-4.el6
  dracut.noarch 0:004-335.el6
  dracut-kernel.noarch 0:004-335.el6
  file.x86_64 0:5.04-15.el6
  grubby.x86_64 0:7.0.15-5.el6
  kernel.x86_64 0:2.6.32-431.el6
  kmod-openvswitch.x86_64 0:1.10.0-1.el6
  libdrm.x86_64 0:2.4.45-2.el6
  libpcap.x86_64 14:1.4.0-1.20130826git2dbcaa1.el6
  libpcap-devel.x86_64 14:1.4.0-1.20130826git2dbcaa1.el6
  libpciaccess.x86_64 0:0.13.1-2.el6
  libxslt.x86_64 0:1.1.26-2.el6_3.1
  libyaml.x86_64 0:0.1.3-1.el6
  mysql.x86_64 0:5.1.71-1.el6
  mysql-server.x86_64 0:5.1.71-1.el6
  openpgm.x86_64 0:5.1.118-3.el6
  openvswitch.x86_64 0:1.10.0-1
  perl.x86_64 4:5.10.1-136.el6
  perl-DBD-MySQL.x86_64 0:4.013-3.el6
  perl-DBI.x86_64 0:1.609-4.el6
  perl-Module-Pluggable.x86_64 1:3.90-136.el6
  perl-Pod-Escapes.x86_64 1:1.04-136.el6
  perl-Pod-Simple.x86_64 1:3.13-136.el6
  perl-libs.x86_64 4:5.10.1-136.el6
  perl-version.x86_64 3:0.77-136.el6
  plymouth.x86_64 0:0.8.3-27.el6.centos
  plymouth-core-libs.x86_64 0:0.8.3-27.el6.centos
  plymouth-scripts.x86_64 0:0.8.3-27.el6.centos
  redis.x86_64 0:2.4.10-1.el6
  tar.x86_64 2:1.23-11.el6
  wakame-vnet-common.noarch 0:20131108190022git48a1361.fpm0-1
  wakame-vnet-ruby.x86_64 0:2.0.0.247.axsh0-1
  wakame-vnet-vna.noarch 0:20131108190022git48a1361.fpm0-1
  wakame-vnet-vnmgr.noarch 0:20131108190022git48a1361.fpm0-1
  wakame-vnet-webapi.noarch 0:20131108190022git48a1361.fpm0-1
  which.x86_64 0:2.19-6.el6
  zeromq.x86_64 0:2.2.0-4.el6
  zeromq-devel.x86_64 0:2.2.0-4.el6

Complete!
 ---> f4585f3b20de
Successfully built f4585f3b20de
ビルドされたイメージの内容を確認
$ sudo docker images openvnet.common
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
openvnet.common     latest              f4585f3b20de        About a minute ago   632.1 MB (virtual 1.219 GB)

ここまでに1.219 GB使用。

3: openvnet.smallci
openvnet.smallci/Dockerfileを配置
FROM openvnet.common

ADD ./initdb.sh /initdb.sh
CMD /initdb.sh
openvnet.smallci/init.shを配置
#!/bin/bash
#
# requires:
#  bash
#
set -e
set -x

[ -f /etc/sysconfig/network ] || : > /etc/sysconfig/network
/etc/init.d/mysqld start

until mysqladmin -uroot ping; do
  sleep 1
done
mysqladmin -uroot create vnet

cd /opt/axsh/wakame-vnet/vnet
PATH=/opt/axsh/wakame-vnet/ruby/bin:$PATH /opt/axsh/wakame-vnet/ruby/bin/bundle exec rake db:init

実行権限を付与。

$ chmod +x init.sh
イメージをビルド
$ sudo docker build -t openvnet.smallci .
Uploading context 10240 bytes
Step 1 : FROM openvnet.common
 ---> f4585f3b20de
Step 2 : CMD : > /etc/sysconfig/network
 ---> Running in 885a743efd17
 ---> ce5389ddeb69
Step 3 : CMD /etc/init.d/mysqld start
 ---> Running in e6049c2aeaeb
 ---> 6957beeae0cd
Step 4 : CMD export PATH=/opt/axsh/wakame-vnet/ruby/bin:$PATH
 ---> Running in 7743b6dd88f1
 ---> c78f8c15a74d
Step 5 : CMD printenv PATH
 ---> Running in e76ba9bc75bb
 ---> f412fdc6fa00
Step 6 : CMD mysqladmin -uroot create vnet
 ---> Running in 6a5fea2907ca
 ---> eeb6f5b51fac
Step 7 : CMD cd /opt/axsh/wakame-vnet/vnet && /opt/axsh/wakame-vnet/ruby/bin/bundle exec rake db:init
 ---> Running in c7415047c846
 ---> 7a7db5249aa5
Successfully built 7a7db5249aa5
ビルドされたイメージの内容を確認
$ sudo docker images openvnet.smallci
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
openvnet.smallci    latest              6f6e46b2dbb9        25 minutes ago      1.192 GB (virtual 2.411 GB)

ここまでに2.411 GB使用。パッケージインストールするだけで、ディスクサイズが2.5GB弱必要である事が分かった。インストールしましたエントリでは触れられてない事の1つ。

コンテナを起動
$ sudo docker run -t openvnet.smallci
+ '[' -f /etc/sysconfig/network ']'
+ :
+ /etc/init.d/mysqld start
Initializing MySQL database:  Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h 02b537893292 password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

[  OK  ]
Starting mysqld:  [  OK  ]
+ mysqladmin -uroot ping
mysqld is alive
+ mysqladmin -uroot create vnet
+ cd /opt/axsh/wakame-vnet/vnet
+ PATH=/opt/axsh/wakame-vnet/ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ /opt/axsh/wakame-vnet/ruby/bin/bundle exec rake db:init

$ echo $?
0

DB初期化する所までは動作を確認できた。しかも、CentOS-6.5で!

まとめ
  • パッケージインストール程度ならばDockerで検証可能
  • OpenVNetはCentOS 6.5で動作しそう
  • DB初期化するまでとは言え、ディスクサイズは2.5GB弱使用する
あとがき

その先のOpen vSwitchやOpenFlowを使う構成になると、Dockerで検証できるかどうかは未知の世界。検証した結果、Dockerでは検証出来なかった。そんな結果になるかも知れない。そう言う時こそ、Wakame-vdcの出番。見事に繋がった?

参考文献



編集
@hansode at 10:00│Comments(0)TrackBack(0)Wakame 

トラックバックURL

コメントする

このブログにコメントするにはログインが必要です。