僕とコードとブルーハワイ

omega (@equal_001) の日記

Rundeck Config・ジョブ通知・Mysql の設定編

前回はRundeckをローカルで動かすまでのメモを書いた。
Rundeck 基礎編 インストールからジョブ実行までのメモ - 僕とコードとブルーハワイ

今回は、実際に使用するときに設定する色々なことをメモしていく。

環境

Ubuntu 14.04
Rundeckバージョン:2.6.2

Rundeckの設定

公式ページを見ながら設定していく。
Configuration

Config設定が置いてある場所と構成は以下の通り。
今回は最低限の設定だけする。いじるのはframework.properties、project.properties、profileくらい。

omega:~$ sudo tree /etc/rundeck/
/etc/rundeck/
├── admin.aclpolicy
├── apitoken.aclpolicy
├── framework.properties
├── jaas-loginmodule.conf
├── log4j.properties
├── profile
├── project.properties
├── realm.properties
├── rundeck-config.properties
└── ssl
    └── ssl.properties
framework.properties

Rundeckのコア部分の設定を定義するファイル。
ホスト名やBaseURL、Login User/Passwdなど。

# ----------------------------------------------------------------
# Rundeck server connection information
# ----------------------------------------------------------------

framework.server.name = rundeck-example.com
framework.server.hostname = rundeck-example.com
framework.server.port = 4440
framework.server.url = http://localhost:4440  # 自鯖内で経由するのでlocalhost
# Username/password used by CLI tools.
framework.server.username = omega
framework.server.password = agemo
                          :
rundeck-config.properties

データベース、logレベル、メール通知の設定などをするファイル。

#loglevel.default is the default log level for jobs: ERROR,WARN,INFO,VERBOSE,DEBUG
loglevel.default=INFO
rdeck.base=/etc/rundeck

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

上記の設定をしてRundeckを再起動すると、設定ファイルが反映される。
http://rundeck-example.com にアクセスしてログイン画面になったらOK。

ジョブ通知の設定

Rundeckではジョブのステータス(Success, Failed, Start)で通知を飛ばせる仕組みがある。
今回はSlack通知と Email通知の設定方法を書いていく。

Slackに通知を飛ばす

前回のRundeckメモに書いたけどもう一回書く。
準備はrundeck-slack-incoming-webhook-pluginの公式ページからrundeck-slack-incoming-webhook-plugin-0.5.jar(この記事を書いた時点での最新版) をダウンロードしてきて、/var/lib/rundeck/libext/配下に設置して、Rundeckを再起動するだけ。

$ sudo mv rundeck-slack-incoming-webhook-plugin-0.5.jar /var/lib/rundeck/libext/

再起動後にWebUIからジョブの作成ページを見てみると、Send Notification?の欄にSlack Incoming WebHookが追加されている。
f:id:equal_001:20160326183007p:plain

SlackのIncoming WebHooksからWebhook URLを取得してフォームに入力してあげるだけでOK。

簡単なジョブを実行して、Slackへ実行結果が送信されていることを確認。
実行結果ページへのリンクも貼られているのも便利。

f:id:equal_001:20160326182711p:plain

メールで通知する

Email Settings によると、SSL越しに接続したりと高度な設定をしたい場合はrundeck-config.propertiesではなくrundeck-config.groovyに記述しましょうとのこと。
/etc/rundeck/にrundeck-config.groovyを作成する。
今回はGmailSMTPを使う(楽だから)。
中身は以下のように書くかんじ。

loglevel.default="INFO"
rdeck.base="/var/lib/rundeck"
rss.enabled="false"

grails {
        serverURL="http://rundeck-example.com"
        mail {
                host="smtp.gmail.com"
                port = 465
                username="example@gmail.com"
                password="example"
                props = ["mail.smtp.auth":"true",
                      "mail.smtp.socketFactory.port":"465",
                      "mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
                      "mail.smtp.socketFactory.fallback":"false"]
        }
}
grails.mail.default.from = "example@gmail.com"

dataSource.url = "jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true;TRACE_LEVEL_FILE=4"
dataSource.dbCreate = "update"
rundeck.projectsStorageType = "db"

Goovyファイルを書くのが初めてだったのでたまに文法エラーで時間食った。ドキュメントをよく読もう。
Groovy Language Documentation

デフォルトではrundeck-config.propertiesを読み込むようになっているので、rundeck-config.groovyを読み込ませるように以下の1行を/etc/rundeck/profileへ追記する。

RDECK_JVM='$RDECK_JVM -Drundeck.config.location=/etc/rundeck/rundeck-config.groovy'"

Rundekを再起動後、WebUIからジョブの作成ページのSend Notification?をYesにして、Send EmailのTo、Subjectを入力すればメール通知の設定は完了。
Attach output logを選択すると実行の過程で出力されたlogのtxtファイルがメールに添付されてくる。
f:id:equal_001:20160326185835p:plain

Mysqlを使用するための設定

デフォルトでは H2 Database が使用される。
公式ページにMysqlを使用するときの設定方法が書かれていたのでメモ。

MysqlにRundeckで使用するデータベースを作成する

mysql> create database rundeckdb;
Query OK, 1 row affected (0.00 sec)
mysql> grant ALL on rundeck.* to 'rundeckuser'@'localhost' identified by 'rundeckpassword';
Query OK, 1 row affected (0.00 sec)

rundeck-config.groovyにMysql接続のための設定を追記する

以下のように書く。

    :
dataSource.driverClassName="com.mysql.jdbc.Driver"
dataSource.url="jdbc:mysql://example.com/rundeckdb?autoReconnect=true"
dataSource.username="rundeckuser"
dataSource.password="rundeckpassword"
    :

mysql connector について

新しいバージョンのRundeckには デフォルトで/var/lib/rundeck/exp/webapp/WEB-INF/lib配下にmysql-connectorが置いてあるけど、もしMysqlがうまく動作しなかったりmysql-connectorが無い/デフォルトバージョンだと動かない場合は、MySQL :: Download Connector/J から mysql-connector-java-5.x.x-bin.jarをダウンロードして /var/lib/rundeck/server/lib/配下に設置するとよい。


上記の設定をしてRundeckを再起動したら設定完了。

テーブルはこんなかんじ。

mysql> show tables;
+----------------------------+
| Tables_in_rundeckdb        |
+----------------------------+
| auth_token                 |
| base_report                |
| execution                  |
| log_file_storage_request   |
| node_filter                |
| notification               |
| orchestrator               |
| plugin_meta                |
| project                    |
| rdoption                   |
| rdoption_values            |
| rduser                     |
| report_filter              |
| scheduled_execution        |
| scheduled_execution_filter |
| storage                    |
| workflow                   |
| workflow_step              |
| workflow_workflow_step     |
+----------------------------+
19 rows in set (0.00 sec)

mysqldumpしてプロジェクトとかジョブの情報を取っておくとよい。
でもresources.xmlの情報はこの中に入ってないので別途バックアップを取っておく必要がある。