lxc + Rex

何をやったか

  • lxcを複数コンテナ立ててRexで管理した。
  • Rexはperlで書けるchefのようなもの。apache2だったら以下のような書き方でインストールできる。
  • 所謂Infrastructure As a Code.

(R)?ex - A simple framework to simplify systemadministration and datacenter automation

gist7988838

インストール方法

echo 'deb http://rex.linux-files.org/ubuntu/ precise rex' >> /etc/apt/sources.list
wget -O - http://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO | apt-key add -
apt-get update
apt-get install rex

ディレクトリ構成

  • Rexfileで実行ユーザとかサーバを書いて、lib中のモジュールで細かい設定を行う。Vagrantとchefの関係にちょっと似ている。
.
├── lib
│   └── mysite.pm
└── Rexfile

Rexfile

set groupsでserverをグルーピングできる。このgroupに対して各々の具体的な処理をlib以下(今回だとmysite)に書くらしい。serverは今回はIP指定だけどwww[0-100]のような書き方も可。

gist7988866

mysite.pm

gist7988975

server1グループにapache2入れてserver2にphp5を入れるだけの処理。chefやpuppetに似ていて既視感がある。install以外にもrunでコマンドを走らせることもできるし、テンプレートも使える。

my $output = run "uptime";
say $output;

実行コマンド

以下のコマンドでmysite内のtaskが走る。

rex mysite:server1 mysite:server2

感想

Perlでchefっぽいものが書けて便利だけど、プロジェクト自体がまだ新しくDocumentがあまり整備されていない様子。 後公式Manualだとrootユーザでログインすることになっていて、それっていいのかなってちょっと思った。