启动 Rundeck 服务时未加载 Rundeck 静态令牌

Rundeck Static Token not loaded when Rundeck Service is started

我认为我的 Rundeck 没有加载我的 tokens.properties 文件。我在加载 service.log 时看不到它。 Here is a screenshot of the log

这就是为什么当我重新启动服务或服务器我的计划作业时,会触发 Rundeck API,总是出现此错误

{"error":true,"apiversion":35,"errorCode":"api.error.item.unauthorized","message":"Not authorized for action \"Run\" for Job ID 109fd435-765f-4b7a-a547-0c5906c4a1f5"}

为了让它再次正常工作,我需要在每次重新启动 Rundeck 或服务器时生成一个新令牌。我已经将这一行包含在我的 framework.properties

rundeck.tokens.file=C:/rundeck/etc/tokens.properties

而在我的 tokens.properties 中,它只有 1 行,即

atrsdk-runner: token_string

如何使我的令牌永久化?我在这里错过了什么吗,我将如何解决这个问题?谢谢!

您需要在 tokens.properties 文件中添加角色。我在 Windows 机器上测试并以这种方式工作:

  1. 停止 Rundeck 服务。

  2. framework.properties文件上添加:

rundeck.tokens.file=C:/rundeck/tokens.properties
  1. realm.properties 文件中添加(仅用于测试的示例用户):
bob:bob,admin
  1. c:\rundeck\ 路径创建一个名为 tokens.properties 的文件,内容如下(我在行尾添加了角色):
bob: 12345, admin
  1. 启动 Rundeck 服务。

  2. 通过这个 API 调用,您可以 运行 使用自定义令牌的作业(检查 rdeck_token 变量,在外部 Linux 上测试主机运行宁cURL):

#!/bin/sh

# protocol
protocol="http"

# basic rundeck info
rdeck_host="10.0.1.81"
rdeck_port="4440"
rdeck_api="36"
rdeck_token="12345"

# specific api call info
rdeck_job="91c5b968-166f-4138-9345-580cd624adda"

# api call
curl -s --location --request POST "$protocol://$rdeck_host:$rdeck_port/api/$rdeck_api/job/$rdeck_job/run" \
  --header "Accept: application/json" \
  --header "X-Rundeck-Auth-Token: $rdeck_token" \
  --header "Content-Type: application/json"

现在,如果没有在 tokens.properties 文件中定义角色,我会得到你的错误(输出被 jq“美化”):

{
  "error": true,
  "apiversion": 36,
  "errorCode": "api.error.item.unauthorized",
  "message": "Not authorized for action \"Run\" for Job ID 91c5b968-166f-4138-9345-580cd624adda"
}

并且在 tokens.properties 文件中定义角色(成功):

{
  "id": 3,
  "href": "http://10.0.1.81:4440/api/36/execution/3",
  "permalink": "http://10.0.1.81:4440/project/ProjectBOB/execution/show/3",
  "status": "running",
  "project": "ProjectBOB",
  "executionType": "user",
  "user": "bob",
  "date-started": {
    "unixtime": 1603801591299,
    "date": "2020-10-27T12:26:31Z"
  },
  "job": {
    "id": "91c5b968-166f-4138-9345-580cd624adda",
    "averageDuration": 1727,
    "name": "HelloWorld",
    "group": "",
    "project": "ProjectBOB",
    "description": "",
    "href": "http://10.0.1.81:4440/api/36/job/91c5b968-166f-4138-9345-580cd624adda",
    "permalink": "http://10.0.1.81:4440/project/ProjectBOB/job/show/91c5b968-166f-4138-9345-580cd624adda"
  },
  "description": "echo \"hi\"",
  "argstring": null,
  "serverUUID": "2337f5f7-e951-47d2-ba62-f8c02a0bb8df"
}

并且here在Rundeck上执行。