【Rundeck】指定したトークンを作成する方法

2024年8月2日

当サイトはPR広告を利用しています。

RundeckにはAPI実行に利用できるトークンを作成する機能がありますが、基本的にトークンはRundeckが自動生成したものであり、どんなトークンになるかは発行するまで分かりません。

しかし指定したトークンを作成するやり方もあるので紹介します。はまりポイントもあるので最後までご確認よろしくお願いします。

環境

私はバージョン5.4.0の公式のRundeckのDockerイメージを利用して構築しています。

ローカルで運用している方向けの説明もしているので、安心して読み進めていただければと思います。

作成方法

以下の流れで設定します。

  1. トークンの内容を記載したファイルをRundeckサーバーの任意の場所に作成
  2. Rundeckの設定ファイルに作成したファイルのパスを指定
  3. Rundeckサーバーの起動

いずれのステップも簡単です。ここからそれぞれやり方を詳細に説明します。

トークンファイル作成

最初のステップがトークンの内容を記載したファイル(以後トークンファイル)の作成です。

トークンファイルは公式ページの中でtokens.propertiesという名称で作成していたので特にこだわりが無ければtokens.propertiesという名称で作成しましょう。以下のフォーマットで作成します。

ユーザー名: 指定したいトークン, トークンに設定するロール

デフォルトで作成されるadminユーザーに対してadminロールを持ったトークンを作成する場合は以下のような記載になります。

admin: tokendayo,admin

ちなみにトークンの長さに制限は無いようでした。私は検証として1文字から100文字のトークンを作成してみましたが、いずれも問題なく動作しました。

ここから先はdocker-hubで提供されている公式のRundeckイメージを利用している場合とそれ以外の運用とで流れが変わるので分けて説明します。

公式のRundeckイメージを利用した運用の場合

トークンファイルを作成したらRundeckにトークンファイルの場所を教えます。

Dockerで運用している場合、Rundeckの設定は基本的に環境変数で指定します。composeや起動時のオプションでRUNDECK_TOKENS_FILEという環境変数にトークンファイルへのパスを設定してください。

私の場合はcomposeで運用しているので以下のように指定しています。

RUNDECK_TOKENS_FILE=/home/rundeck/tokens.properties

指定したらDockerを起動して下さい。Dockerが起動し、Rundeckサーバーが起動したらトークンは作成された状態になります。

公式のRundeckイメージを利用していない運用の場合

ローカルやubuntuなどのDockerイメージをからDockerコンテナを立ててRundeckをインストールしている場合など、公式のRundeck Dockerイメージを利用していない場合の手順を記載します。

framework.propertiesというファイルが存在するはずなので見つけてください。以下のコマンドを実行すればファイルへのパスが分かります。

find / -name framework.properties

開いたらviなどでファイルを開き、以下の設定を行います。

rundeck.tokens.file=トークンファイルへのパス

rundeck.tokens.fileという項目が無ければ追記してください。

私の環境の場合は以下のように記載しています。

rundeck.tokens.file=/home/rundeck/tokens.properties

設定が完了したらRundeckサーバーを再起動してください。これでトークンが作成された状態になります。

作成されたかの確認

確認の仕方に一つ大きなはまりポイントがあります。

このやり方で作成したトークンはWeb画面上に表れないということです。作成されているトークンのリストを取得するAPIも存在しますが、それでも確認は不可です。(おそらくWeb画面やAPIで取得するトークンはデータベースに保存されているトークンのみで、今回のようにファイルで作成したトークンは対象外になっているからだと思います。)

画面で確認できない以上、実際に使って試すしかありません。

以下のスクリプトの変数の定義の日本語部分を環境に合わせて書き換えて実行してみてください。(LinuxOS用のものになっているので、Windowsで運用している方はごめんなさい。下記を参考にwindowsに作り変えてから実行をお願いします。)

#!/bin/bash

# 変数定義
EXISTING_API_TOKEN="作成したトークン"
USERNAME="作成したトークンの対象ユーザー"

# 既存プロジェクトの取得
curl -X GET \
  -H "X-Rundeck-Auth-Token: ${EXISTING_API_TOKEN}" \
  -H "Content-Type: application/json" \
  http://localhost:4440/api/41/projects

私の場合はtest.shという名称で、以下のファイルを作成して実行しました。

#!/bin/bash

# 変数定義
EXISTING_API_TOKEN="tokendayo"

# 既存プロジェクトの取得
curl -X GET \
  -H "X-Rundeck-Auth-Token: ${EXISTING_API_TOKEN}" \
  -H "Content-Type: application/json" \
  http://localhost:4440/api/41/projects

トークンファイルで作成したトークンを利用して作成済みのプロジェクトを参照するAPIを実行するスクリプトです。

実行した後に以下のようなレスポンスが返ってくる、もしくはプロジェクトが存在しない場合エラーが出力されていなければ成功です。

[
    {
        "url": "http://localhost:4440/api/48/project/sample_project",
        "name": "sample_project",
        "description": "これはサンプルプロジェクトです",
        "label": "",
        "created": "2024-08-07T16:10:45Z"
    }
]

以下のようにエラーレスポンスが返ってきていたら失敗です。タイポ等がないかよくご確認ください。

{
    "error": true,
    "apiversion": 48,
    "errorCode": "unauthorized",
    "message": "(Token:token****) is not authorized for: /api/41/projects"
}

まとめ

トークンファイルで作成したトークンは画面には表示されません。私はこのことを知らなかったので、解決までにかなりの時間を費やしてしまいました。この記事があなたのお役に立てたら幸いです。

直近でおすすめの本

直近十数冊読んだ中で一番おすすめの本です。

ビジネスデザイナーという肩書きを持つイノベーションシンキングの世界的第一人者である濱口秀司さんの書かれた本です。肩書きだけだとどのようなことをしている人か分かりにくいかもしれませんが、USBメモリやマイナスイオンドライヤーなど誰もが知る有名商品の産みの親の方です。

アメリカのコンサルタントの中でも最高額のコンサルティングフィーを受け取っている方で、私の友人から聞いた話だとこの人のコンサルティングを受けるためには1時間でも7桁の額は準備する必要があるとのことでした。

濱口秀司さんは自分の中でイノベーションを起こすための型を持っており、その型について本の中でかなり詳しく教えてくれています。革新的なアイデアを出す方法をここで詳細にはお伝えしませんが、とてもざっくりとまとめると以下の手順になります。

バイアスの特定→バイアスの破壊

革新とは現状の破壊です。現在世の中にあるバイアスを認知するところからアイデアの創出は始まります。この本ではバイアスを認知する方法、そして破壊する方法を詳しく述べてくれています。個人開発をしようとしているけど何を作れば良いか思い浮かばない方やや会社を立ち上げようとしている方に特におすすめの本です。

過去におすすめした本は以下の記事にまとめています。

インフラrundeck

Posted by ラプラス