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
デフォルトのユーザ・パスワードはadmin/admin
あとはプロジェクトを作成してJobを登録していく
プラグイン
RundeckはJenkinsのようにpluginを導入することができます
rpmでインストールした場合、/var/lib/rundeck/libext
にpluginのjarを入れて設定をしたら、導入出来ます
以下EC2上でとりあえず便利そうなのを紹介します
rundeck-ec2-nodes-plugin
EC2インスタンスをRundeck nodeとして簡単に扱うことが出来ます
以下GUI上での設定方
- Project Settings > Edit Nodesへ遷移
- Configure Nodes > Add Nodesをクリック
- AWS EC2 Resources を選択
- AWS KeyやIAM Role等は指定しなければRundeckインストールしたインスタンスのデフォルトRoleが使用される
- Endpointはリージョンの方ではなくエンドポイントの方を指定する(デフォルトではRoleに従って選定される)
- 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等、検討が必要