Rundeckを利用してバッチ管理してみる
環境情報
CentOS 6.6
Rundeck 2.6.2
Java 8 (1.8.0_51)
Rundeckとは
Rundeck http://rundeck.org/index.html
オープンソースのJob管理ツール
Rundeckは、オープンソースのJob管理ツール。
SCMとの連携もできるようになっているため、Jenkinsのように
CIツールとして利用することもできるようですが、
プラグインの数がJenkinsの方が圧倒的に多いらしく、CIツール
としては、さほど利用されていないらしい。
Cronのようにシェルスクリプトなどを定時実行することができるだけでなく、
結果に応じて、通知や別スクリプトを実行するなどCronだけでは実施が難しい
フロー制御が可能。
商用だと、SystemWalker、千手、JP1のようなJob実行基盤があるが
そこまで機能も豊富ではないが、手軽にJob管理ができるツール。
・Jobの実行制御
・複数ノードの管理
・並列実行、フロー制御
・失敗時の通知、別フローの実行
・GUIによる上記設定編集
※軽く触った限りでは、GUIでのグラフィカルにジョブネットを組み替えるなどはできない模様
ライセンス
Apache Software License 2.0
商用利用が可能なライセンス。
基本的には、内部運用用途で利用することが多いため
よほど大きなバグを掴まない限りは、特にサポート契約も
不要と思われる。(最悪ソースを見て直すことも可)
日本語化について
日本語化は、行われておらずpropertiesファイルを
_jpとしてコピーし、編集することで可能とのこと。
マニュアルは、日本語化されている。
マニュアル(日本語) http://rundeck.org/docs/jp/index.html
他にどのようなOSSツールがあるの?
Airflow :Pythonでコードをゴニョゴニョ系
Luigi :同じくPythonで設定などをゴニョゴニョ系
Azkaban :Java製 プロパティファイル形式でジョブを記載、設定、日本では人気あり?
参考:http://qiita.com/toyama0919/items/9c9e3fd5c8a92a7b7686
今回は、運用の方が利用しやすいようにGUIで操作、閲覧できてJava製の
Rundeckをピックアップ
Rundeckをインストールする
インストールは、RPMパッケージ、Launchar.jarやtarballなどがあるが
今回は、yumでインストールする。敢えて手順を細かく書くまでもないが
あちこちサイトを飛びながら実施すると面倒だと思うの以下記載する。
インストール手順
Javaをインストールする。
Javaのインストールが不要な場合は、後ほど記載しているJAVA_HOME設定
について記載対応する必要がある。
# yum install java-1.7.0
# rpm -Uvh http://repo.rundeck.org/latest.rpm
# yum install rundeck
# service rundeckd start
基本的にyesでインストールするとさくっとインストールまでは完了する。(はず)
インストール後の環境設定
インストールが終わると以下の状態になっている。
- rundeckユーザーが追加されている
- /etc/rundeck/に各種設定ファイルが置かれている
- /etc/rc.d/rundeckd という起動スクリプトが置かれている
サービスの実行は以下
# service rundeckd start
OKと表示される。
JAVA_HOMEが適切に設定されている場合は、ここでブラウザから以下の
URLでログイン画面が表示されるはず。
実際は、Javaのパスが通って
いなかったため自分の環境では、動いていなかった。
ちなみにログは以下に出力されているため、原因はそれで判明。
/var/log/rundeck/server.log
はまりどころ1:JAVA_HOME
JAVA_HOMEの設定が、rundeckユーザーに対して設定できていれば、問題なかったのですが
自分の環境では上手いことbashのJAVA_HOME設定がrundeckユーザーに適用できていなかったため
以下のファイル内でJAVA_HOMEを設定してとりあえず解決させてみた。
/etc/rundeck/profile
# If JAVA_HOME is set, then add it to home and set JAVA_CMD to use the version s
pecified in that
# path. JAVA_HOME can be set in the rundeck profile. Or set in this file.
#JAVA_HOME=<path/to/JDK or JRE/install>
export JAVA_HOME=/var/java/jdk1.8.0_51 ←追加
echo $JAVA_HOME ←追加
if [ ! -z $JAVA_HOME ]; then
PATH=$PATH:$JAVA_HOME/bin
export PATH
JAVA_CMD=$JAVA_HOME/bin/java
fi
上記を設定して、再び service rundeckd start を実行しブラウザから
アクセスしたところログイン画面が表示された。
はまりどころ2:URL設定(リダイレクト?)
Linuxは、ランレベル3で起動しているためリモートのWindowsマシンから
ブラウザで以下のようにアクセス。
ログイン画面が表示されて、admin/adminでログインを実施したところ
(adminユーザーのデフォルトパスワードは、admin)
リダイレクトでページが見つからないと表示された。
どうやら、URLが設定ファイルに記載されているらしい。
(正直、微妙。。)
以下のファイルを編集する。
/etc/rundeck/rundeck-config.properties
# change hostname here
grails.serverURL=http://ホスト名:4440 ←localhostからホスト名に変更(自分は諸事情あるためIPアドレスを指定)
もう1か所
/etc/rundeck/framework.properties
framework.server.name = ホスト名 ← localhostからホスト名へ
framework.server.hostname = ホスト名 ← localhostからホスト名へ
framework.server.port = 4440
framework.server.url = http://ホスト名:4440 ← localhostからホスト名へ(上記と同様に自分はIPアドレスを指定)
上記を実施してserviceの再起動を実施
service rundeck restart
Rundeckの設定
上記にすでに設定ファイルについて登場しているが
Rundeckの設定ファイルは、以下となる。
/etc/rundeck/rundeck-property.properties
このファイルは、Javaのプロパティファイル形式となっている。
メールサーバー設定
Jobの実行時にメールを飛ばす際に、外部のメールサーバーを
利用する場合(自分はGmailを利用)は、propertiesファイルでは対応ができないらしい。
Groovy形式の設定ファイルを自分で用意し、そちらを読ませる必要があるとのこと、、
(最初からそっちにしといてーな)
# cd /etc/rundeck/
# mv ./rundeck-property.properties ./rundeck-property.properties.back
# vi ./rundeck-property.groovy
ファイルの内容は以下
設定の内容は、rundeck-property.propertiesと同じ。メールの設定部分に関しては、各自の環境に合わせて変更する。
参考:http://soymsk.hatenablog.com/entry/2015/09/17/222110
loglevel.default="INFO"
rdeck.base="/var/lib/rundeck"
rss.enabled=false
dataSource {
dbCreate="update"
url="jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true;TRACE_LEVEL_FILE=4"
}
grails {
serverURL="http://ホスト名:4440" ←ここは前回編集したホスト名とポート
mail {
host="smtp.gmail.com"
port = 465
username="XXXXXX@gmail.com"
password="XXXXXXX"
props = ["mail.smtp.auth":"true",
"mail.smtp.socketFactory.port":"465",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"false"]
}
}
上記の設定を実施した上で、起動時にpropertiesファイルではなく、groovyファイルを
読み込ませる必要がある。
/etc/rundeck/profile
# Add to load custom config
RDECK_JVM="$RDECK_JVM -Drundeck.config.location=/etc/rundeck/rundeck-config.groovy"
上記設定の反映のためサービスを再起動する。
service rundeckd restart
以上で、GmailなどSSL/TLSのメール通知が可能となる。
その他、参考となったURL
http://dev.classmethod.jp/server-side/server/try-rundeck-job/
http://note.crohaco.net/2015/rundeck-basic/