自定义 Ansible 模块在将列表作为参数传递时抛出不受支持的参数
Custom Ansible module throws unsupported arguments when passing list as parameter
我正在编写自定义模块,但是当我将类型作为列表并传递如下值时,出现错误
unsupported parameters
对于字符串类型,它工作正常。
如果在自定义模块中,我们已将类型声明为列表,那么传递列表参数的正确方法是什么?
用法:
- test_module:
url : 'htpp://xxxxx'
computers:
- a
- b
Modulexxxx.py
module_args = dict(
url==dict(type='str', required=True),
computers=dict(type='list', required=False)
)
据我所知,错误
Unsupported parameters for (test_module) module: computers
意味着您没有在对象 AnsibleModule
.
实例化的 argument_spec
中正确地提供您期望的参数
这里有一个 MVP 可以考虑你的论点:
test_module.py
#!/usr/bin/python
from ansible.module_utils.basic import AnsibleModule
def main():
module = AnsibleModule(
argument_spec=dict(
url=dict(type='str', required=True),
computers=dict(type='list', required=False),
)
)
params = module.params
module.exit_json(
received={'url': params['url'], 'computers': params['computers']},
changed=True
)
if __name__ == '__main__':
main()
运行 完成这对任务
- test_module:
url : 'htpp://xxxxx'
computers:
- a
- b
register: test
- debug:
var: test.received
这将产生:
TASK [test_module] ***********************************************************
changed: [localhost]
TASK [debug] *****************************************************************
ok: [localhost] =>
test.received:
computers:
- a
- b
url: htpp://xxxxx
我正在编写自定义模块,但是当我将类型作为列表并传递如下值时,出现错误
unsupported parameters
对于字符串类型,它工作正常。
如果在自定义模块中,我们已将类型声明为列表,那么传递列表参数的正确方法是什么?
用法:
- test_module:
url : 'htpp://xxxxx'
computers:
- a
- b
Modulexxxx.py
module_args = dict(
url==dict(type='str', required=True),
computers=dict(type='list', required=False)
)
据我所知,错误
Unsupported parameters for (test_module) module: computers
意味着您没有在对象 AnsibleModule
.
argument_spec
中正确地提供您期望的参数
这里有一个 MVP 可以考虑你的论点:
test_module.py
#!/usr/bin/python
from ansible.module_utils.basic import AnsibleModule
def main():
module = AnsibleModule(
argument_spec=dict(
url=dict(type='str', required=True),
computers=dict(type='list', required=False),
)
)
params = module.params
module.exit_json(
received={'url': params['url'], 'computers': params['computers']},
changed=True
)
if __name__ == '__main__':
main()
运行 完成这对任务
- test_module:
url : 'htpp://xxxxx'
computers:
- a
- b
register: test
- debug:
var: test.received
这将产生:
TASK [test_module] ***********************************************************
changed: [localhost]
TASK [debug] *****************************************************************
ok: [localhost] =>
test.received:
computers:
- a
- b
url: htpp://xxxxx