OpenContrail
MeetUp 2016
OpenContrailのDeb package
Daisuke Nakajima
いきなりですが
DEMO
Demo
Internet
MX
203.0.113.2
顧客サイト(cpe)
203.0.113.0/24 Inet.0
vnf2
Vrf internet-vn
172.16.0.0/24
Vrf cpe-vn
10.0.0.0/24
vnf1
Contrail
前提:
以下のVRFを作成済み
• ユーザー用VRF
• Service chaining用VRF * 2
デモシナリオ
1. CPE - > Internet通信の確認
VNF1(vSRX)経由
2. VNF1にVNF2を追加
3. vSRXをVNF1に追加
スケールアウト/冗長化確認
4. ヘルスチェック設定
5. VNF1障害時通信確認
本日のお題
Juniperのサイトからパッケージが
権限ないと落とせなくなったので・・・
本日のお題
OpenContrailをGitからダウンロー
ドしてDebパッケージを作る!
オフィシャルドキュメントはあるけども・・・
• ドキュメントが古い
• 足りないライブラリが・・・
• Manifestも足りないものが・・・
• stableだと思われるBranchを使いたい!
ざざっと手順をまとめます!
手順
1. BuildサーバのKernelをオフィシャルにそろえる(オプション)
2. GitにIDを作ってssh用のカギを登録
3. Repoのインストール(オプション)
4. OpenContrailパッケージのダウンロード
5. OpenContrailのppaをリポジトリに追加
6. Buildに必要なパッケージをインストール
7. 作成されるパッケージのバージョンを設定(オプション)
8. パッケージの作成
1. BuildサーバのKernelをオフィシャルにそろえる
(オプション)
apt-get install linux-image-3.13.0-85-generic linux-headers-3.13.0-85-generic
sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT=¥"Advanced options for Ubuntu>Ubuntu,¥ with Linux
3.13.0-85-generic¥"/g' /etc/default/grub
update-grub
reboot
2. GitにIDを作ってssh用のカギを登録
ssh-keygen
git にid_rsa.pubを登録
apt-get install git
git config --global user.email “hogehoge@example.com"
git config --global user.name “hogehoge"
3. Repoのインストール(オプション)
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
4. OpenContrailパッケージのダウンロード
mkdir <dirname>; cd <dirname>
repo init -u git@github.com:Juniper/contrail-vnc -b R3.1
.repo/manifest.xml
<project name="contrail-dpdk" remote="github" path="third_party/dpdk"/>
<project name="contrail-ceilometer-plugin" revision="master" remote="github"
path="openstack/ceilometer_plugin"/>
repo sync
Repo使った場合
注意:
R3.1ブランチの場合、third_party/dpdkと/openstack/ceilometer_pluginがmanifest.xmlから抜けています。
このままパッケージ化するとコンパイルエラーになるので、manifestに追加してください。
5. OpenContrailのppaをリポジトリに追加
apt-add-repository ppa:opencontrail/ppa
apt-get update
6. Buildに必要なパッケージをインストール
## builddep
PACKAGES=`cat tools/packages/debian/contrail/debian/builddep.trusty|sed s,[¥ ¥¥¥t],,g|tr -d ','|tr`
apt-get install -y $PACKAGES
## http://juniper.github.io/contrail-vnc/README.html
apt-get install -y autoconf automake bison debhelper flex libcurl4-openssl-dev libexpat-dev libgettextpo0
libprotobuf-dev libtool libxml2-utils make protobuf-compiler python-all python-dev python-lxml python-
setuptools python-sphinx ruby-ronn scons unzip vim-common libsnmp-python libipfix-dev librdkafka-dev
librdkafka1 libboost-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-
program-options-dev libboost-python-dev libboost-regex-dev libboost-system-dev libcurl4-openssl-dev
google-mock libgoogle-perftools-dev liblog4cplus-dev libtbb-dev libhttp-parser-dev libxml2-dev libicu-
dev
python third_party/fetch_packages.py
ここまではオフィシャルドキュメント
6. Buildに必要なパッケージをインストール
## other Dependencies
apt-get install -y python-geventhttpclient python-certifi python-backports.ssl-match-hostname python-
ncclient python-pycassa python-xmltodict python-docker-py python-redis default-jdk libcommons-codec-
java libhttpcore-java liblog4j1.2-java nodejs debhelper libxml2-utils python-all python-sphinx ruby-ronn
module-assistant ant default-jdk javahelper libcommons-codec-java libhttpcore-java liblog4j1.2-java
libipfix libipfix-dev librdkafka-dev libnlopt-dev liburcu-dev libcap-dev libnl-3-dev libnl-genl-3-dev
libzookeeper-mt-dev libpcap0.8-dev
wget http://ubuntu-cloud.archive.canonical.com/ubuntu/pool/main/libu/liburcu/liburcu-dev_0.8.5-
1ubuntu1~cloud0_amd64.deb
wget http://ubuntu-cloud.archive.canonical.com/ubuntu/pool/main/libu/liburcu/liburcu2_0.8.5-
1ubuntu1~cloud0_amd64.deb
dpkg -i liburcu2_0.8.5-1ubuntu1~cloud0_amd64.deb liburcu-dev_0.8.5-1ubuntu1~cloud0_amd64.deb
ここからは追加で必要なパッケージ
6. Buildに必要なパッケージをインストール
## cassandra module
wget http://downloads.datastax.com/cpp-driver/ubuntu/14.04/dependencies/libuv/v1.7.5/libuv_1.7.5-
1_amd64.deb
wget http://downloads.datastax.com/cpp-driver/ubuntu/14.04/cassandra/v2.2.0/cassandra-cpp-
driver_2.2.0-1_amd64.deb
wget http://downloads.datastax.com/cpp-driver/ubuntu/14.04/cassandra/v2.2.0/cassandra-cpp-driver-
dev_2.2.0-1_amd64.deb
dpkg -i libuv_1.7.5-1_amd64.deb cassandra-cpp-driver_2.2.0-1_amd64.deb cassandra-cpp-driver-
dev_2.2.0-1_amd64.deb
7.作成されるパッケージのバージョンを設定
(オプション)
CONTRAIL_VERSION = 1.1master~$(CONTROLLER_REF)
WEBUI_CORE_VERSION = 1.1master~$(CONTROLLER_REF)
WEBUI_CONTROLLER_VERSION = 1.1master~$(CONTROLLER_REF)
NEUTRON_VERSION = 1.1master~$(NEUTRON_REF)
CEILOMETER_VERSION = 1.1master~$(CEILOMETER_REF)
CONTRAIL_HEAT_VERSION = 1.1master~$(CONTRAIL_HEAT_REF)
tools/packages/versions.mk の修正
この部分 = 以下を任意に変更することでパッケージにバージョンがつけられる。
例) 3.1~$(CONTROLLER_REF) とすると、contrail-config_3.1~563f5d4_amd64.deb というパッケージが
出来上がります
7.作成されるパッケージのバージョンを設定
(オプション)
CONTRAIL_VERSION = 1.1master~$(CONTROLLER_REF)
WEBUI_CORE_VERSION = 1.1master~$(CONTROLLER_REF)
WEBUI_CONTROLLER_VERSION = 1.1master~$(CONTROLLER_REF)
NEUTRON_VERSION = 1.1master~$(NEUTRON_REF)
CEILOMETER_VERSION = 1.1master~$(CEILOMETER_REF)
CONTRAIL_HEAT_VERSION = 1.1master~$(CONTRAIL_HEAT_REF)
tools/packages/versions.mk の修正
この部分 = 以下を任意に変更することでパッケージにバージョンがつけられる。
例) 3.1~$(CONTROLLER_REF) とすると、contrail-config_3.1~563f5d4_amd64.deb というパッケージが
出来上がります
8.パッケージの作成
make -f packages.make all
エラーがなければ・・・
作成完了!!!
エラーになったら・・・
ライブラリやパッケージのエラーの場合
ライブラリ名でGoogleに聞いてみる。解決しなければ
dev@opencontrail.orgにエラーログを張ってメールしてください
リポジトリでエラーが出たら
manifest.xmlにgithubのリポジトリを追加してrepo snyc!
repoを使っていない場合はgit clone!
makeは結構大変・・・・
Contrail-installerを使いましょう!
Dev-stackでOpenstackも一緒に入れられます。
けど、、、やっぱりJuniperと同じようなパッケージがほしい!
Package頑張ります
Contrail-packagingのリポジトリでパッケージができます。
でも・・・
依存や必要なパッケージを集めるのが大変。
trustyのパッケージを全部ダウンロードしちゃうと60GB
Package頑張ります
なので、必要ファイルだけFetchするプログラムを作成中です!
冬休みの宿題にします!
参考文献
http://juniper.github.io/contrail-vnc/README.html
http://blog.inetsix.net/2015/08/deploy-contrail-with-devstack/
Thank youThank you

Open contrailmeetup 20161207