启动 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 机器上测试并以这种方式工作:
停止 Rundeck 服务。
在framework.properties
文件上添加:
rundeck.tokens.file=C:/rundeck/tokens.properties
- 在
realm.properties
文件中添加(仅用于测试的示例用户):
bob:bob,admin
- 在
c:\rundeck\
路径创建一个名为 tokens.properties
的文件,内容如下(我在行尾添加了角色):
bob: 12345, admin
启动 Rundeck 服务。
通过这个 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上执行。
我认为我的 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 机器上测试并以这种方式工作:
停止 Rundeck 服务。
在
framework.properties
文件上添加:
rundeck.tokens.file=C:/rundeck/tokens.properties
- 在
realm.properties
文件中添加(仅用于测试的示例用户):
bob:bob,admin
- 在
c:\rundeck\
路径创建一个名为tokens.properties
的文件,内容如下(我在行尾添加了角色):
bob: 12345, admin
启动 Rundeck 服务。
通过这个 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上执行。