Rundeckインストールと設定メモ

#はじめに
『[Rundeck](http://rundeck.org/)』とは、オープンソースなジョブ管理ソフトウェアです。
GUIやAPIを介してジョブの作成、実行、管理、スケジューリングを行うことができます。
仕事では、主に基幹DBからRedshiftへのデータインテグレーションを目的に、『[Talend Open Sutudio](https://jp.talend.com/products/talend-open-studio)』と併用して運用しています。

※2017/08/31 追記
CentOS7版＆自動セットアップスクリプトを[投稿](http://qiita.com/nagase/items/d2763936499e2045d987)しました。

#前提条件
- CentOS 6.5上にインストールします。
- Rundeckのホスト名は"rundeck.example.jp"、IPアドレスは"192.168.1.100"と想定します。
- バックエンドDBをデフォルトのH2 DatabaseからMariaDBに変更します。またMariaDBはRundeckと同一サーバで稼働しているものとします。
- アクセスURLにポート番号(4440)を省略できるよう、Apacheと連携させます。またApacheはRundeckと同一サーバで稼働しているものとします。

#インストール
##JRE7のインストール
Oracle JRE7以上でも動作すると思われます。（実際に本番環境ではOracle JRE8で動作させています）

```
# yum install java-1.7.0
```
##Rundeckリポジトリの追加
```
# rpm -ivh http://repo.rundeck.org/latest.rpm 
# sed -i -e 's/^enabled=1$/enabled=0/g' /etc/yum.repos.d/rundeck.repo
```
##Rundeck本体のインストール
```
# yum install rundeck --enablerepo=rundeck-release-bintray
```
##MariaDBにデータベースとユーザーの追加
バックエンドDBをデフォルトの H2 Database から MariaDB に変更する為、MariaDB にデータベース(rundeckdb)と、データベースへのアクセス権を持つユーザー(rundeckuser)を作成します。
※MariaDBのインストールと設定手順は割愛します。

```
$ mysql -u root -p
Enter password: (rootパスワード入力)
> CREATE DATABASE rundeckdb DEFAULT CHARACTER SET utf8;
> GRANT ALL PRIVILEGES ON rundeckdb.* TO rundeckuser@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
> \q
```

##rundeck-config.properties の変更
バックエンドDB関連の設定を変更します。

```bash:/etc/rundeck/rundeck-config.properties
#grails.serverURL=http://localhost:4440　←コメントアウト
#dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true;TRACE_LEVEL_FILE=4  ←コメントアウト
#以下追記
rundeck.v14.rdbsupport = true
grails.serverURL=http://rundeck.example.jp:4440
dataSource.url = jdbc:mysql://localhost/rundeckdb?autoReconnect=true
dataSource.username = rundeckuser
dataSource.password = password
```

##framework.properties の変更
デフォルトの localhost から Rundeckのホスト名（またはIPアドレス）に変更します。

```bash:/etc/rundeck/framework.properties
#framework.server.name = localhost  ←コメントアウト
#framework.server.hostname = localhost  ←コメントアウト
#framework.server.url = http://localhost:4440  ←コメントアウト
#以下追記
framework.server.name = rundeck.example.jp
framework.server.hostname = rundeck.example.jp
framework.server.url = http://rundeck.example.jp:4440
```

##自動起動の設定とRundeckの起動
```
# chkconfig rundeckd on
# service rundeckd start
```

ブラウザから `http://rundeck.example.jp:4440/` にアクセスします。
尚、デフォルトの管理者ユーザーとパスワードは、それぞれ"admin"となります。


#Apacheとの連携
Apache自体はRundeckと同一サーバ上でインストールから起動まで完了しているものとします。
##profileの変更
Java起動パラメータに"-Dserver.web.content"を追加します。

```bash:/etc/rundeck/profile
･･･
export RDECK_JVM="-Djava.security.auth.login.config=/etc/rundeck/jaas-loginmodule.conf \
        -Dloginmodule.name=RDpropertyfilelogin \
        -Drdeck.config=/etc/rundeck \
        -Drdeck.base=/var/lib/rundeck \
        -Drundeck.server.configDir=/etc/rundeck \
        -Dserver.datastore.path=/var/lib/rundeck/data \
        -Drundeck.server.serverDir=/var/lib/rundeck \
        -Drdeck.projects=/var/rundeck/projects \
        -Drdeck.runlogs=/var/lib/rundeck/logs \
        -Dserver.web.context=/rundeck \            ←追加
        -Drundeck.config.location=/etc/rundeck/rundeck-config.properties \
        -Djava.io.tmpdir=$RUNDECK_TEMPDIR"
･･･
```

##framework.propertiesの変更
```bash:/etc/rundeck/framework.properties
#framework.server.url = http://rundeck.example.jp:4440    ←コメントアウト
framework.server.url = http://rundeck.example.jp/rundeck  ←追加
```

##rundeck-config.propertiesの変更
```bash:/etc/rundeck/rundeck-config.properties
#grails.serverURL=http://rundeck.example.jp:4440    ←コメントアウト
grails.serverURL=http://rundeck.example.jp/rundeck  ←追加
```

##Rundeckの再起動
```
# service rundeckd restart
```

##/etc/httpd/conf.d/rundeck.confを作成
```apache:/etc/httpd/conf.d/rundeck.conf
<Location "/rundeck">
        ProxyPass http://localhost:4440/rundeck
        ProxyPassReverse http://localhost:4440/rundeck
</Location>
```

##Apacheの再起動
```
# service httpd restart
```
ブラウザから `http://rundeck.example.jp/rundeck` にアクセスします。


#Rundeckを日本語化する方法
{Rundeckインストールディレクトリ}/exp/webapp/WEB-INF/grails-app/i18n に移動します。

```
# cd /var/lib/rundeck/exp/webapp/WEB-INF/grails-app/i18n
```

オリジナルの言語設定ファイル(messages.properties)を、日本語設定ファイル(messages_ja.properties)にコピーします。

```
# cp messages.properties messages_ja.properties
```

messages_ja.propertiesを編集し、各パラメータを日本語化していきます。

**[注意]
UTF-8でそのままマルチバイト文字で記述すると文字化けします。**([参考1](https://github.com/rundeck/rundeck/issues/967)、[参考2](http://stackoverflow.com/questions/4659929/how-to-use-utf-8-in-resource-properties-with-resourcebundle))
**マルチバイト文字（全角）はUnicodeエスケープして記述してください。**
ちなみに[ここのようなサイト](http://www.koikikukan.com/archives/2013/07/01-012345.php)を利用すれば、日本語を簡単にUnicodeエスケープに変換できます。


変更例）

```bash:/var/lib/rundeck/exp/webapp/WEB-INF/grails-app/i18n/messages_ja.properties
･･･
# main menu item names
gui.menu.Workflows=Jobs
gui.menu.Events=Activity
gui.menu.Nodes=Nodes
gui.menu.Adhoc=Commands
gui.menu.Admin=Configure
･･･
```
↓↓↓↓↓↓

```bash:/var/lib/rundeck/exp/webapp/WEB-INF/grails-app/i18n/messages_ja.properties
･･･
# main menu item names
gui.menu.Workflows=\u30b8\u30e7\u30d6     #ジョブ
gui.menu.Events=\u30a4\u30d9\u30f3\u30c8  #イベント
gui.menu.Nodes=\u30ce\u30fc\u30c9         #ノード
gui.menu.Adhoc=\u30b3\u30de\u30f3\u30c9   #コマンド
gui.menu.Admin=\u8a2d\u5b9a               #設定
･･･
```

messages_ja.propertiesを編集後、Rundeckを再起動します。

```
# service rundeckd restart
```

##余談
Rundeckの国際化対応は完ぺきではなく、まだまだハードコードされている部分があるそうです。(https://github.com/rundeck/rundeck/wiki/Internationalization)
どうしてもハードコードされている部分も日本語化したい場合には、下記ディレクトリ以下から拡張子が".gsp"
のファイルを探し出して、ゴニョゴニュすればできる（かもしれません）。

/var/lib/rundeck/exp/webapp/WEB-INF/grails-app/views/