问题
Variable(servicename) in rundeck, runningservices(sshd) I wanna pass here to rundeck server.
import requests
runningservice=sshd
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-Rundeck-Auth-Token': 'API',
}
data = '{"argString":"-servicename runningservice "}'
response = requests.post('http://IP:PORT/api/16/job/JOBID/executions', headers=headers, data=data)
回答1:
You can try in the following way:
Job definition with three options:
<joblist>
<job>
<context>
<options preserveOrder='true'>
<option name='opt1' value='hello' />
<option name='opt2' value='you' />
<option name='opt3' value='all' />
</options>
</context>
<defaultTab>nodes</defaultTab>
<description></description>
<executionEnabled>true</executionEnabled>
<id>062cbd2c-76b6-488b-874e-45fe9a6ea6d0</id>
<loglevel>INFO</loglevel>
<name>HelloWorld</name>
<nodeFilterEditable>false</nodeFilterEditable>
<plugins />
<scheduleEnabled>true</scheduleEnabled>
<sequence keepgoing='false' strategy='node-first'>
<command>
<exec>echo "${option.opt1} ${option.opt2} ${option.opt3}"</exec>
</command>
</sequence>
<uuid>062cbd2c-76b6-488b-874e-45fe9a6ea6d0</uuid>
</job>
</joblist>
Python code (check data section):
import requests
import pprint
# host definition
rdeck_instance = "localhost"
rdeck_port = "4440"
rdeck_api = "35"
rdeck_token = "aHbbJ98lhp9g6xU5HJ9T6qpgphPK19r3"
rdeck_action = "executions"
jobid = "062cbd2c-76b6-488b-874e-45fe9a6ea6d0"
# variable strings (for testing, in this case, you can put from the result from any source: another API call, fuzzy table output, etc.)
string1="one"
string2="two"
string3="three"
s = requests.Session()
r = s.post("http://" + rdeck_instance + ":" + rdeck_port +"/api/" + rdeck_api + "/job/" + jobid + "/" + rdeck_action + "?authtoken=" + rdeck_token,
headers = {"Accept" : "application/json"},
data = { "argString" : "-opt1 {} -opt2 {} -opt3 {}".format(string1, string2, string3)})
# json output
pprint.pprint(r.json())
Result:
{'argstring': '-opt1 one -opt2 two -opt3 three',
'date-started': {'date': '2020-08-11T13:45:23Z', 'unixtime': 1597153523995},
'description': 'echo "${option.opt1} ${option.opt2} ${option.opt3}"',
'executionType': 'user',
'href': 'http://localhost:4440/api/35/execution/16',
'id': 16,
'job': {'averageDuration': 406,
'description': '',
'group': '',
'href': 'http://localhost:4440/api/35/job/062cbd2c-76b6-488b-874e-45fe9a6ea6d0',
'id': '062cbd2c-76b6-488b-874e-45fe9a6ea6d0',
'name': 'HelloWorld',
'options': {'opt1': 'one', 'opt2': 'two', 'opt3': 'three'},
'permalink': 'http://localhost:4440/project/ProjectEXAMPLE/job/show/062cbd2c-76b6-488b-874e-45fe9a6ea6d0',
'project': 'ProjectEXAMPLE'},
'permalink': 'http://localhost:4440/project/ProjectEXAMPLE/execution/show/16',
'project': 'ProjectEXAMPLE',
'status': 'running',
'user': 'admin'}
来源:https://stackoverflow.com/questions/63353411/trying-to-pass-dynamic-value-to-rundeck-server