ansible:本地测试新模块,错误:模块无法在stdin上解码有效的JSON。无法确定传递的参数

时间:2018-01-18 05:26:41

标签: python ansible

我是Python的新手。这是我的第一个Ansible模块,用于从ChaosMonkey删除中删除SimpleDB域。

在使用我的Mac OS X在我的本地venv进行测试时,它会一直说

  

模块无法在stdin上解码有效的JSON。无法弄清楚   什么参数通过。

以下是代码:

#!/usr/bin/python

# Delete SimpleDB Domain

from ansible.module_utils.basic import *
import boto3

def delete_sdb_domain():

    fields = dict(
           sdb_domain_name=dict(required=True, type='str')
    )

    module = AnsibleModule(argument_spec=fields)

    client = boto3.client('sdb')

    response = client.delete_domain(DomainName='module.params['sdb_domain_name']')  

    module.exit_json(changed = False, meta = response)


def main():

    delete_sdb_domain()  

if __name__ == '__main__':
    main()

我尝试从此文件传递参数:/tmp/args.json

并运行以下命令进行本地测试:

$ python ./delete_sdb_domain.py /tmp/args.json

请注意我在Mac上使用venv测试环境。

如果您在我的模块中发现任何语法错误,请同时指出。

1 个答案:

答案 0 :(得分:1)

这不是你应该如何测试你的模块 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping(value= {"/","/home/"}) public class MainController { @RequestMapping(value = {"products"},method=RequestMethod.GET) public String index() { return "Home.html"; } } 期望将特定的JSON作为stdin数据。

所以你可以尝试的最接近的事情是:

AnsibleModule

但我敢打赌你的json文件格式错误(没有python ./delete_sdb_domain.py < /tmp/args.json 等)。

要调试模块,您可以使用Ansible hacking pack中的ANSIBLE_MODULE_ARGS脚本:

test-module