オープンソースなシステム管理フレームワーク Func

第3回 funcコマンドの使用方法

この記事を読むのに必要な時間:およそ 2 分

今回はFuncを利用する上での基本となる,funcコマンドの使用方法について解説します。

funcコマンドの概要

funcコマンドはcertmaster上で実行します。コマンドの実行パターンとしては,管理対象のminion一覧を表示する場合と,各minion上でモジュールを実行して結果を取得する場合の,2パターンがあります。

管理対象のminion一覧を表示する場合は,以下のように実行します。

$ sudo func target list_minions

各minion上でモジュールを実行して結果を取得する場合は,以下のように実行します。

$ sudo func target call module method [args ...]

targetは対象となるminionを指定します。ワイルドカードや;(セミコロン)区切りで複数のminionを指定することができます。例えば,

$ sudo func "*" list_minions

と実行すると,管理対象となっているすべてのminionを表示します。また,

$ sudo func "www*" list_minions

と実行すると,ホスト名がwwwではじまるminionを表示します。ピンポイントで複数のminionを指定する場合には,

$ sudo func "www.example.org;mail.example.org" module method

といった形で,;(セミコロン)で区切って指定します。

また,モジュールを実行する場合の引数moduleには実行するモジュール名を,methodには実行するモジュールのメソッド名を,[args ...]には,モジュールメソッドの引数を,必要に応じて指定します。

では,実際にfuncコマンドを実行してみましょう。

管理対象minion一覧表示

管理対象minionの一覧を表示すると,以下のような結果が返ってきます。

$ sudo func "*" list_minions
['https://func02.example.org:51234', 'https://func01.example.org:51234']
func02.example.org
func01.example.org

結果の最初の行は,リストで渡されたminionの一覧をそのまま表示しており,2行目以降では,minionのホスト名をひとつひとつ表示しています。

モジュールの実行と結果表示

利用できるモジュールの一覧表示

モジュールを実行する前に,まずはどういったモジュールが使えるのかを知る必要があります。そのためには,systemモジュールのlist_modulesメソッドを実行します。

$ sudo func "func01*" call system list_modules
on https://func01.example.org:51234 running system list_modules ()
['certmaster', 'command', 'copyfile', 'filetracker', 'func_module', 'hardware',
'jobs', 'mount', 'nagios-check', 'netapp.snap', 'netapp.vol', 'netapp.vol.clone', 'networktest', 'process', 'reboot', 'rpms', 'service', 'smart', 'snmp', 'sysctl', 'test', 'yumcmd']

利用できるモジュールがリストとして返ってきます。

モジュールに関する情報の表示

各モジュールにどういったメソッドが存在するか確認したい場合には,call の後に利用したいモジュール名を指定し,続けてlist_methodsメソッドを指定します。

$ sudo func "func01*" call service list_methods
on https://func01.example.org:51234 running service list_methods ()
['status', 'reload', 'get_running', 'stop', 'start', 'inventory', 'get_enabled', 'restart', 'module_description', 'module_version', 'module_api_version', 'list_methods']

この例では,serviceモジュールで利用できるメソッドをリストで取得しています。

メソッドリスト中にある,module_descriptionメソッドを実行すると,モジュールの説明が表示されます。

$ sudo func "func01*" call service module_description
on https://func01.example.org:51234 running service module_description ()
Allows for service control via func.

module_versionメソッド,module_api_versionメソッドを実行すると,モジュールやモジュールAPIのバージョンが表示されます。

$ sudo func "func01*" call service module_version
on https://func01.example.org:51234 running service module_version ()
0.0.1
$ sudo func "func01*" call service module_api_version
on https://func01.example.org:51234 running service module_api_version ()
0.0.1

モジュールメソッドの実行と結果表示

では,serviceモジュールを実行して,minion上のntpdサービスを起動してみます。

$ sudo func "func01*" call service start ntpd
on https://func01.example.org:51234 running service start (ntpd)
0

最後の0はexitコードです。

きちんと起動されているかどうか確認するために,serviceモジュールのstatusメソッドを実行してみます。

$ sudo func "func01*" call service status ntpd
on https://func01.example.org:51234 running service status (ntpd)
0

exitコードが0なので,ntpdが起動していることがわかります。次に,ntpdサービスを停止してみます。

func "func01*" call service stop ntpd
on https://func01.example.org:51234 running service stop (ntpd)
0

この状態でstatusメソッドを実行してみます。

func "func01*" call service status ntpd
on https://func01.example.org:51234 running service status (ntpd)
3

exitコードが3となっており,ntpdが起動していないことがわかります。

以上がfuncコマンドの基本的な使い方です。他にも様々なモジュールがありますので,色々と試してみてください。

次回はPythonプログラムからモジュールを呼び出して実行する方法について解説する予定です。

著者プロフィール

宮下剛輔(みやしたごうすけ)

(株)paperboy&co.技術責任者。 社内ではサーバ周りからアプリケーション開発まで幅広く関わる一方,個人的にはPerlプログラミングを趣味として,サーバ管理用ユニットテストスイート Assurer(アシュラ)をオープンソースで公開したり,CPAN AuthorPlaggerコミッタとして活動している。また,YAPC::Asia 2007 Tokyo等の技術系カンファレンスでスピーカを務めるのも最近の楽しみのひとつ。共著書に『MASHUP++』がある。

URLhttp://mizzy.org/

コメント

コメントの記入