jar版Rundeckからメール送信を行う

タスクスケジューラの1種であるRundeckは
javaベースで動いており,Windows上でも動かすことができます.
Windows上でRundeckを動かし,ジョブの開始/成功/失敗時に
メールを送るために設定したことをメモしておきます.

何故記事にするのか

Rundeckはパッケージとしても配布しており,ubuntuなどのLinuxOSを使用している場合は
通常そちらを使うケースが多く,jarファイルを使用している人が少ないためかネット上にも
あまり記事を見かけません.また,jarファイルでRundeckの環境を構築した場合は
設定ファイルの場所など,仕様が異なるため今回記事を書きました.

Rundeckをインストールする

コマンドプロンプト上で

java -jar rundeck-***.jar (***にはバージョンなど)

を実行します.
初回起動時にフォルダや設定ファイルなどが自動で作成されるはずです.
(以下インストールしたjarファイルが存在するフォルダを$rundeckとする)
【生成されるフォルダ構成一覧(一部)】

$rundeck
-etc
-libext
-projects
-rundeck
-server
  -config
  -data
  -exp
  -lib
  -logs
  -sbin
  -work
-tools
-var
(などなど.全ては書きません)

groovyファイルを作成する

$rundeck/server/config
の中にあるrundeck-config.propertiesのバックアップを取り(例えばrundeck-config.properties.bakにリネーム),
rundeck-config.propertiesはrundeck-config.groovyに名前を変えて編集する.

今後,設定ファイルとしてgroovyフォーマットのファイルを使用するため,
メールの設定に加え,いくつかgroovyフォーマットに対応した記述に変更する必要があります.
以下が私の設定ファイルの中身(私はgmailを使用しています).

loglevel.default=INFO
rdeck.base="C:/workspace/rundeck"
rss.enabled=false

dataSource {
        dbCreate="update"
        url = "jdbc:h2:file:C:/workspace/rundeck/server/data/grailsdb;MVCC=true;TRACE_LEVEL_FILE=4"

}

grails {
        serverURL="http://<**localhost_hostname***>:4440"
        mail {
                host="smtp.gmail.com"
                port = 465
                username="<***your_mailaddress***>@gmail.com"
                password="<your_mail_password(ログイン時に使用するもの)>"
                props = ["mail.smtp.auth":"true",
                      "mail.smtp.socketFactory.port":"465",
                      "mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
                      "mail.smtp.socketFactory.fallback":"false"]
        }
}

この時に大切なことは以下の3つ
- 必ずgroovy形式にする(ファイル名も).{}はgroovy形式のフォーマットなので,これでしか読めない
- 元のpropertyファイルに残っていた情報も記載しなければならない
- rdeck.base= "..."の部分からわかるように元ファイルと違いダブルクオーテーション""が必要になるので注意

保存後,Rundeckを以下のオプションをつけて起動(再起動)します.

java -jar -Drundeck.config.name=rundeck-config.groovy *****.jar

ファイル名を直接指定していますが,この記述で
$rundeck/server/config内のファイルを読み込んでくれます.
また,Linuxにインストールしたパッケージ版では
groovyファイルを読み込むようにするために
/etc/rundeck/profileを編集していましたが,jar版では違うみたいです.

この状態でジョブを作成/編集する際に"send notification?"をYesにチェックし,
送信先メールアドレスを入力すれば,メールが届くようになります.


参考にしたサイト:
- Rundeck公式
http://rundeck.org/docs/administration/configuration-file-reference.html
- RundeckからGmailを使ってメール送信する http://soymsk.hatenablog.com/entry/2015/09/17/222110
- メール送信設定後,証明書関係で例外が
出るようになった際に参考にしたページ(設定後システムの再起動が必要)
https://groups.google.com/forum/#!topic/rundeck-discuss/3vJyPpvqjVs