我有一个自定义 Ansible 模块,它将 protocol
作为参数,并且它是强制参数。
module_args = dict(
protocol=dict(type='str', required=True),
protocol_metadata=dict(type='dict', default={})
)
在下面的任务中,如果我没有在protocol
中传递任何值,我的任务将接受它并在模块中将该值设置为None
。但如果我没有在 protocol
参数中传递任何值,我希望我的任务不接受 None
。如何限制 protocol
参数不接受 None
?
tasks:
- name: log api request
my_module:
protocol:
protocol_metadata:
url: "{{ server }}{{ endpoint }}"
最佳答案
您可以在 Python 中针对此类情况进行自己的验证,例如:
module_args = dict(
protocol=dict(type='str', required=True),
protocol_metadata=dict(type='dict', default={})
)
module = AnsibleModule(argument_spec=module_args)
params = module.params
protocol = params['protocol']
if not protocol:
module.fail_json("Please provide a non empty protocol")
这会产生
TASK [Log api request] ************************************************
fatal: [localhost]: FAILED! => changed=false
msg: Please provide a non empty protocol
关于ansible - 如何限制用户在自定义 Ansible 模块中的强制参数中传递空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72976189/