Rundeck セットアップ

# tl;dr

- cronのようなジョブを管理しやすくしてくれるという rundeck のサーバをセットアップ。
- 内部dbは選択可能とのことだったので、 postgresql を使用。

### 環境

- CentOS Linux release 7.2.1511 (Core)
- rundeck 2.7.2
- PostgreSQL 9.6.3

### postgres9.6 インストール

<pre>
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
  
rpm -ivh pgdg-centos96-9.6-3.noarch.rpm
yum install postgresql96-server postgresql96-devel postgresql96-contrib

/usr/pgsql-9.6/bin/postgresql96-setup initdb
systemctl enable postgresql-9.6
systemctl stop postgresql-9.6
</pre>

### postgres9.6 設定調整

<pre>
vi /var/lib/pgsql/9.6/data/pg_hba.conf
※ジョブ実行対象のサーバと通信可能なようにする。

cp -pr /var/lib/pgsql/9.6/data /var/lib/pgsql/9.6/data_org
mount -t xfs /dev/sdb /var/lib/pgsql/9.6/data

cp -pr /var/lib/pgsql/9.6/data_org/* /var/lib/pgsql/9.6/data
chown -R postgres:postgres /var/lib/pgsql/9.6/data
chmod 700 /var/lib/pgsql/9.6/data

systemctl start postgresql-9.6
</pre>

### firewall開放

<pre>
systemctl status firewalld
firewall-cmd --add-port=4440/tcp --permanent
systemctl restart firewalld
</pre>

> vi /etc/fstab
<pre>
/dev/sdb                                  /var/lib/pgsql/9.6/data xfs     defaults        0 0
</pre>


### rundeck インストール

<pre>
rpm -Uvh http://repo.rundeck.org/latest.rpm
yum install -y rundeck
</pre>

### rundeck 設定

> vi /etc/rundeck/rundeck-config.properties

<pre>
#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://172.21.XX.XXX:4440

# dataSource.dbCreate = update
# dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true
dataSource.driverClassName = org.postgresql.Driver
dataSource.url = jdbc:postgresql://localhost/rundeck
dataSource.username=rundeckuser
dataSource.password=hogehoge
</pre>

> vi /etc/rundeck/framework.properties

<pre>
「loaclhost」を「172.21.XX.XXX」に変更
</pre>


### rundeck プラグイン（※ここは必須ではありません）

<pre>
cd /var/lib/rundeck/libext

wget https://github.com/higanworks/rundeck-slack-incoming-webhook-plugin/releases/download/v0.6.dev/rundeck-slack-incoming-webhook-plugin-0.6.jar

chown rundeck:rundeck rundeck-slack-incoming-webhook-plugin-0.6.jar
</pre>


### DBへrundeck db/userを追加

<pre>
sudo su postgres -c 'psql postgres'
CREATE ROLE rundeckuser WITH LOGIN PASSWORD 'hogehoge';

create database rundeck;
grant ALL privileges on database rundeck to rundeckuser;
</pre>

vi /var/lib/pgsql/9.6/data/pg_hba.conf
<pre>
local   all             all                                     trust     #peer
</pre>

<pre>
systemctl restart postgresql-9.6
</pre>


### rundeck 再起動

<pre>
systemctl stop rundeckd
</pre>

### 動作確認

http://172.21.XX.XXX:4440


セットアップ手順は以上です。
運用時は、この後ユーザー作成、SSL鍵作成等あります。

---
### トラブルシューティング

ブラウザでエラー画面になる場合…

<pre>
HTTP ERROR: 503
Problem accessing /user/login. Reason:

    Service Unavailable

</pre>

→エラーログを確認
> less /var/log/rundeck/service.log

観点

- DBドライバの設定ファイル（/etc/rundeck/rundeck-config.properties）の内容は正しい？
- rundeckuser ユーザーとrundeck dbは作成されている？ 
- 4440ポート空いている？

### その他参照

・公式
http://rundeck.org/docs/administration/setting-up-an-rdb-datasource.html
・用法
http://swfz.hatenablog.com/entry/2015/11/06/235658