如何将参数发送到 Azure Runbook api
Posted
技术标签:
【中文标题】如何将参数发送到 Azure Runbook api【英文标题】:How to send parameters to Azure runbook api 【发布时间】:2022-01-04 09:34:53 【问题描述】:我们使用 Scriptrunner 的 Azure 自动化和 groovy 脚本根据不同的 Runbook 创建不同的作业
为此,我们使用以下 API 调用示例
http.request(PUT)
requestContentType = ContentType.JSON
headers.'Authorization' = "Bearer " + AuthToken
body = ['properties': ['runbook': ['name': Runbook],'parameters':['Vm': Env], 'runOn': 'devops']]
当我们需要硬编码一个名为 Vm 的参数时,我们在这里格式化正文的方式工作正常,在我们的例子中,它是从一个 Env 参数字符串设置的
我们实际遇到的问题是body的这个parameters部分可以有多个单个参数和不同的参数名称。
例如,根据不同的用例,以下主体也是可能的:
body = ['properties': ['runbook': ['name': Runbook],'parameters':[**'Vm': Env, 'Path': absolute, 'Target':test01**], 'runOn': 'devops']]
我想要做的是构建参数部分有一个变量,然后我可以将它作为身体的一部分放置在下面
body = ['properties': ['runbook': ['name': Runbook],'parameters':[$paramList], 'runOn': 'devops']]
$paramList 是一个包含“'Vm': Env, 'Path': absolute, 'Target':test01”的字符串
由于某种原因它不起作用,我在构建该字符串并注入正文值的参数部分时错过了什么?
感谢您的帮助 问候
【问题讨论】:
我想你想要[... parameters: parameterList, ...]
你是什么意思?我想要做的是动态构建 json 数组“参数”的内容。我试图用“['vm': Env]”定义一个字符串,但它返回一个错误的请求错误。知道如何格式化该值以注入参数数组吗?
这不是字符串,而是 Groovy 中的 map-literal
@cfrick,你的意思是我需要将我的参数定义为: Map param=['Vm1': Env1,'Vm2': Env2] 然后 body = ['properties': ['runbook' : ['name': Runbook],'parameters':param, 'runOn': 'devops']],是这个意思吗?
@cfrick,我已将其更改为 Map 并将其注入体内,它按预期工作。非常感谢
【参考方案1】:
@cfrick 解释的解决方案是使用 Map 对象,如下所示。 我需要将我的动态参数定义为:
Map myParams=['Vm1': Env1,'Vm2': Env2]
然后将 Map 对象作为全局主体的一部分注入:
body = ['properties': ['runbook': ['name': Runbook],'parameters':myParams, 'runOn': 'devops']]
【讨论】:
以上是关于如何将参数发送到 Azure Runbook api的主要内容,如果未能解决你的问题,请参考以下文章
使用 python 将 azure Runbook 与 azure 中的文件共享连接起来
在 Azure Runbook 上运行“mysqldump”
如何使用 PowerShell Runbook 在 azure blob 存储上创建文本文件?