Ubuntu 18.04 LTS + MariaDB 10.1な環境へRundeckをインストールする

Ubuntu 18.04LTSへRundeckをインストールする方法です。DBMSはMariaDB 10.1を使用します。
なお、MariaDBはRundeck専用で、他の用途には共有しないものとします。

## OpenJDK 8のインストール
以下のコマンドを実行し、OpenJDK 8をインストールします。

```
# apt update 
# apt install openjdk-8-jdk-headless
```

## MariaDB 10.1のインストール
以下のコマンドを実行し、MariaDB 10.1をインストールします。

```
# apt install mariadb-client mariadb-server
```

インストール後、mariadbサービスが起動していることを確認し、```mysql_secure_installation```を実行し、MariaDBの初期設定を行います。


## my.cnfの編集

```/etc/mysql/conf.d/my.cnf``` を編集します。
※innodb_buffer_pool_sizeと、innodb_log_file_sizeは環境や運用に合わせて調整します。

``` /etc/mysql/conf.d/my.cnf
[mysql]

[mysqld]
innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M
innodb_file_format = barracuda
innodb_file_format_max = barracuda
innodb_file_per_table = true
innodb_large_prefix = true
```

設定後、mariadbサービスを再起動します。

再起動後、mysqlコマンドでMariaDBのCLIツールに入り、```SHOW GLOBAL VARIABLES LIKE '%innodb_file_%';```を実行し、上記設定が反映されたことを確認します。設定が反映されない場合は複数回mariadbサービスを再起動します。

次に、MariaDBのCLIツールで以下のクエリを実行します。
（Rundeckサービス起動時における、Caused by: java.sql.SQLException: Index column size too large. The maximum column size is 767 bytes. 対応）

```
mysql> SET GLOBAL innodb_default_row_format=dynamic;
```

## Rundeck用データベースおよびユーザーの作成
https://docs.rundeck.com/docs/administration/configuration/database/mysql.html を参考に、データベースとユーザーを作成します。

```
mysql> create database rundeck;
mysql> grant ALL on rundeck.* to 'rundeckuser'@'localhost' identified by 'rundeckpassword';
```

## Rundeckのインストール

まず、Ubuntu/Debian用のRundeckリポジトリを追加します。
（https://bintray.com/rundeck でホストされているリポジトリを使用します）
あわせて、GPG Public Keyも追加します。

```
# echo "deb https://rundeck.bintray.com/rundeck-deb /" | sudo tee -a /etc/apt/sources.list
# curl 'https://bintray.com/user/downloadSubjectPublicKey?username=bintray' | sudo apt-key add -
```

次に、Rundeckをaptよりインストールします。

```
# apt update
# apt install rundeck
```

## MariaDB Connector/Jのダウンロードと配置
https://mariadb.com/downloads/#connectors からMariaDB Connector/Jの最新版を（2019/6/13時点においては2.4.1）ダウンロードします。

ダウンロード後、```/var/lib/rundeck/lib```ディレクトリへファイルを配置します。（```/var/lib/rundeck/lib```ディレクトリが存在しない場合は事前に作成します）

## Rundeckの設定

```/etc/rundeck/rundeck-config.properties``` を以下のように編集します。

```/etc/rundeck/rundeck-config.properties
#loglevel.default is the default log level for jobs: ERROR,WARN,INFO,VERBOSE,DEBUG
loglevel.default=INFO
rdeck.base=/var/lib/rundeck

#rss.enabled if set to true enables RSS feeds that are public (non-authenticated)
rss.enabled=false
# change hostname here
grails.serverURL=http://<RundeckサーバのFQDNまたはIPアドレス>:4440
dataSource.dbCreate = update
dataSource.url = jdbc:mysql://localhost/<Rundeck用のMariaDBデータベース名>?autoReconnect=true&useSSL=false
dataSource.username = <Rundeck用のMariaDBユーザーのユーザー名>
dataSource.password = <Rundeck用のMariaDBユーザーのパスワード>
rundeck.log4j.config.file = /etc/rundeck/log4j.properties
dataSource.driverClassName=org.mariadb.jdbc.Driver
```

次に、```/etc/rundeck/framework.properties``` を以下のように編集します。

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

framework.server.name = <RundeckサーバのFQDNまたはIPアドレス>
framework.server.hostname = <RundeckサーバのFQDNまたはIPアドレス>
framework.server.port = 4440
framework.server.url = http://<RundeckサーバのFQDNまたはIPアドレス>:4440
```

設定後、rundeckdサービスを再起動します。
再起動後、```/var/log/rundeck/service.log``` にエラーが出力されていないことを確認し、Webブラウザより```http://<RundeckサーバのFQDNまたはIPアドレス>:4440``` にアクセスし、動作を確認します。

## サービス自動起動の有効化
以下のコマンドを実行し、mariadbおよびrundeckdサービスの有効化を行います。

```
# systemctl enable mariadb
# systemctl enable rundeckd
```