LoginSignup
2
3

More than 5 years have passed since last update.

Rundeck の実行ログを削除する

Last updated at Posted at 2018-07-17

Rundeck の実行ログを削除する

一部で OSS のジョブ管理ツール Rundeck を使っているのですが、過去の実行結果を残しておく用途が無いのと、ディスクサイズがカツカツなので、 週次で実行ログを削除するジョブを動かしています。

Rundeck の API リファレンス を読めば誰でも出来るんですが、もっと効率がいい方法があれば教えてもらいたいなぁ、と考えているので、うちでのやり方を公開します。

詳細

Token の取得

下記のスクリプトでトークンを取得し「.rundeck_token」というファイルに Token を残します。
トークン取得の API を実行すると xml が返ってくるので、awk と sed を使って、Token だけ抜き出してます。

#!/bin/bash

OLD_TOKEN=~/.rundeck_token
TMP_XML=/tmp/rundeck.xml
RUNDECK_URL="http://xxx.xxx.xxx.xxx/rundeck/api"
RUNDECK_AUTH_TOKEN="X-Rundeck-Auth-Token"

if [ -e ${OLD_TOKEN} ]; then
  GET_TOKEN=`cat ${OLD_TOKEN}`
else
  GET_TOKEN=$RD_OPTION_DEF_TOKEN
fi
echo "current token: ${GET_TOKEN}"

echo "get new token"
curl -s -X POST -H "${RUNDECK_AUTH_TOKEN}:${GET_TOKEN}" -H 'Content-Type:application/json' -d "{"user":"hoge", "roles":"*","duration":"30d"}" ${RUNDECK_URL}/11/tokens -o ${TMP_XML}
NEW_TOKEN=`xmllint --xpath "token" ${TMP_XML} |awk '{print substr($0, index($0, "id="))}' |sed -e 's/id="//g' |sed -e 's/"\/>//g'`
echo "new token: ${NEW_TOKEN}"
rm -rf ${TMP_XML}

if [ -e ${OLD_TOKEN} ]; then
  echo "delete current token"
  curl -s -X DELETE -H "${RUNDECK_AUTH_TOKEN}:${NEW_TOKEN}" ${RUNDECK_URL}/11/token/${GET_TOKEN}
fi
echo ${NEW_TOKEN} > ${OLD_TOKEN}

実行結果削除 API の実行

上記で生成した Token を使って、この API を呼び出しています。
"$RD_OPTION_TGT_UUID" は、↓で説明しますが、削除対象の UUID を受け取っています。

#!/bin/bash

TOKEN_FILE=~/.rundeck_token
RUNDECK_URL="http://xxx.xxx.xxx.xxx/rundeck/api"
RUNDECK_AUTH_TOKEN="X-Rundeck-Auth-Token"

if [ -e ${TOKEN_FILE} ]; then
  GET_TOKEN=`cat ${TOKEN_FILE}`
else
  GET_TOKEN=$RD_OPTION_DEF_TOKEN
fi

echo "delete uuid ${RD_OPTION_TGT_UUID}"
curl -s -X DELETE -H "${RUNDECK_AUTH_TOKEN}:${GET_TOKEN}" ${RUNDECK_URL}/12/job/${RD_OPTION_TGT_UUID}/executions

UUID の渡し方

上記の削除 API には、対象 Job の UUID が必要となります。
下図のような感じで、削除 API を別 Job にして、UUID を渡してあげるような仕組みにしています。
Rundeck   Edit Job.png

悩んでいる点

もっといいやり方無いですかね?
特に UUID 周り。Job の増減がある度に、変更が必要になるので面倒。。。

仲間募集中

弊社ではエンジニアを募集中です。インフラからアプリ、ユーザサポートまで幅広く業務を行ってます。
https://www.nittsu-infosys.com/recruit/2019/index.html

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3