Rundeckの実行ログをAPIから削除する
どうもこんにちわー
2ヶ月以上更新してなかったのでまずはリハビリとして軽いネタから行こうかなぁと思ってますw
皆さま、ジョブツール使ってますか? 私の会社ではRundeckというJava製オープンソースツールを構築して使ってます。
スケジューラ機能あり、GUIあり、ワークフローも組めて便利なんですが、 オープンソースだけあっていくつか考慮しないといけない点があります。 その一つとして、実行ログの削除機能がGUIからの設定項目ではないようで(私が気づいてないだけ?の可能性もあるので知ってたら教えてくださいmm) ただ、実行ログを削除するAPIは用意されておりますので、そちらを使ってやると削除可能です。
検証環境
設定手順
- (API Tokenの有効期限を30日以上で設定したい場合)事前に下記のように設定を入れる
- これ入れないと30日以上で期限が設定できないので設定推奨
[root@rundeck1 ~]# cat /etc/rundeck/rundeck-config.properties 〜〜省略〜〜 rundeck.api.tokens.duration.max = 0
- rundeck再起動(設定反映)
[root@rundeck1 ~]# systemctl restart rundeckd
- ログイン後のGUI画面の右上のProfileボタンからUser API Tokens作成画面へ
項目のメッセージが以下のように変わっていれば設定が反映されている
必要な項目を入力してAPI Token作成する
- 「Expiration in」を0で設定すると有効期限が無期限になる
- 作成したAPI Tokenはメモっておく
サーバ上に削除スクリプトを配置する
- 私はこのお方のスクリプトを拝借しましたmm github.com
配置した削除スクリプト(deleteoldlogs.py)の設定項目をいくつか修正
API_KEY='xx' RUNDECKSERVER = 'http://127.0.0.1' RUNDECKPORT='80' EXPIRE_DAYS = 20
# pip install requests
- pipが入ってない場合は下記も実行(すでにインストールされている場合は不要)
# curl -kL https://bootstrap.pypa.io/get-pip.py | python
- 試しに実行してみる
[root@rundeck1 ~]# python deleteoldlogs.py