我是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测试环境。
如果您在我的模块中发现任何语法错误,请同时指出。
答案 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