ジョブスケジューラーを導入しようと色々調べていたところ、ワークフローとかが使えるPython製のジョブスケジューラー『Dagobah』というものを見かけたので、ちょっと触ってみる事にする。
なお、インストール先としてはCentOS 7を用いる。
1.インストール
『Dagobah』はpip経由でインストールできるようなので、以下のコマンドでインストールする。
yum -y install python-pip gcc libxml2-devel libxslt-devel python-devel
pip install dagobah
pip install pymongo
これでインストールが完了。
簡単だ。
2.『Dagobah』のサービス起動
次に、インストールした『Dagobah』のサービスを起動する。
とりあえず、まず設定ファイルを作成する。
mkdir -p ~/dagobah/daemon/
cd ~/dagobah/daemon/
wget https://raw.githubusercontent.com/thieman/dagobah/master/dagobah/daemon/dagobahd.yml
sed -i 's/127.0.0.1/0.0.0.0/g' dagobahd.yml
cd
ホームディレクトリに移動後、以下のコマンドを実行するとサービスが起動する。
dagobah
[root@BS-PUB-CENT7-01 ~]# dagobahd
Creating new config file in home directory
Defaulting missing config key Logging.enabled to False
WARNING:root:Defaulting missing config key Logging.enabled to False
WARNING:root:Email.auth_required is True but Email.user is None. Emailing of reports will be disabled.
WARNING:root:SSH config doesn't exist, no remote hosts will be listed
Starting app on 127.0.0.1:9000
以後は、\~/.dagobahd.ymlというファイルが設定ファイルになる。
3.ブラウザからアクセスする
とりあえず、ブラウザからアクセスしてみよう。初期パスワードは「dagobah」になる。
ログイン直後の画面。
新しいジョブを作れとの事。
適当に「test」というジョブを作ってみた。
[View]を開いたところ。まだ何もタスクを追加してないので、特に何も表示されてない。
ページ下にある「Add New Task」から適当にタスクを作ってつなげて見たところ。
マウスで普通につなげる事ができる。
[Start Job from Beginning]からジョブを開始した結果。
普通にジョブが正常終了したとのこと。
最初のタスクを意図的に失敗するようにした結果。
2個めのタスクが実行されていない事がわかる。
確かに、マウスでワークフローをいじってジョブを処理させることができるようだ。
結構お手軽かつわかりやすい感じ。
4.リモートサーバに対してタスクを実行させる
さて、今時点ではリモートサーバの設定をしてないので、ローカルサーバに対するタスクしか実行できていない。
じゃあ、リモートサーバに対しタスクを実行するにはどんな設定をすればいいのか。
どうやら、「.ssh/config」に接続先の情報を記述することでリモートサーバとして指定できるようになるみたいだ。
とりあえず、以下のようにファイルを作成する。
Host サーバ名
HostName ホスト名orIPアドレス
User ユーザ名
IdentityFile ~/.ssh/id_rsa(鍵ファイルPATH)
ファイル作成後、サーバの再起動をしなくてもリモート先の選択肢に出てくるようになる。
各タスクの返り値に応じて処理を分岐させたり、返り値を次のタスクに渡すような処理はできないみたいだけど、単純なジョブならこれで設定できそう。
小規模、かつ単純なタスクのみをジョブにするなら結構ありかも。トリガーとかが必要になる環境では使えないかな。。。