CentOS 7にワークフローをいじって設定できるPython製のジョブスケジューラー『Dagobah』をインストールする

ジョブスケジューラーを導入しようと色々調べていたところ、ワークフローとかが使える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)

ファイル作成後、サーバの再起動をしなくてもリモート先の選択肢に出てくるようになる。

各タスクの返り値に応じて処理を分岐させたり、返り値を次のタスクに渡すような処理はできないみたいだけど、単純なジョブならこれで設定できそう。
小規模、かつ単純なタスクのみをジョブにするなら結構ありかも。トリガーとかが必要になる環境では使えないかな。。。