本文介绍了尝试将动态值传递给Rundeck服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

rundeck中的变量(服务名),运行服务(sshd),我想将其传递给rundeck服务器.

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)

推荐答案

您可以通过以下方式尝试:

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代码(检查数据部分):

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())

结果:

{'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'}

这篇关于尝试将动态值传递给Rundeck服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 04:59