みなさんこんにちは。最近はシェル芸でワンライナーばっかり書いておりましたが、久々にこってりとしたシェルスクリプトを書きたくなり、lxc管理ツールをリリースしました。
lxcのコンテナ管理は、 /usr/bin/lxc-* で簡単にできますが、CentOS上でlxcのテンプレートとなる環境を作成する「MAKELXC」と、10台までのコンテナを一元管理できる「LXCMAINTE」を書いてみました。いずれもホストOSはCentOS6で動作確認しています。
■ MAKELXC
githubにソースコードを公開しています。使い方ですが、パッケージリストをホームディレクトリ下の etc/lxc/lxc-packages として作成しておき、引数なしで実行すると、テンプレートとなるコンテナのアーカイブ centos6-lxc-root.tgz が出来上がります。rootユーザでログインできるようになっており、パスワードはホストOSと同じものとなります。
${HOME}/etc/lxc/lxc-packages ですが、ほぼ「yum groupinstall base」でインストールされるパッケージと同等です。私の好みでsendmail→postfixへの変更と、dhcpクライアントを追加しています。参考までに私のlxc-packagesをここに公開しておきます。
■ LXCMAINTE
こちらもソースコードをgithubに公開しています。使い方は以下の通りです。
1) コンテナを作成する
[ (っ´∀`)っ@友の会 ~]$ LXCMAINTE create
2) コンテナリストを更新する
[ (っ´∀`)っ@友の会 ~]$ LXCMAINTE mainte
3) コンテナリストから、起動しているリスト、停止しているリストを表示する
[ (っ´∀`)っ@友の会 ~]$ LXCMAINTE list
4) コンテナvm0を起動する
[ (っ´∀`)っ@友の会 ~]$ LXCMAINTE start vm0
5) コンテナvm0を停止する
[ (っ´∀`)っ@友の会 ~]$ LXCMAINTE stop vm0
6) コンテナvm0を消去する
[ (っ´∀`)っ@友の会 ~]$ LXCMAINTE destroy vm0
これらのコマンドを使うことで、コンテナの管理が簡単になるかと思います。コンテナを作成するコマンドオプション「create」は、vmの番号を自動採番するようにしました。現在起動中または停止中のコンテナと番号が被らないようになっています。
また、コンテナのIPアドレスも被らないよう、IPアドレスの末尾がvmの番号になるようにしています。githubに上げたソースでは、10.0.10.10~10.0.10.19までがアサインされるようになっています。
※ 注意点
LXCMAINTEを実行するタイミングによっては、インターフェイス名がうまく取得できなかったり、起動停止のステータスがうまく取得できなかったりしますが、数秒おいてからmainteオプションを実行するとステータスを再取得することができます。sleep入れようかと思いましたが、やっぱりナンセンスですよねえ(^_^;
[amazonjs asin="4897979250" locale="JP" title="ネットワーク仮想化 基礎からすっきりわかる入門書"]