MCollectiveのインストールと動作確認
MCollective - Marionette Collective AKA MCollective - が気になったので試してみました。
mcollectiveはPuppet を作っているpuppet labs のプロダクトです。ruby製。
日本語で紹介されているこちらのエントリでは、以下のように分かりやすく解説がされていました。
一言で言うと、"定例作業を効率的に行うのがpuppet/chefの役割"で、"MCollectiveは非定例作業を効率的に行う"ことのできるツールです。
本家のサイトの紹介を見ると、"複数のサーバー群に対して任意のオペレーションを並列実行するためのフレームワーク"とされています。同じような作業を行う為のフレームワーク・ツールとしては他にもFunc, Capistrano, Fabricが同じく紹介されています。(最後の知らない。)Capistranoはデプロイツールとして有名ですね。
他のツールと比べて、MCollectiveのポイントは以下の2つだと感じました。
- サーバー群に対して設置場所(たとえばDCや、国とかも)を意識せず
- シンプル且つスピーディーにオペレーションを行う
あるクライアントから複数サーバー群に対して任意の作業を行うときに、普通であれば
- クライアント -> サーバー群で 1:m
であったのが、MCollectiveは
- クライアント -> 作業を管理する並列キューシステム -> サーバー群で 1:n:m
と一枚噛んでます。この真ん中の並列キューシステムが上記の2つのポイントの肝になっているという感じでしょうか。
より詳細なアーキテクチャの解説がされている、本家のスライドはこちら
何はともあれ動かしてみたいと思います。
各要素に必要なパッケージは以下のようになっています。
- クライアント: mcollective-client
- 作業を管理するキューシステム: activemq
- サーバー群: mcollective
今回は以下のホスト構成にイントールしました。
全台 CentOS 5.5 x86_64, ほか依存するとこだとrubyだけど、ruby-1.8.5-5.el5_4.8, rubygems-1.3.1-1.el5, あとついでに facter-1.5.8-1.el5
- collective-client, activemq
- manage01.tnmt.local
- collective
- test01.tnmt.local
- test02.tnmt.local
共通 @ manage01, test01, test02
事前に必要なツールのインストール。
mcollectiveがrubyのメッセージキュークライアントを使ってるのでそちらを
sudo yum -y --enablerepo=epel install rubygem-stomp rubygems
mcollectiveの共通コンポーネント
wget http://puppetlabs.com/downloads/mcollective/mcollective-common-1.0.0-2.el5.noarch.rpm</kbd>
sudo rpm -Uvh mcollective-common-1.0.0-2.el5.noarch.rpm
mcollective @ test001, test002
mcollective インストール
wget http://puppetlabs.com/downloads/mcollective/mcollective-1.0.0-2.el5.noarch.rpm</kbd>
sudo rpm -Uvh mcollective-1.0.0-2.el5.noarch.rpm
設定
/etc/mcollective/server.cfg が設定ファイルになります。 plugin.stomp.host に activemq が動いてるサーバーを指定ですね。パスワードは伏せてありますが変更してあります、あとでactivemqの設定にも関わってきます。
--- /etc/mcollective/server.cfg.dist 2010-12-12 02:01:11.000000000 +0900
+++ /etc/mcollective/server.cfg 2011-02-26 14:14:10.000000000 +0900
@@ -9,10 +9,10 @@
plugin.psk = unset
connector = stomp
-plugin.stomp.host = stomp.example.com
+plugin.stomp.host = manage01.tnmt.local
plugin.stomp.port = 6163
plugin.stomp.user = mcollective
-plugin.stomp.password = marionette
+plugin.stomp.password = XXXXXXXXXXXXXXXX
# Facts
factsource = yaml
サービススタート
sudo /etc/init.d/mcollective start
mcollective-client @ manage01
インストール
wget http://puppetlabs.com/downloads/mcollective/mcollective-client-1.0.0-2.el5.noarch.rpm
sudo rpm -Uvh mcollective-client-1.0.0-2.el5.noarch.rpm
設定
/etc/mcollective/client.cfg を編集。箇所は先ほどと同じく activemq が動くホストを指定。
--- /etc/mcollective/client.cfg.dist 2010-12-12 02:01:11.000000000 +0900
+++ /etc/mcollective/client.cfg 2011-02-26 14:12:06.000000000 +0900
@@ -8,10 +8,10 @@
plugin.psk = unset
connector = stomp
-plugin.stomp.host = stomp.example.com
+plugin.stomp.host = manage01.tnmt.local
plugin.stomp.port = 6163
plugin.stomp.user = mcollective
-plugin.stomp.password = marionette
+plugin.stomp.password = XXXXXXXXXXXXXXXX
# Facts
factsource = yaml
activemq @ manage01
ActiveMQはJMS実装のプロダクトです。こいつがmcollective, mcollective-client双方のメッセージのやりとりを介してくれます。JMSの名の通り中身はJava
インストール
Javaインストール
sudo yum -y install java-1.6.0-openjdk
puppetlabsから提供されてるパッケージをまとめてインストール
for package in tanukiwrapper-3.2.3-1jpp.x86_64.rpm activemq-5.4.0-2.el5.noarch.rpm activemq-info-provider-5.4.0-2.el5.noarch.rpm
do
sudo rpm -Uvh http://puppetlabs.com/downloads/mcollective/$package
done
設定
mcollective用の設定を読むように /etc/activemq/activemq-wrapper.conf 編集
--- /etc/activemq/activemq-wrapper.conf.dist 2010-08-18 05:48:16.000000000 +0900
+++ /etc/activemq/activemq-wrapper.conf 2011-01-26 13:23:01.000000000 +0900
@@ -82,7 +82,7 @@
# Application parameters. activemq.xml will be loaded from the config directory
wrapper.app.parameter.1=org.apache.activemq.console.Main
wrapper.app.parameter.2=start
-wrapper.app.parameter.3-xbean:activemq.xml
+wrapper.app.parameter.3=xbean:mcollective.xml
#********************************************************************
# Wrapper Logging Properties
mcollective用の設定 /etc/activemq/mcollective.xml 作成。simpleAuthenticationPluginのauthenticationUserという項目がありますが、ここには mcollective, mcollective-client の設定で変更したパスワードが入ります。
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" useJmx="true">
<plugins>
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry topic="<span id="searchword">mcollective</span>.>" write="systemusers" read="systemusers" admin="systemusers" />
<authorizationEntry topic="ActiveMQ.Advisory.>" read="everyone,all" write="everyone,all" admin="everyone,all"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="mcollective" password="XXXXXXXXXXXXXXXX" groups="systemusers,everyone"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:6166" />
<transportConnector name="stomp" uri="stomp://0.0.0.0:6163" />
</transportConnectors>
</broker>
</beans>
サービススタート
sudo /etc/init.d/activemq start
起動したかどうか、/var/log/activemq/activemq.logあたり見るとよいかと思います。
これで試す準備ができました。
動作確認
ひとまず動作確認ということで、mcollectiveがインストールされてホストをリストしてみます。
mc-find-hosts
test01.tnmt.local
test02.tnmt.local
続いて全台にping打ってみる
mc-ping
test01.tnmt.local time=63.35 ms
test02.tnmt.local time=101.06 ms
---- ping statistics ----
2 replies max: 101.06 min: 63.35 avg: 82.21
返ってきますね。対象のホストの状況を確認してみる。
mc-inventory test01.tnmt.local
Inventory for test01.tnmt.local:
Server Statistics:
Version: 1.0.0
Start Time: Sat Feb 26 13:38:54 +0900 2011
Config File: /etc/mcollective/server.cfg
Process ID: 24564
Total Messages: 3
Messages Passed Filters: 3
Messages Filtered: 0
Replies Sent: 2
Total Processor Time: 0.06 seconds
System Time: 0.19 seconds
Agents:
discovery rpcutil
Configuration Management Classes:
base test01.tnmt.local
Facts:
mcollective => 1
インストールは完了したので、もう少し色々と触ってみます。
- プラグイン機構で行えるオペレーション追加
- puppetのfacterを共有して特定条件ホストでのオペレーション
等々