Edited at

Rundeckのインストールと簡易設定

More than 3 years have passed since last update.


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でログイン画面が表示されるはず。

http://localhost:4440/

実際は、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マシンから

ブラウザで以下のようにアクセス。

http://サーバーIDアドレス:4440/

スクリーンショット_010516_110827_AM.jpg

ログイン画面が表示されて、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/