前回はfuncコマンドで各minion上のモジュールを実行する方法について解説しましたが、今回はPythonプログラムからモジュールを実行する方法について解説します。
funcコマンドの場合は、単純にモジュールを実行して結果を表示するだけでしたが、Pythonプログラムからモジュールを実行すると、実行結果に基づいて更に何らかの処理を行う、といったことが可能となります。
基本的なコード
Pythonからのモジュール実行コードは、基本的には以下のようになります。
例えば、httpdの状態を確認して、起動していない場合には起動する、という処理を行うためのコードは以下のようになります。
モジュールの実行対象となるminionは、fc.Client()で指定します。上でのコード例のように、*が指定されている場合には、管理しているminionすべてが対象となります。単一のminionを指定する場合には、以下のように記述します。
複数のminionを指定する場合には、;(セミコロン)で区切って指定します。
利用例
Pythonプログラムからのモジュール実行の具体的なサンプルを2つご紹介します。
smartモジュールを利用したディスクのチェック
smartモジュールにより全minionのディスクの状態をチェックし、問題があれば表示を行うというサンプルです。Func オフィシャルサイトにあるサンプルから引用しています。解説はコード中にコメントとして記述しています。
virtモジュールを利用した管理対象仮想マシンの全起動
virtモジュールにより全minion上に存在する仮想マシンの状態をチェックし、起動していないものがあれば起動する、というサンプルです。解説はコード中にコメントとして記述しています。
Pythonプログラムからのモジュール実行についての解説は以上です。上のサンプルを、Funcを使わずに実現する場合にはどのようなコードになるかを考えてみると、Funcの便利さがより実感できると思います。
次回はFuncモジュールの作り方について解説予定です。