nkjmkzk.net

powered by Kazuki Nakajima

func-0.23をセットアップする

以前にいきなりfuncのモジュールをリリースしましたが、久しぶりに見てみたらバージョンが大分上がってインストール手順も少し変わっているようなのでそのあたりをご紹介しておこうと思います。

そもそもfuncとはFedora Unified Network Controllerの略で、大量のサーバ群を一元管理するためのツールです。

サーバが死ぬほどたくさんあってそれぞれに同じような操作を行わなければいけないようなケース、例えば、パッケージの追加やアップデート、パッチ適用、設定ファイルの編集などを全サーバに施す必要が出てきた場合、うんざりしながらもしょうがないのでパワープレイで一台づつSSHでログインして・・ということをやってしまいがちだが、こういったことはfuncがあれば一回の操作でカタがつく。

funcでは一括して命令を行うcertmasterと呼ばれるコンポーネントと、そしてその命令の対象となるminionと呼ばれるコンポーネントで構成されています。

能書きはそれくらいにしてインストール、いってみよう。

まずは必要なモジュールをインストールする。EPELのレポジトリをすでに登録している粋な人は

[root@~]# yum install func

とするだけでOKだ。依存するモジュールも自動的にインストールしてくれる。しかしそんな人はあんまりいないので個別にダウンロードしてインストールする方法も紹介しておきたい。必要なのは多分以下のモジュール。

  • func
  • pyOpenSSL
  • certmaster
  • python-simplejson

funcのバージョンは今回0.23を想定しています。必要なモジュールは環境によっては他にもあるかもしれないけど、大抵はこのくらい集めればOKだと思われます。ダメだったらrpmのエラーを見て対応。ダウンロードしたら全部

[root@~]# rpm -ivh *

みたいな感じでインストールします。これらのモジュールはcertmaster, minionともに同様にインストールしておきます。

次にminion上で設定ファイルを編集し、minionにcertmasterの場所(IP)を教えてあげる。

[root@~]# vi /etc/certmaster/minion.conf
# configuration for minions
[main]
certmaster = 192.168.0.1 #certmasterのIPアドレスを指定
log_level = DEBUG
cert_dir = /etc/pki/certmaster

これでOK。デーモンの起動に移ろう。まずはcertmasterから。

[root@~]# service certmaster start

次にminion。

service funcd start

この状態でプロセスの起動まで完了。現状ではminionがcertmasterに対して自身の登録依頼を出した状態になっている。これをcertmasterで認可してやる必要がある。まずは認可待ちになっているminionを確認してみる。

[root@~]# certmaster-ca --list
minion01

フムフム。来とる来とる。で、認可します。

[root@~]# certmaster-ca --sign minion01
/var/lib/certmaster/certmaster/csrs/minion01.csr signed - cert located at /var/lib/certmaster/certmaster/certs/minion.cert

完了。確認しておきましょうか。

[root@~]# certmaster-ca --list-signed
minion01

オッケーィ。正常に登録されました。それでは軽く命令の発行の仕方だけ最後に確認しておきましょう。基本的にはcertmaster上で以下のような書式で命令します。

[root@~]# func 対象minion 命令

命令の部分はさらにいくつかのパートに分かれますが、最初に文法コンプリートするのもナンなので例文を紹介しておくにとどめます。例えば、minion01に再起動を命じる場合、以下のように命令します。

[root@~]# func minion01 call reboot reboot

そしてこれだけであれば「オイオイ、sshした方が早かろうて」ということになりますが、funcの特徴の一つは対象minionのところにワイルドカードが指定できることです。例えばminion01の他に、minion02, minion03がいたとします。3台ともに再起動を命じる場合、以下のように命令します。

[root@~]# func "minion*" call reboot reboot

またはこのケースであれば”minion*”を単純に”*”に置き換えてもいいでしょう。このようなホストの命名規則がある程度しっかりしていればワイルドカードで簡単に複数台を指定できます。もし、ホスト名はめちゃくちゃランダムです、という場合であれば、事前に設定ファイルにてグループを定義することもできます。グループの設定ファイルはcertmaster上の/etc/func/groupsですがデフォルトだと作成されていないので↓な感じで作ります。

[グループ名]
host = minion名をカンマ区切りで指定

サンプル

[WebServers]
host = web01,web02,ap01,ap02

そして命令文の中では「@グループ名」として指定します。

[root@~]# func @WebServers call reboot reboot

サブグループを作ったりもできますので気になる方は調べてみてください。

without comments

Written by 中嶋 一樹

12月 7th, 2008 at 7:02 pm

Posted in Uncategorized

Tagged with

Leave a Reply