めんどうくさくないWardenハンズオン

12
めんどうくさくないWardenハンズオン 岩嵜 雄大 NTT Software Innovation Center 2012-12-12

description

Cloud FoundryのコンテナコンポーネントであるWardenのインストール方法から使い方までを簡単に紹介します。

Transcript of めんどうくさくないWardenハンズオン

Page 1: めんどうくさくないWardenハンズオン

めんどうくさくないWardenハンズオン

岩嵜 雄大

NTT Software Innovation Center

2012-12-12

Page 2: めんどうくさくないWardenハンズオン

情報は全て資料作成当時のものです

–更新が頻繁なため情報がすぐに古くなります

–必ず最新のソースコードを確認してください

Wardenの基本はこちら

– http://www.slideshare.net/i_yudai/warden

– (情報が少し古くなっています)

はじめに

2

Page 3: めんどうくさくないWardenハンズオン

Wardenは単体でも使用できる

お手軽コンテナとして便利

–アプリ単位で気軽に隔離環境を作れる

Wardenを使ってみよう

Page 4: めんどうくさくないWardenハンズオン

Ubuntu 12.04 Server 64bit

–実験だけならメモリは2GB程度で十分

– openssh-server は入れておく

–Generic以外のflavorは避けるのが無難?

• virtualだとカーネルモジュールの準備が面倒

CentOS派の方は

– KVMの上にUbuntuを入れましょう

Ubuntu環境を用意

Page 5: めんどうくさくないWardenハンズオン

パッケージをインストール

# 基本的なツール

sudo aptitude install -y git ruby1.9.3 # Wardenが使うパッケージ

sudo aptitude install –y build-essential sudo aptitude install –y debootstrap sudo aptitude install –y quota iptables # Wardenが使うGem

sudo gem install bundle

Page 6: めんどうくさくないWardenハンズオン

リポジトリをクローン

# GitHubからクローンして

git clone https://github.com/cloudfoundry/warden.git # ディレクトリに入る

cd warden/warden

Page 7: めんどうくさくないWardenハンズオン

debootstrapが走るので結構時間がかかります

– コンテナの土台となる環境を構成するため

Wardenをセットアップ

bundle exec rake "setup[config/linux.yml]"

Page 8: めんどうくさくないWardenハンズオン

動きましたね!

Wardenサーバを起動

sudo bundle exec rake "warden:start[config/linux.yml]"

Page 9: めんどうくさくないWardenハンズオン

Wardenサーバとのインタラクション

# READMEを信じてはいけない

bundle exec bin/warden-repl sudo bundle exec bin/warden warden> create handle : 16g5e9e3r9j warden> run --handle 16g5e9e3r9j --script "ps aux" USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 12744 412 ? S+ 09:17 0:00 wshd: 16g5e9e3r9j vcap 15 0.0 0.0 17704 1188 ? Ss 09:19 0:00 /bin/bash vcap 16 0.0 0.0 15036 1084 ? R 09:19 0:00 ps aux

Page 10: めんどうくさくないWardenハンズオン

bin/wardenはRepl v.2

–こちらが新しい

–コードが綺麗

– non-interactiveでの使用も可能

bin/warden-replは Repl v.1

– README.mdの情報は古い

bin/warden v.s. bin/warden-repl

Page 11: めんどうくさくないWardenハンズオン

コンテナとの通信にWSHを使用

– SSHの使用は無くなった

–WSHDのソケットを使用して通信

WSHD

– clone.cの生まれ変わり

– execvp(/sbin/init)しなくなった

• WSHD自体がPID1で常駐するため,無駄なプロセスが生成されなくなった

Repl v.2

Page 12: めんどうくさくないWardenハンズオン

設定は config/linux.yml

–デフォルトだとファイルが/tmpに生成されるので変えておくと安心

コマンドの引数が array の場合は以

下のように指定する

Tips

warden> create --bind_mounts[0].src_path /home/yudai/app --bind_mounts[0].dst_path /app --bind_mounts[0].mode RW