Rundeck ~ Dockerで環境構築からSlack通知まで ~

# やること
  2. コンテナ起動
  3. プロジェクト / ジョブの作成
  4. Slack通知設定

# 環境

```
MacOS Catalina 10.15.4
Docker Desktop 2.3.0.2
```


# Dockerコンテナ起動

こちらのDockerイメージで。
現在最新のVersion 3.2.6 をつかいます。
https://hub.docker.com/r/jordan/rundeck/

```bash
docker run --rm -p 4440:4440 jordan/rundeck:3.2.6 
```

**docker run**
  
``` docker pull ``` と ``` docker create ``` と ``` docker start ``` を1発で行うやつ。
イメージがホストマシン上になければDocker Hubからpullしてきて、コンテナつくって、コンテナを起動します。
<br>

**-it**
-i と -tをまとめて書いてるものです。

**-i or --interactive**
=> ホスト側のシェルからコンテナ内を操作できるようにする。

**-t or --tty**
=> 仮想ttyの割当て。キーバインドを使用したり、色を出力したりシェル操作を便利に行うために指定。

こちらが非常にわかりやすいです。
https://teratail.com/questions/121780
https://teratail.com/questions/19477
https://teratail.com/questions/100044
<br>

**-p 4440:4440**

```ホスト側のポート番号```:```コンテナ側のポート番号``` をひも付けます。
ローカルのブラウザから```localhost:4440```でRundeckの設定画面を開けるようにします。
<br>


**--rm**

コンテナを停止したときに自動で削除もしてくれます。
<br>


# ログイン
ブラウザかlocalhost:4440にアクセス
※docker run してからアクセスできるようになるまで少しだけ時間がかかります（３０秒くらい？？）

<img width="502" alt="スクリーンショット 2020-05-20 8.32.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/47933122-7cbf-4ba0-1d0c-aa9df6bfb4e4.png">


> Username: admin
> Password: admin

でログイン
※ 初期設定がadmin

# プロジェクト作成
<img width="1429" alt="スクリーンショット 2020-05-20 8.36.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/8f3f1c62-d31a-6258-e961-16f0ba183cf7.png">

今回は名前だけ設定し作成

<img width="1437" alt="スクリーンショット 2020-05-20 8.41.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/da394770-2de8-d36d-7dda-6b9c98829530.png">



# SlackにAppをインストール
通知を可能にするために、Incomming WebhooksというアプリケーションをSlackへインストールします。

**■Slack■**
> サイドメニューのApp > `incomming webhooks` で検索 > 追加

or

> https://あなたのワークスペース.slack.com/apps/A0F7XDUAZ--incoming-webhook-?next_id=0

![スクリーンショット 2020-05-20 9.06.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/4439962c-ca0c-805d-8b8c-d70c1a27154b.png)


**■ブラウザ■**
ブラウザがひらくので、
> 右上のワークスペースを選択 > Slackに追加

<img width="1425" alt="スクリーンショット 2020-05-20 9.08.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/0097fcbb-4354-8e54-57de-505f6a7ef7d9.png">

> 通知先チャンネルを指定 > 追加

<img width="998" alt="スクリーンショット 2020-05-20 9.09.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/095079b7-682f-a921-cabc-720fa9feef41.png">

> Webhook URLをコピー

<img width="1072" alt="スクリーンショット 2020-05-20 9.12.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/2e4c08c8-1872-84cc-561a-24da6ccaba56.png">


**■Rundeck■**

Rundeckにもどり、Slack通知設定をします。

<img width="1437" alt="スクリーンショット 2020-05-20 8.47.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/cc83d70f-e77d-6cc7-0785-a1a20afa7def.png">

設定ファイルが開くので、末尾に以下の1行を追記

> project.plugin.Notification.SlackNotification.webhook_url=https://hooks.slack.com/services/FOO/BAR/hogefuga


※`https://hooks.slack.com/services/FOO/BAR/hogefuga`の部分がさっきコピーしたご自身のWebhook URLになります。

<img width="1437" alt="スクリーンショット 2020-05-20 8.48.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/99af404e-8654-ec3a-ce3c-d59097d51d0a.png">


## ジョブの作成

<img width="1434" alt="スクリーンショット 2020-05-21 5.36.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/693ef5bd-a4c8-c685-c26e-8dda8c7ddb50.png">

適当な名前をつけて

<img width="1434" alt="スクリーンショット 2020-05-21 5.37.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/118622f1-96e1-b5d0-fac8-8c5c0f3060c1.png">

Workflowタブで

<img width="1434" alt="スクリーンショット 2020-05-21 5.39.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/42328cdd-0fe0-7915-ee0d-abf4cd0207be.png">

いろいろなステップを追加できますが、今回はお手軽にコマンドで

<img width="1434" alt="スクリーンショット 2020-05-21 5.39.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/cf0eb585-10cf-bd89-ee64-a21042980dbb.png">

`pwd`でカレントディレクトリを表示させましょう。

<img width="1434" alt="スクリーンショット 2020-05-21 5.39.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/c4bb4666-efcd-323e-82d6-8ab25e81a7f8.png">

Scheduleタブから、時間やら定期実行やらをご自由に
※Cronの記法でも登録できます。

<img width="1434" alt="スクリーンショット 2020-05-21 5.40.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/77bee382-be16-baf5-fce3-ebf48a2ad4aa.png">

日本の方はタイムゾーンを `Asia/Tokyo` に

<img width="1434" alt="スクリーンショット 2020-05-21 5.40.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/bdb13e5b-93aa-3b8a-b9f4-3a9393167ab1.png">

Notificationsタブで通知設定をします。
成功時のSlackにチェックをいれます。

※今回はDockerイメージを利用しているので不要ですが、本来Slack通知を行うためにはプラグインファイルの設置などが必要になります。
参照: https://namionobkup.hatenablog.com/entry/2018/05/06/112439

※さきほどのWeb Hooks URLを設定しておかないと、以下の
`~ Override`の欄に記入しても無効でした。
こちらの記事に助けて頂きました:bow:
参照: https://obel.hatenablog.jp/entry/20190326/1553563656

<img width="1434" alt="スクリーンショット 2020-05-21 5.41.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/4e4731c1-e0ef-ef8e-286d-fcd41e5d26bb.png">

<img width="1434" alt="スクリーンショット 2020-05-21 5.41.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/726555ae-4421-4867-edd2-80dc4003a92d.png">

**ちなみに**
ここからすぐにジョブを実行することも可能です。

<img width="1434" alt="スクリーンショット 2020-05-21 5.42.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/13e94c60-9565-310b-b58b-fc3f8f06f727.png">

で、こんな感じでSlackに通知がきます

![スクリーンショット 2020-05-21 6.10.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/16e31eb6-84c5-5ba6-b857-9076648ff05c.png)



# さいごに
Dockerイメージが公開されているので、簡単に環境構築ができてありがたいです。
おしまい。