Rundeck3のインストール～セットアップ

cronではできないようなジョブスケジューリングをしたい、でも商用ジョブスケジューラーみたいに高機能じゃなくてもいい。
そんな製品を探していたときにRundeckを知りました。

エージェント製品をインストールする必要なく、リモートノードにはAnsibleみたいにSSHで接続しにいきます。

Rundeck3のインストール～初期セットアップまでのメモです。

# 環境

* CentOS 7.5
* Rundeck 3.0.9

# 事前準備

## サーバー

* Azureで仮想マシンを準備してますが、環境はAWSでもオンプレでもどこでもよいです。
* サーバーのIPを控えておきます。
* あとでプロパティにIPアドレスを入力するので、IPは静的に設定しておいたほうがよいです。

## ネットワークセキュリティグループ

* AzureだとNSG、AWSだとセキュリティグループで「4440:tcp」を許可しておきます。

# インストール

* yumでインストールします。

```
$ sudo rpm -Uvh http://repo.rundeck.org/latest.rpm
$ sudo yum install rundeck java
```

* framework.propertiesを開き、localhost部分をサーバーのIPアドレスに変更します

```
$ sudo vi /etc/rundeck/framework.properties
framework.server.name = localhost
framework.server.hostname = localhost
framework.server.url = http://localhost:4440
```

* rundeck-config.propertiesを開き、localhost部分をサーバーのIPアドレスに変更します

```
$ sudo vi /etc/rundeck/rundeck-config.properties
grails.serverURL=http://localhost:4440
```

* サービスを起動します。

```
$ sudo systemctl start rundeckd
```

* 以下URLにアクセスし、ログイン画面が表示されたらOKです。

```
http://[IP Address]:4440/
```

* ユーザ名admin、パスワードadminでログインします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/e951916b-18a4-50fc-f5a5-b7d9e968f3e1.png)

* 無事ログインできればOKです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/ede6e672-a540-ac4f-8092-94c30eb54e1f.png)

# 動作確認

## プロジェクト作成

* [New Project]ボタンを押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/3e126505-b869-6490-ff65-6bff9b10c0dd.png)

* 色々項目ありますが、とりあえず[Project Name]を適当に入力して、[Create]ボタンを押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/ec697677-d9fb-e4d2-8542-5ee93311123c.png)

* 次にノードの追加設定を行う画面がでますが、[Save]ボタンを押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/9c4490b8-ae06-1ef4-b7c9-9249a63fdefc.png)

## ジョブ作成

* [JOBS]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/6b2e7760-9f0d-9429-2e5f-047adabea006.png)

* [Job Actions]から[New Job]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/316df4a2-fe2f-cc05-f0d0-d9982257bcf0.png)

* [Job Name]を適当に入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/eaacba92-5fed-3697-0140-29af0a20e488.png)

* [Add a Step]の箇所で、[Command]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/4cf021c9-6d6f-84d2-a5b9-c26765c14fc5.png)

* 実行するコマンドはなんでもよいですが、ここではdateコマンドを実行することにします。[Save]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/fc7069fb-d935-6cae-8d0c-367786a3c88a.png)

* 一番下にいって[Create]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/bc2756a1-1c56-18db-f81e-0b4eefaac8c4.png)

## ジョブ実行

* [Run Job Now]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/b445564c-00f1-1eeb-e37b-9cde0031a9f5.png)

* 正常終了して、dateコマンドの実行結果が表示されていればOKです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/680a96a9-bd51-4368-ad0f-cd886c88e484.png)

# リモートノード追加

## マネージャーサーバー側

* project.propertiesを開き、末尾に追加します。

```
$ sudo vi /var/rundeck/projects/[Project Name]/etc/project.properties
末尾に以下追加
resources.source.1.type=file
resources.source.1.config.file=/var/rundeck/projects/${project.name}/etc/resources.xml
resources.source.1.config.format=resourcexml
resources.source.1.config.includeServerNode=true
resources.source.1.config.generateFileAutomatically=true
```

* resources.xmlを新規作成します。

```
$ sudo vi /var/rundeck/projects/[Project Name]/etc/resources.xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
  <node name="rundeck-agent1" type="Node"
        description="rundeck-agent1."
        hostname="[Remote Node IP Address]"
        username="rundeck"
        osFamily="unix"
        osName="Linux"
        osVersion="7.5"
        ssh-authentication="privateKey"
  />
</project>
```

* SSH公開鍵をcatで開き、表示された内容をメモっておきます。

```
$ sudo cat /var/lib/rundeck/.ssh/id_rsa.pub
```

## リモートサーバー側

ここからはリモートサーバー側の作業です。
マネージャーサーバーとはSSH接続ができるネットワーク環境であることを前提とします。

* ジョブ実行ユーザを作成します。

```
$ sudo useradd rundeck
```

* authorized_keysファイルを作り、先程メモした公開鍵の内容を貼り付けます。

```
$ sudo su - rundeck
$ mkdir .ssh
$ chmod 700 .ssh
$ vi .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
```

## ジョブ実行

* Rundeckジョブ作成時に、Nodesを[Execute locally]から[Dispatch to Nodes]に変更して、リモートノードで実行します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/443ecb27-5554-f469-15f4-dc70f45cce75.png)

# 参考にさせて頂いたサイト
[OSS ジョブスケジューラ(Rundeck)を自宅サーバに入れてみた Part2](https://qiita.com/legitwhiz/items/9f15d20282818c3687ba#13%E3%83%8E%E3%83%BC%E3%83%89%E8%BF%BD%E5%8A%A0)
[【Rundeck】プロジェクトへのnode追加メモ](https://qiita.com/toyottoyo/items/0ceb96c1454bc16d20ed)