错误:模块无法解析stdin上的有效JSON。无法确定传递的参数

时间:2017-04-27 07:56:57

标签: ansible

我试图在python中编写一个新的ansible模块。

剧本:

---
- hosts: localhost
  gather_facts: no
  connection: local
  tasks:
    - name: db_configurator
      db_configurator: global_rpm='Test' user_home=/users/xpiwrk1/swjain

Module code:
    #    Initializing the module here which takes as input the required parameters from the playbook. 
    module = AnsibleModule(argument_spec=dict(
       global_rpm=dict(default=None),
       user_home=dict(default=None),
       ), 
       supports_check_mode=True)

    global_rpm = module.params['global_rpm']
    user_home = module.params['user_home']

当我使用python可执行文件直接运行模块时,模块工作正常,在命令行参数中输入所需的json参数。

python db_configurator.py '{"ANSIBLE_MODULE_ARGS": {    "global_rpm": "core.abp.amdocs.test:test_rpm",    "user_home": "/users/xpiwrk1/swjain" }}'

然而,每次在播放剧本时,我都会收到以下错误。有什么想法吗?

fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Error: Module unable to decode valid JSON on stdin.  Unable to figure out what parameters were passed"}

1 个答案:

答案 0 :(得分:0)

与其他具有类似功能的模块进行比较。我发现问题与我导入AnsibleModule的方式有关。

代替 AnsibleModule = ansible.module_utils.basic.AnsibleModule 同 来自ansible.module_utils.basic import *

在此之后模块似乎工作得很好,但是在我读过的一些论坛中,这种导入方式(来自ansible.module_utils.basic import *)已经被删除了。虽然它现在解决了我的问题,但我不确定应该永久修复什么。