めんどうくさくないWardenハンズオン
description
Transcript of めんどうくさくないWardenハンズオン
めんどうくさくないWardenハンズオン
岩嵜 雄大
NTT Software Innovation Center
2012-12-12
情報は全て資料作成当時のものです
–更新が頻繁なため情報がすぐに古くなります
–必ず最新のソースコードを確認してください
Wardenの基本はこちら
– http://www.slideshare.net/i_yudai/warden
– (情報が少し古くなっています)
はじめに
2
Wardenは単体でも使用できる
お手軽コンテナとして便利
–アプリ単位で気軽に隔離環境を作れる
Wardenを使ってみよう
Ubuntu 12.04 Server 64bit
–実験だけならメモリは2GB程度で十分
– openssh-server は入れておく
–Generic以外のflavorは避けるのが無難?
• virtualだとカーネルモジュールの準備が面倒
CentOS派の方は
– KVMの上にUbuntuを入れましょう
Ubuntu環境を用意
パッケージをインストール
# 基本的なツール
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
リポジトリをクローン
# GitHubからクローンして
git clone https://github.com/cloudfoundry/warden.git # ディレクトリに入る
cd warden/warden
debootstrapが走るので結構時間がかかります
– コンテナの土台となる環境を構成するため
Wardenをセットアップ
bundle exec rake "setup[config/linux.yml]"
動きましたね!
Wardenサーバを起動
sudo bundle exec rake "warden:start[config/linux.yml]"
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
bin/wardenはRepl v.2
–こちらが新しい
–コードが綺麗
– non-interactiveでの使用も可能
bin/warden-replは Repl v.1
– README.mdの情報は古い
bin/warden v.s. bin/warden-repl
コンテナとの通信にWSHを使用
– SSHの使用は無くなった
–WSHDのソケットを使用して通信
WSHD
– clone.cの生まれ変わり
– execvp(/sbin/init)しなくなった
• WSHD自体がPID1で常駐するため,無駄なプロセスが生成されなくなった
Repl v.2
設定は 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