使用存储在fs / disk上的json文件作为Ansible模块的输出

时间:2016-08-23 03:39:33

标签: python json ansible

我正在努力使用我需要创建的ansible模块。一切都完成后,模块会将json文件从第三方传送到fs。此json文件应该是(唯一)输出,以便能够访问以注册json文件并访问内容 - 或者至少使输出以某种方式正确访问。

输出文件包含一个正确的json文件,我尝试了各种方法来实现我的目标。

,包括:

  • 只需使用jsonprint打印os.stdout.write文件,因为根据文档,ansible只需stdout。< / p>

  • 导入json并转储正在使用json.dumps(data)或类似:

    with open('path-to-file', 'r') as tmpfile:
      data = json.load(tmpfile)
      module.exit_json(changed=True, message="API call to %s successfull" % endpoint, meta=data)
    
    • 这最终在输出中显示了json,但是在转义的变体中,ansible拒绝访问转义的部分。

使json数据可供进一步使用的正确方法是什么?

编辑:

json看起来像这样(嗯,这是一个巨大的json,这只是它的一部分):

{
  "total_results": 51,
  "total_pages": 2,
  "prev_url": null,
  "next_url": "/v2/apps?order-direction=asc&page=2&results-per-page=50",

register之后,debug输出如下所示,例如我无法访问output.meta.total_results

ok: [localhost] => {
    "output": {
        "changed": true, 
        "message": "API call filtering /v2/apps with name and yes-no was successfull", 
        "meta": "{\"total_results\": 51, \"next_url\": \"/v2/apps?order-direction=asc&page=2&results-per-page=50\", \"total_pages\": 2, \"prev_url\": null, (...)

尝试访问var时的ansible输出:

ok: [localhost] => {
    "output.meta.total_results": "VARIABLE IS NOT DEFINED!"
}

1 个答案:

答案 0 :(得分:0)

有趣。我使用os.stdout.write的测试以某种方式失败了,但使用print json.dumps(data)有效。

这已经解决了。