我试图在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"}
答案 0 :(得分:0)
与其他具有类似功能的模块进行比较。我发现问题与我导入AnsibleModule的方式有关。
代替 AnsibleModule = ansible.module_utils.basic.AnsibleModule 同 来自ansible.module_utils.basic import *
在此之后模块似乎工作得很好,但是在我读过的一些论坛中,这种导入方式(来自ansible.module_utils.basic import *)已经被删除了。虽然它现在解决了我的问题,但我不确定应该永久修复什么。