calenda

Rundeckの使い方

Rundeckとはどんなものか

簡単に言ってしまうと「OSSのジョブスケジューラ」、つまり<cron+α>です。
似たようなソフトフェアとしてJenkinsをジョブスケジューラ代わりとして使っている方もいるかと思いますが、Rundeckのほうが運用向けに機能が絞られていて、使いやすい印象です。

cronの辛さ

cronを標準で使っていると、いろいろと機能が足りずに辛くなってくるはずです。エラー通知をSlackにしたいとか。いろんなサーバに入らないとcronの設定がよくわからないとか。ジョブフロー作れないとか。。。
そんな時には、是非Rundeckを使いましょう。

Rundeckのセットアップ

Githubにあるように、ひとまず使うだけであれば、非常に簡単にセットアップできます。
java7以上が必要なので事前に入れておいてください。

rpm -Uvh http://repo.rundeck.org/latest.rpm 
yum install rundeck
sudo /etc/init.d/rundeckd start

また次の設定をしておかないとログイン時にうまくいかないので、こちらも事前に設定しておきましょう。

$ vi /etc/rundeck/rundeck-config.properties

#rss.enabled if set to true enables RSS feeds that are public (non-authenticated)
rss.enabled=false
# change hostname here
grails.serverURL=http://:4440
dataSource.dbCreate = update
dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true;TRACE_LEVEL_FILE=4

以上でインストール自体は終わりです。実際に運用する時には、他にも考えなければいけないところは多々あるのですが、それはまた別の機会に。

スクリーンショット 2016-05-26 14.22.41

用語

Rundeckを使っていくにあたって、知っておいたほうがスムーズに使えるであろう用語を説明します。

  • プロジェクト
    • ジョブをまとめる単位。その名の通りプロジェクト単位で作るのが普通でしょう。
  • ジョブ
    • バッチ処理を行いたい単位。複数のステップを組み合わせることも可能です。
  • ステップ
    • ジョブを構成する個別の処理。一つのコマンドやシェルスクリプトなどです。
  • ノード
    • ジョブを実行するサーバ。マスターノードが実行自体を管理して、各スレーブノードで実際のジョブの実行を行うというのがよくある構成。

ジョブの設定

ここからは実際にジョブを設定して行きます。ジョブの設定はGUIから行えます。
まずはジョブの名前を決めましょう。ジョブの説明は、後から見てもわかりやすいようにしておいたほうが良いでしょう。
オプションとして渡す引数も設定することができます。

スクリーンショット 2016-05-26 14.52.30

ジョブのステップを設定していきます。例では単にtestとechoするだけのコマンドを設定しました。画像を見てわかるように、外部のスクリプトを指定することなども可能です。

スクリーンショット 2016-05-26 14.53.11

実行するノードの指定、メールやslackへの通知なども行うことができます。また実行するタイミングをcron形式で指定することもできるので、既存のcronからの移行もしやすいです。

スクリーンショット 2016-05-26 14.53.46

ジョブのタイムアウトの設定も可能です。何らかのエラーが起きジョブが予定時間内に終わらない時など検知できるので設定しておいたほうがよいでしょう。
リトライ回数も指定が可能なので、失敗時に再実行すればうまくいく処理であれば、リトライをするようにしておきましょう。
Log Output Limitも不必要にログを吐きすぎてサーバのディスクを圧迫してしまう事態を防げるので、基本的には設定しておいたほうがよい項目でしょう。

スクリーンショット 2016-05-26 14.54.10

ジョブの実行

ジョブの実行を手動で行うことも可能です。ジョブをGUIから選択して「Run Job Now」を押せば、ただちに実行させることができます。ジョブのログもGUIから確認できます。

スクリーンショット 2016-05-26 16.29.49

スクリーンショット 2016-05-26 16.31.45

最後に

簡単にジョブを作成することができました!
ジョブスケジューラが欲しいとなった時には、Rundeckは有力な候補になることと思います。