自定义 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