ceforeとdevopsicn/wp-content/uploads/2019/12/...$ docker-compose build $ docker-compose up -d •...
TRANSCRIPT
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
CeforeとDevOpsツール連携
大岡 睦 (NICT)
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
目次
◼Cefore の概要と運用課題
◼DevOps ツールの活用
◼GitLab の紹介・活用方法
◼運用方法の議論
2019/12/19
2
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
Cefore の概要
https://cefore.net/
PC センサー
Ubuntu/Mac/Raspbian/ …OS
cefnetd/csmgrd/ …Cefore
ICN ルータ
cefnetd.conf/plugin/…Config
キャッシュルータ
機能拡張ルータ
Hardware
インストール
軽量かつ汎用的な CCN ソフトウェア実装
多様な Hardware・OS で CCN 通信を実現
コンフィグ・プラグインで多様な機能を容易に設定可能
2019/12/19
3
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
Cefore の運用課題
https://cefore.net/
PC センサー
Ubuntu/Mac/Raspbian/ …OS
cefnetd/csmgrd/ …Cefore
ICN ルータ
cefnetd.conf/plugin/…Config
キャッシュルータ
機能拡張ルータ
Hardware
インストール
実験までのハードルが高い
環境ごとにセットアップ方法が
一部異なる
設定ミスや未確認の不具合に対応できない
本体更新が頻繁なためマニュアルが追い付かない
「記事が全くなくて非常につらい」[1]ハンズオン等でセットアップに
時間がかかる
メールやハンズオン等での個別対応になってしまう・ノウハウを共有できない
本体の更新を通知する仕組みが無い
仕様変更や不具合修正状況が分からない
[1] Qiita “NICT開発のCeforeの話,” https://qiita.com/shimejifarm/items/3da2e6040a5fc047cf5e
2019/12/19
4
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
DevOps ツールの活用
◼DevOps とは?
⚫開発(Developer)と運用(Operator)が高度に
連携することで迅速な開発・展開を可能にする手法
Dev Ops
②コードを書く
③ビルドする
⑤リリースする(web に公開する)
⑥展開する(実験環境を作る)
⑦監視する(評価する)
⑧フィードバックする(バグや機能要望を報告する)
①計画を立てる
2019/12/19
5
④テストする
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
現在の Cefore の状況
◼開発側(NICT)も運用側(ユーザ)も手作業が多く、
労力が多い・ミスが頻発する
◼お互いの知見が共有しづらい→反映・通知が遅れる
Dev
(NICT)
Ops
(User)
ほぼNICT
だけで開発
手作業でビルド
手作業でテスト 共有しづらい
手作業で評価
手作業で展開
最新版のみ公開共有されない
2019/12/19
6
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
◼大半の工程をツールで自動化するため労力が少ない・
ミスが起きにくい
◼問題や対応状況を共有→素早く対応できる
Gitで共同開発
自動化
自動化 ツールで共有
自動化
自動化
ツールで管理ツールで共有
DevOps ツールを活用した場合
Dev
(NICT)
Ops
(User)
2019/12/19
7
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
DevOps ツール活用の利点
◼開発への活用
⚫ Cefore や関連機能・アプリケーションの開発を促進
⚫不具合やよくあるミス、対応状況等を共有
◼研究への活用
⚫学生を始めとするユーザの負担を軽減して CCN の研
究・実験活動を促進
⚫ IoT やクラウドのサービス・アプリケーションの
DevOps 化を考慮したネットワーク実験への応用
2019/12/19
8
cefore.net に GitLab を導入
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
GitLab とは?
https://gitlab.cefore.net/
DevOps ツールと連携可能な Git 管理サービス
2019/12/19
9
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
GitLab の基本的な用途
(1)Cefore のソースコード提供
⚫ Git を用いたソースコード提供・バージョン管理
(2)質問や不具合報告の共有
⚫ GitLab の Issue や Merge Request の利用
(3)DevOps ツールとの連携
⚫ Docker を用いたビルド・テスト・実験の自動化
(4)提案方式実装や実験環境の共有
⚫プロジェクトとして提案方式・実験環境を共有
2019/12/19
10
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
(1)Cefore のソースコードの共有
Git を用いてダウンロード可能
2019/12/19
11
cefore:~ $ git clone https://gitlab.cefore.net/root/cefore.gitCloning into ‘cefore’...⋮cefore:~ $ lscefore
① https://git lab.cefore.net/root/cefore にアクセス
② クローン用のアドレスをコピー
③ git clone を実行(更新時でも同じアドレスで最新版を取得可能)
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
リリース機能
◼過去のバージョンや機能更新履歴を閲覧可能
⚫ Project overview > Releases
⚫バージョンごとのソースコード差分も diff で閲覧可能
2019/12/19
12
タグ名(git clone –b v0.8.1
でクローン可能)
zip や tar.gz 等でダウンロード可能
更新履歴(作成中)
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
(2)質問や不具合報告の共有
◼ Issues 機能を用いて質問や不具合報告を共有
⚫問題報告とバージョン管理を対応付けて管理できる
⚫後で同じ現象に遭った人が参照できる
2019/12/19
13
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
Issues 機能利用のための登録
◼ Issues 機能を利用するには2つの登録が必須
1. GitLab のアカウント登録
※gitlab.cefore.net は gitlab.com とは独立しているので
gitlab.com のアカウントは使い回せない
2. プロジェクトへのメンバー登録
2019/12/19
14
①アカウント登録(自分で登録)
②プロジェクトメンバー登録(プロジェクト管理者が登録)
登録フォーム
https://gitlab.cefore.netOwner/Maintainer
(プロジェクト管理者 )
プロジェクト
メンバー招待
Developer/Repor terアカウント
Cefore メーリングリストに登録済みの人は
Cefore のプロジェクトにDeveloper として登録予定
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
補足:GitLab のメンバー権限◼ Owner/Maintainer
⚫ メンバー追加
⚫ master ブランチへの push
⚫ DevOps (CI/CD) ツールの設定
◼ Developer⚫ 新しくブランチを作成・push (master は編集不可)
⚫ wiki を編集
◼ Reporter⚫ Issue 作成
⚫ 過去のリリースを含むダウンロード(clone)
⚫ Merge request 発行
◼ Guest⚫ 最新版のダウンロード(clone)
⚫ wiki の閲覧
◼ GitLab 登録済・非プロジェクトメンバー⚫ Public・Internal Project なら Guest と同様
⚫ Private Project は閲覧不可
◼ GitLab 未登録⚫ Public Project なら Guest と同様
⚫ Private・Internal Project は閲覧不可
2019/12/19
15
権限
強
弱
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
(3)DevOps ツールとの連携
◼ビルド・テスト・デプロイを自動化
⚫ git push を検知して自動的にスクリプトを実行
⚫プロジェクトの CI/CD から実行結果を確認可能
2019/12/19
16
CI: Continuous Integration (継続的インテグレーション), CD: Continuous Delivery (継続的デリバリー)
ユーザ
プロジェクト
bui ld test deploy
実験環境
CI/CD ツール(GitRunner, Kubernetes, etc.)
新機能開発 git push
更新
更新
repor t
パイプラインを自動的に実行
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology 2019/12/19
CI/CD パイプラインの自動実行履歴の一覧
成功・失敗状況が一目で分かる
17
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology 2019/12/19
パイプライン中の各ジョブの
成功/失敗を確認
成功 失敗前のステージが
失敗したのでスキップ
18
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology 2019/12/19
ジョブごとにログを確認可能
19
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
(4)提案方式や実験環境の共有
◼提案方式の実装をプロジェクト化して共有
◼Cefore 等の修正・拡張を Merge request で提出
2019/12/19
20
提案方式A
プロジェクト研究者A
他の Cefore ユーザと共有・I ssue 等で Feedback
Ceforeプロジェクト
(master)
研究者B
$ git clone $ git branch bugfix
修正版のブランチ
(bugf ix)
プロジェクト管理者
+ Merge request
$ git pushmaster にマージ
別々に開発したコードをmaster に統合するように要求
CI/CD ツールを活用して自動テスト・実験・評価
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
Docker を用いた実験環境の共有
◼Docker:イメージ共有が容易なコンテナ型VM
◼例:3ノード間でのコンテンツ要求の実装
2019/12/19
21
Consumer
(cefnetd)
Router
(cefnetd)
Producer
(cefnetd+csmgrd)
従来方式
Download
Build
Config
実験
評価
準備
• 工程が多い・ミスが多発• 他の環境には使い回せない
GitLab + Docker Project
$ git clone <project>
$ docker-compose build
$ docker-compose up -d
• PC一台・少ない工程で実験可能• 他の環境でも利用可能
ダウンロード
自動ビルド・設定
自動実験・評価
試験的利用やハンズオンのセットアップ時間短縮
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
Docker を用いた実験環境例の紹介
◼https://gitlab.cefore.net/a-ooka/demo_topo_3_nodes
⚫ Docker による 3 ノード間通信の実装例
⚫ build.bash: 3種類の Docker Image を作成
• cefore/min: cefnetd のみ
• cefore/cache: cefnetd のみ(ローカルキャッシュ使用)
• cefore/csmgr: cefnetd + csmgrd (memory)
⚫ test.bash: 3ノード間でのコンテンツ要求を実行
2019/12/19
22
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology 2019/12/19
23
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
まとめ
◼Ceforeを利用した研究・実験の円滑化のために
DevOps ツールである GitLab を cefore.net に導入
◼GitLab の基本的な利用方法・方針を紹介
2019/12/19
24
Dev Ops
Git やリリースを使ったソースコードの開発・共有
DevOps ツールと連携してビルド・テスト・実験
を自動化可能
提案方式や実験環境のプロジェクト化・共有
Issue 等による質問や不具合報告状況の共有
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
今後の運用方針・拡張等の議論
◼ チュートリアル・ハンズオン等での活用
◼ 関連機能の GitLab へのアップロード⚫ cefpyco、Cefore-Emu、CeforeSim、Other plugins、etc.
◼ wiki の活用⚫ インストール・チュートリアルマニュアル
⚫ FAQ・トラブルシューティング集
◼ GitLab の運用方針⚫ GitLab アカウント登録は自由
• 主要プロジェクトは public にするので、最新版のダウンロード(clone)や wiki 閲覧だけならアカウント登録不要
⚫ プロジェクトの作成も自由• 容量の制約のため GB 単位を消費するプロジェクトは要相談
⚫ Cefore 等の主要プロジェクトの Developer 権限は当面はメーリングリストのメンバーに付与する予定• それ以外のメンバーは要相談
◼その他「〇〇に使えるか?」「〇〇の機能が欲しい」等あればご意見ください
2019/12/19
25
第17回 ICN 研究会
Atsushi Ooka [email protected]© 2019 National Institute of Information and Communications Technology
Thank you
GitLabhttps://gitlab.cefore.net
Ceforehttps://cefore.net
謝辞:本研究はJSPS科研費 JP19K20265 の助成を受けたものである。