lxc + Rex
何をやったか
- lxcを複数コンテナ立ててRexで管理した。
- Rexはperlで書けるchefのようなもの。apache2だったら以下のような書き方でインストールできる。
- 所謂Infrastructure As a Code.
(R)?ex - A simple framework to simplify systemadministration and datacenter automation
インストール方法
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]のような書き方も可。
mysite.pm
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ユーザでログインすることになっていて、それっていいのかなってちょっと思った。