【Rundeck】君はwelcome-project-communityを知っているか！


# はじめに
今回もまたRundeckの話。
クソ記事にかなり片足突っ込んでる気がするが知らない人のほうが多いだろうし有用な人には有用だと思うので。
今回紹介するwelcome-project-communityはRundeck(pagerduty?)の中の人が作ってくれているサンプルプロジェクト。
内容的には大体知ってるようなものばかりだがなかには興味深いJobもあるのでいくつかピックアップしたいと思う。
また、このプロジェクトは自分のPC内にコンテナ起動させる想定で作られているがEC2で起動させる方法も記載する。
色々な事情で自PC内にコンテナ立てられない人っていると思うので。(例えば私のPCは緩やかに動かなくなってそして死ぬ)
なので本記事はRundeckに興味があってコンテナに詳しくない？人向け・・・ということになる。なかなかにニッチ。

# 画面を出すまで
まずEC2で適当なインスタンス立ててsshでログインする。
インスタンスタイプはあまりケチらずt3.mediumくらい使ったほうが快適。
(ずっとつかうものではないので)

### 必要なコンポーネントのインストール
```ruby:必要なコンポーネントのインストール
dnf -y install --nobest docker-ce docker-ce-cli git
systemctl enable docker
systemctl start docker
wget https://github.com/docker/compose/releases/download/1.25.5/docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
```

### welcome-project-communityの取得
```ruby:welcome-project-communityの取得と起動
git clone https://github.com/rundeck/welcome-project-community.git
```

### docker-compose.ymlの修正
このままだとRundeckにログインできても画面遷移ができないので以下を実行する。

```ruby:docker-composeの修正
cd welcome-project-community
vi docker-compose.yml
~省略~
RUNDECK_GRAILS_URL: http://[グローバルIP]:4440
~省略~
```
修正するのはRUNDECK_GRAILS_URLだけで大丈夫。

### welcome-project-communityのコンテナbuildと起動
```ruby:welcome-project-communityのコンテナbuildと起動
docker-compose build
docker-compose up -d
```

ここまでおわったらhttp://[グローバルIP]:4440でいつもの画面がでる。
アカウント/パスワードもいつもの「admin/admin」
![rundeck-login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/dc5ff0ae-182f-8247-fead-3ca5289af0c4.png)


### welcome-project-communityについて
ログインした状態はこんな感じ。「Welcome Project」を選択する。
![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/ce6ddc39-8a93-6c63-e333-aa3ed6c3d88e.png)

なんか微妙に見たことあるProjectPageが出る。このProjectHomePageいじってみたい。
![project.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/24f38c15-a7df-747e-fd80-e0c76f43c953.png)


ジョブの画面。コンテナ内にいくつかノードが立っているのでここにあるJobを実際に実行して動作をみることができるようになっている。
(特に意味はないがブラウザで翻訳いれた状態でSCとった)
![job.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/9d3a26e8-2bc9-27b3-9dd3-8a62e55affcb.png)

たとえば「Demo」→「Configration Jobs」配下の「Install Rundeck CLI」ジョブを実行してみる。
![Install Rundeck CLI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/7562785e-2eda-72c1-d9d5-9d5a110384e2.png)

この画面だとわからないが実際に「de33b40ef066」というノードにインストールしてくれている。
![Install Rundeck CLI-result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/2f8f464e-563b-4eee-4d18-0f9e77a4c674.png)

すこし変わった(マイナー？)Jobの作り方として「Variables」→「Variables in Job Steps」配下の「Using Step Data Variables」があった。
![Using Step Data Variables.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/93c50e1c-3e5d-2dba-7d6a-3b6ef014aef2.png)

実行してみると微妙にわからないがなにか変数を表示させている。
![Using Step Data Variables-result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/5829976d-ed41-d08a-823b-845a5b3761cf.png)

ジョブのworkflowを見てみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/cf2b6075-0e28-3899-c5db-13c7a772cdf1.png)

logifilterという機能(プラグイン？)を使ってJob内で新しく変数を定義している。
この場合だと「hostname」コマンドの出力をそのまま「MyKeyName」という変数に入れているようだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/26c840d8-950b-3871-dcc1-c4246373f30e.png)

別のJobではKey/value型で変数に取り込んでいた。こういう使い方もできるようだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1092362/fd056481-8d94-6c19-1186-71af742c4322.png)
このlogfilterという機能は非常に興味深いと思った。
このあたりが十全に使えるとJobの自由度が飛躍的に広がりそうな気がする。
いつかは実際にこの機能をつかった実用的なJobをなにか作りたいと思っている。

# あとがき

今回紹介した以外にも色々Jobは用意されているので意欲のある方は実際に見て触って試行錯誤してみてほしい。
もちろん私自身も対象なのだが少し別のことにかまけたいので。(こっちは記事にはならない気がする)
ただ今回気になったのはこのJob群Rundeck的に「Basic」なJobに分類されるらしいがどうして私は知らなかったのだろうか。
私だけなのだろうか・・・。
私はまた一つかなしみを背負った。