如何将参数发送到 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 存储上创建文本文件?

我是否必须在powershell Runbook(azure)中导入模块?

如何将xml参数发送到WCF?

如何将参数发送到 HTTPService 调用以作为组件重用