のんびりSEの議事録

プログラミング系のポストからアプリに関してのポストなどをしていきます。まれにアニメ・マンガなど

EC2にRundeckをインストールしてみた

最近関わっている案件で、cronでは厳しいスケジューリングが必要なバッチがあり、そういえばRundeckがあったなと思い、それを検証したときの備忘録です。

Rundeckとは

OSSのジョブスケジューラでcrontとJenkinsのJobのいいとこ取りをしたような作りになっています。APIでの操作も可能。

インストール

EC2上(Amazon Linux2)にインストール

$ sudo yum install -y java-1.8.0
$ sudo rpm -Uvh https://repo.rundeck.org/latest.rpm
$ sudo yum install rundeck

設定

  • セキュリティグループで4440ポートを解放
  • EC2のIP or DNSをrundeckのserverURLを修正

  • /etc/rundeck/rundeck-config.properties

- grails.serverURL=http://localhost:4440
+ grails.serverURL=http://serverhost:4440

起動・GUI

$ sudo systemctl rundeckd start

http://serverhost:4440

デフォルトのユーザ・パスワードはadmin/admin

あとはプロジェクトを作成してJobを登録していく

プラグイン

RundeckはJenkinsのようにpluginを導入することができます rpmでインストールした場合、/var/lib/rundeck/libextにpluginのjarを入れて設定をしたら、導入出来ます

以下EC2上でとりあえず便利そうなのを紹介します

rundeck-ec2-nodes-plugin

EC2インスタンスをRundeck nodeとして簡単に扱うことが出来ます

以下GUI上での設定方

  1. Project Settings > Edit Nodesへ遷移
  2. Configure Nodes > Add Nodesをクリック
  3. AWS EC2 Resources を選択
  4. AWS KeyやIAM Role等は指定しなければRundeckインストールしたインスタンスのデフォルトRoleが使用される
  5. Endpointはリージョンの方ではなくエンドポイントの方を指定する(デフォルトではRoleに従って選定される)
  6. Filterではnode検索時のデフォルトフィルターを指定できる

Filterの指定例

タグとインスタンスタイプを指定したフィルター

tag:MyTag=Some Tag Value;instance-type=m1.small

rundeck-s3-log-plugin

Rundeckの実行ログをS3にも保存する

設定

  • /etc/rundeck/rundeck-config.properties
rundeck.execution.logs.fileStoragePlugin=org.rundeck.amazon-s3
  • /etc/rundeck/framework.properties
# bucketのリージョン(デフォルトus-east-1)
framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.region=region
# 保存先のbucket name
framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.bucket=test-rundeck-logs
# 保存先のパス
framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.path=logs/${job.project}/${job.execid}.log

注意点

どうやら実行時のログを消してS3にアップロードするわけではないようなので、実行時のログはローカルに残り続けてしまう。 そのため、logrotate等、検討が必要

参考文献