您需要在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 变量,在运行 cURL 的外部 Linux 主机上测试):
#!/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 上的执行。