Rundeckの実行ログをAPIから削除する

どうもこんにちわー

2ヶ月以上更新してなかったのでまずはリハビリとして軽いネタから行こうかなぁと思ってますw

皆さま、ジョブツール使ってますか? 私の会社ではRundeckというJavaオープンソースツールを構築して使ってます。

www.rundeck.com

スケジューラ機能あり、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作成画面へ
  • 項目のメッセージが以下のように変わっていれば設定が反映されている f:id:namio6243:20180505122232j:plain

  • 必要な項目を入力してAPI Token作成する

    • 「Expiration in」を0で設定すると有効期限が無期限になる
    • 作成したAPI Tokenはメモっておく
  • サーバ上に削除スクリプトを配置する

  • 配置した削除スクリプト(deleteoldlogs.py)の設定項目をいくつか修正

    • 先ほど取得したtokenもここに入力する(API_KEY)
    • EXPIRE_DAYSは実行ログの保存期間(下記例だと20日以前のログを削除)
    • rundeckのデフォルトPORTは4440なので、nginxなどのproxy経由してない場合はそっちに修正しとく
API_KEY='xx'
RUNDECKSERVER = 'http://127.0.0.1'
RUNDECKPORT='80'
EXPIRE_DAYS = 20
  • この削除スクリプトpythonのrequestsモジュールを利用しているのでインストールしてあげる
# pip install requests
  • pipが入ってない場合は下記も実行(すでにインストールされている場合は不要)
# curl -kL https://bootstrap.pypa.io/get-pip.py | python
  • 試しに実行してみる
[root@rundeck1 ~]# python deleteoldlogs.py
  • GUIから20日以前の実行ログが削除されていることを確認
    • 削除されていればOK!