Trying to Pass Dynamic Value to Rundeck Server

妖精的绣舞 提交于 2021-01-29 14:08:31

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!