Ошибка: модуль не может декодировать действительный JSON на стандартном вводе. Не удалось выяснить, какие параметры были переданы

Я пытаюсь написать новый доступный модуль в python.

Плейбук:

---
- 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" }}'

Однако при запуске playbook каждый раз я получаю следующую ошибку. У кого-нибудь есть идеи?

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"}

person ImGroot    schedule 27.04.2017    source источник


Ответы (1)


После сравнения с некоторыми другими модулями с аналогичной функциональностью. Я обнаружил, что проблема была в том, как я импортировал AnsibleModule.

Заменен AnsibleModule = ansible.module_utils.basic.AnsibleModule на импорт из ansible.module_utils.basic *

И после этого модуль, кажется, работает нормально, но все же на некоторых форумах я читал, что этот способ импорта (из ansible.module_utils.basic import *) устарел. Хотя на данный момент это решило мою проблему, я не уверен, что должно быть постоянным исправлением.

person ImGroot    schedule 27.04.2017