SlideShare a Scribd company logo
コンテナ事例
CircleCI, Cucumber-Chef
第3回 コンテナ型仮想化の情報交換会@大阪
@sawanoboly
運営組織
2
• 業務執行社員をつとめる合同会社
• アプリケーションのためのプラットフォーム構築/運
用自動化をテーマにした活動を担当
• http://opsrock.in 共同開発・運営
• Chefをはじめ、Infrastracture as Code
関連を主に取り扱うソリューションを提供
• 導入支援・トレーニングも
以前話したlxcの話
『lxc on cloud』
• 自宅DCライクなクラウド上のインスタンス
3
宣伝:Chefの本を書きました
• 4/28発売 (ISBN:978-4-04-891985-2)
• 「Chef活用ガイド ∼ コードではじめる構成管
理」
• Infrastructure as Codeを実践しよう!
• 公式Docsの流れを踏襲し、

さらに詳しく記述
• 日本公式代理店の

クリエーションラインさんと

共著
4
本日の内容
• コンテナ事例:CircleCI
• CircleCI+ngrok
• ITERATIVE DELIVERY(反復型デリバリ)
• コンテナ事例:Cucumber-Chef
• CircleCI + Cucumber-Chef
5
アンケートのお願い
• http://higanworks.com/ のトップにセッシ
ョンのアンケートを設置していますので、ご
協力お願い致します!!(4/14日まで)
6
コンテナ事例
CircleCI
※中の人とかではありません
コンテナ事例 CircleCI, Cucumber-Chef
CircleCIって?
• CI = 継続的インテグレーションのサービス
• Jenkins / Travis CI / drone.io / etc..
• We use LXC!!
• (herokuやDockerのアレだよ)
9
CircleCIの基本(一応)
• Githubと連携、pushでトリガー
• Ubuntuコンテナが起動して、コード取得
• タスクをこなす、主にテスト
• レポート/カバレッジなどを保存する
• 成果物を保存する
• 有料($19/monthから)
• Private Repo対応
• 複数コンテナの同時多重起動が可能
10
多分こんな構成
11
EC2インスタンス
(LXCホスト)
ビルド用コンテナ
(ubuntu)
S3(ビルドのキャッシュ)
EC2インスタンス
(LXCホスト)
ビルド用コンテナ
(ubuntu)
ビルド用コンテナ
(ubuntu)
ビルド用コンテナ
(ubuntu)
ビルド一覧
12
コンテナだからどうなの?
• ビルド環境の起動・終了が高速
• リスタートは数秒
• 親ホスト(Ubuntu)ベースの環境
• LXC BRIDGE(多分)でコンテナにSSHログ
インを提供
• ビルドのデバッグがしやすい
• ライブラリなどのキャッシュディレクトリ
をいじれる
13
ビルド用コンテナにSSHでログイン
14
CircleCIの制限 1/2
• コンテナは最大1時間で停止
• そのまま運用はさすがにダメ
• SSHつきだと30分
• 親ホスト(Ubuntu)ベースの環境なので、
Ubuntuオンリー
15
CircleCIの制限 2/2
• sudoなし、パッケージ追加とかはNG
• 自前でローカルにビルドor 外部に用意
• ただ、言語やバージョンマネージャは豊富
• rvm, nvm, phpenv, pyenv, jre複数、

golang, scala(play), clojure(lein)等々..
• バックエンドもいろいろ起動済み
• mysql, postgres, memcache, redis,

rabbitmqなど
16
Ubuntu縛りに関して
• 将来的にはDocker!!
17
利点と制限から考える
• とにかく準備が速い
• CPU(ホスト32コア)もあまり無駄なく利用
• 時間のかかるビルドやテストも速い

※ まあまあ制限はかかってる模様

Binutils(SBU)の素ビルド(j8)は1m前後く
らい
• 時間の制限

=> 時間内は何やってもOKなのでは。。?
• むしろ勝手に無くなるコンテナとして利用
18
ITERATIVE DELIVERY
(反復型デリバリ)
IMPACT MAPPINGより
ITERATIVE DELIVERYとは
• デプロイ + ビジネス デリバリ(意訳)
• アジャイルを、企画やらふくめて組織全体に
適用しよう(これも意訳)
• 開発だけアジャイルでも、ゴールは遠いまま
という事態が発生

=> ウォーター・スクラム・フォール
20
インクリメンタルと

イテレーティブ
21
http://www.agileproductdesign.com/blog/dont_know_what_i_want.html
※Jeff Patton氏のブログ記事より
Iterating
incrementing
Deploy feature branch to Heroku
with CircleCI [Rebuild.fm]
• ブランチごとにherokuデプロイしたりしま
すという話
22
コンテナの活用として
(とりあえず小さく)
実践してみよう
そこでngrok
(えぬぐろっく?)
24
ngrokのできること
25
WorkStation
app
localhost:4000
ngrokd server
(hosted or private)
*.sub.example.com (Aレコード)
ngrok(cli)
① local:4000へのProxyを
リクエスト
ex) サブドメイン = hoge
② hoge.sub.example.com
へのリクエストを
フォワードする
Public
Network
③appに対して

hoge.sub.example.com で到達可能に
HTTP/HTTPS

ほか普通のTCPも
CircleCI+ngrockで
• とりあえずGithubのブランチ全部?
• 折角だから1コミット1(and more)デリバリ
にしてしまおう
26
delivery per commit!!
27
コミットごとに一時的にデリバリ
• デプロイ対象サーバが固定だと、順番待ちに
なる
• ブランチだとだいたいHEADになる
• ロールバック(以前のコミットをデプロイし
直し)もまあ可能ですが。。
• ちょっとした デザイン変更をShare
• デザイナさんなどによる『ちょっとデプロ
イお願い』を省略して、非同期な開発
(Rebuild.fmより拝借)、並列的な作業
28
サンプルコードはこちら
29
https://github.com/OpsRockin/jekyll_and_ngrok
コンテナ事例
Cucumber-Chef
Cucumber-Chef
• テスト駆動型インフラ開発
31
TestLab
32
Cucumber-Chef
VM(Vagrant or EC2)
Chef Server
(on host os)
LXC Bridge
Container Container
Chef-Client
Chef-Client
ここ繰り返し
最後に
Cucumber
設定サンプル
• 1台のEC2インスタンスに複数コンテナで

、まあまあ高速&節約のインフラテスト
33
CircleCI+Cucumber-Chef
• CircleCIコンテナ=>EC2コンテナのコンテ
ナ連鎖
• インフラ構築テストや、アプリ用任意バック
エンドを用意したり↓
34
時系列
CircleCIにコンテナ
Cucumber-Chefで
EC2に

Hadoopクラスタ
CircleCIで
要Hadoopのアプリを
テスト
GithubにPush
EC2の

Hadoopクラスタ
を破棄
CircleCIの
コンテナは自動破棄
用事があればこの時点にSSHアタッチ
コンテナお仕事情報
• 商用サービスで、エンドユーザ向けのデリバ
リプロセスの一部をコンテナでやろうと企画
中のプロジェクトがあります。
• おもしろそうだと思う方、やれそうな方、私
までご連絡で。
35
おわり
アンケートのお願い(再)
• http://higanworks.com/ のトップにセッシ
ョンのアンケートを設置していますので、ご
協力お願い致します!!(4/14日まで)
37

More Related Content

コンテナ事例 CircleCI, Cucumber-Chef