24
OpenContrail MeetUp 2016 OpenContrail Deb package Daisuke Nakajima

Open contrailmeetup 20161207

Embed Size (px)

Citation preview

OpenContrailMeetUp 2016OpenContrailのDeb package

Daisuke Nakajima

いきなりですがDEMO

Demo

Internet

MX

203.0.113.2

顧客サイト(cpe)203.0.113.0/24 Inet.0

vnf2

Vrf internet-vn172.16.0.0/24

Vrf cpe-vn10.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/grubupdate-grub

reboot

2. GitにIDを作ってssh用のカギを登録

ssh-keygengitにid_rsa.pubを登録

apt-get install gitgit config --global user.email “[email protected]"git config --global user.name “hogehoge"

3. Repoのインストール(オプション)

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

4. OpenContrailパッケージのダウンロード

mkdir <dirname>; cd <dirname>repo init -u [email protected]: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/ppaapt-get update

6. Buildに必要なパッケージをインストール

## builddepPACKAGES=`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.htmlapt-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 Dependenciesapt-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-ronnmodule-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.debwget http://ubuntu-cloud.archive.canonical.com/ubuntu/pool/main/libu/liburcu/liburcu2_0.8.5-1ubuntu1~cloud0_amd64.debdpkg -i liburcu2_0.8.5-1ubuntu1~cloud0_amd64.deb liburcu-dev_0.8.5-1ubuntu1~cloud0_amd64.deb

ここからは追加で必要なパッケージ

6. Buildに必要なパッケージをインストール

## cassandra modulewget http://downloads.datastax.com/cpp-driver/ubuntu/14.04/dependencies/libuv/v1.7.5/libuv_1.7.5-1_amd64.debwget http://downloads.datastax.com/cpp-driver/ubuntu/14.04/cassandra/v2.2.0/cassandra-cpp-driver_2.2.0-1_amd64.debwget http://downloads.datastax.com/cpp-driver/ubuntu/14.04/cassandra/v2.2.0/cassandra-cpp-driver-dev_2.2.0-1_amd64.debdpkg -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に聞いてみる。解決しなければ[email protected]にエラーログを張ってメールしてください

リポジトリでエラーが出たら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