【发布时间】:2019-01-11 09:23:45
【问题描述】:
如何将来自 rest curl 命令的 json 输出解析为 default.rb 文件中的属性值
用例:
在 Chef recipe Attributes --> attributes.rb 文件中具有以下默认属性,这些属性将被我的食谱使用,这些值需要使用 curl 命令随机生成,该命令以 json 输出的形式输出
default['agent']['id'] = 'F73D3CA4-!#!#-653A-XXXX-BBBBBB'
default['agent']['token'] = '90F1C7EA-*()*-YYYY-2528-ZZZZZZ'
这个值在配方中使用 --> act.rb 使用的语法
tenant_id = node['agent']['id']
token = node['agent']['token']
recipe 在recepie 中以下列方式使用tenant_id 和token
dsa_args << " \"tenantID:#{tenant_id}\" \"tenantPassword:#{token}\""
获取id和token的curl命令是:
curl --insecure -X GET -H "content-type: application/json" -H
"Accept: application/json" -d '{}'
https://XXX.XX.XXX.XX/rest/bat/rant/tenant?
name=Ante%20Data%20Wortyu%20Details
输出格式如下
{"id":"16","name":"Ante Data Wortyu Details","state":"ACTIVE", "tenantID":"F73D3CA4-!#!#-653A-XXXX-BBBBBB", "tenantPassword":"90F1C7EA-()-YYYY-2528-ZZZZZZ"}
如何将 json 格式的输出传递到我的 Chef Recipe 或属性文件中。
我通过以下链接完成了它,但它因未经授权的错误而失败:
https://www.twilio.com/blog/2015/10/4-ways-to-parse-a-json-api-with-ruby.html
非常感谢任何帮助。
谢谢,
【问题讨论】:
-
您确定请求返回有效的 JSON 数据吗?例如:tenantID 和 tenantPassword 必须在响应中的引号周围
-
输出不是有效的 JSON:tenantID 及其值没有被引号括起来。
-
进行了更改,复制/粘贴错过了值 " " : ""
-
包括测试请求和您的代码以使用 net http 类实现解决方案,谢谢
-
@Fabrizio Bertoglio,你有我可以参考的样品吗.......
标签: ruby-on-rails ruby chef-infra cookbook