Rundeckとは
RundeckはOSSのジョブスケジューラーです。
ノード間で簡単に自動化されたタスクを実行できます。
なぜRundeck??
世間では、 ジョブスケジューリングに関してcrond
をつかったり
Kubernetesを使っている際はCronJob
使いますよね?
ただ、これらを用いる際、
- Slack通知は⾃分で作り込む必要がある
- ジョブの並列実⾏がぎこちない。。。
などがあります。
Rundeckでは、
上記のことが、簡単にでできるうえに
ジョブの成功/失敗をメールやSlackに通知できる
ログをWebUI上で⾒られるようできる
これは使うしかないでよね!
hands-on
今回は簡単にさわれるように、dockerにデプロイして、実際に時間に合わせて、ジョブを打ってみます。
インストール
まず作業用ディレクトリを作成して、その中で作業しましょう。
# mkdir rundeck
以下のファイルを作ります。
version: '3'
services:
rundeck:
image: rundeck/rundeck:SNAPSHOT
hostname: rundeck
links:
- mysql
environment:
RUNDECK_DATABASE_DRIVER: com.mysql.jdbc.Driver
RUNDECK_DATABASE_USERNAME: rundeck
RUNDECK_DATABASE_PASSWORD: password
RUNDECK_DATABASE_URL: jdbc:mysql://mysql/rundeck?autoReconnect=true&useSSL=false
RUNDECK_GRAILS_URL: http://<サーバのIP>:4440
volumes:
- ${RUNDECK_LICENSE_FILE:-/project/null}:/home/rundeck/etc/rundeckpro-license.key
- /root/project/rundeck/projects/:/home/rundeck/projects/
- /root/project/rundeck/scripts:/home/rundeck/scripts/
- /root/.ssh:/home/rundeck/.ssh/
- /etc/hosts:/etc/hosts
ports:
- 4440:4440
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=rundeck
- MYSQL_USER=rundeck
- MYSQL_PASSWORD=password
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
RUNDECK_GRAILS_URL
には気を付けてください。
自分の環境ではNAT越しにアクセスをしているので、[NATのIP]:[フォワーディングしたport]を設定しました。
例えば、ここで間違えてdocker serverののprivate IPを書いた場合、最初のログイン画面で「login」を押すと、docker serverのprivate IPにリダイレクトされて見れなくなります。
その後、
# mkdir projects
# mkdir scripts
確認します。
# ls rundeck
docker-compose.yml projects scripts
コンテナの立ち上げ
# docker-compose up -d
Rundeckの操作
ログイン
では、ログインしていきましょう。
projectの作成
新しいプロジェクト
よりプロジェクトを作ります。
今回は、ここのdefaultのみ埋めるだけで大丈夫です。
そしたら、作成
を押します。
jobの作成
左のジョブ
タブを選択します。
そしたら、新しいジョブの作成
を選択します。
1. default
まず、job名
を入力します。
説明は
必要に応じて埋めてください。
2. workflow
複数のステップを用意する場合は、ワークフローで
- 失敗したステップで停止する。
- 残りのステップを実行する。
を選択してあげてください。(defaultは「失敗したステップで停止する。」)
ここでは、jobを実行する際の基盤を選択し、そのうえで実行するjobを定義します。
- command
- sctipt
等のような、簡易的なものだけでなく
- Ansible playbook
なども用意されています。
Nodes
今回はlocalで行うのでそのままです。
リモートのサーバを登録していて、そちらを用いる場合は、ノードに割り当てる
を選択します。
Schedule
ここで、スケジューリングの設定を行います。
時間の記述タイプは、
- simple
- crontab
の2つが用意されています。
Notificatoin
こちらは、必要に応じて設定してください。
作成したjobの確認
こんな感じに表示されます。
jobの実行後
jobが実行された後は、このようにアクティビティが増えていきます。
日付にカーソルを当て、選択しましょう。
このように今回実施されたjobの詳細情報が記述されています。
ログ出力
を選択すると、以下のように今回打ったls
の結果が表示されています。
うまく、ジョブスケジューリングが働きました。