Archive for the ‘Func’ tag
Func Package Controller v1.1
最新のfunc-0.23では仕様が少し変わって後方互換性がなくなってる部分があったので、fpcを最新バージョンに合わせてアップデートしました。
ダウンロードはこちら:fpc-1.1.zip
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
サブグループを作ったりもできますので気になる方は調べてみてください。
func package controller v1.0
突然何の脈絡もないですが、func package controllerなるものを作成しました。
ダウンロードはこちらから:fpc-1.0.zip
これはfunc (Fedora Unified Network Controller)というサーバ管理フレームワークを使っているシンプルなPythonスクリプトで、以下のようなことができます。
・大量のサーバに一括してRPMをインストールする。
・大量のサーバから一括してRPMをアンインストールする。
・大量のサーバの任意、または全てのパッケージをアップデートする。
・大量のサーバの内、任意のRPMがインストールされているサーバをしらべる。
・大量のサーバの内、任意のRPMがインストールされていないサーバをしらべる。
つまりは大量のサーバのパッケージ管理がワンライナーでできますよ、というツールです。
インストール方法や使い方などは付属のREADMEを参照下さい。こいつのインストール自体は簡単極まりないですが、そもそもfuncが使える環境でないと動かないでのBe careful.
funcがどんなものかとか全然説明してないですが、詳しくは発売中の日経Linuxのサーバ管理最強テクニックという連載の第4回、第5回(もうちょっとしたら発売)にあり。またこのサイトでも後日詳細を書こうと思います。