ansible - 如何限制用户在自定义 Ansible 模块中的强制参数中传递空值

标签 ansible

我有一个自定义 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/

相关文章:

ansible - 无法使用项目列表(数组)读取自定义事实

mysql - Ansible设置root用户密码

ansible - 为什么 `default( None )` 并不总是显示为 `None`

kubernetes - kubespray是否支持CentOS 8?

Ansible concat 默认变量和文字字符串

ansible - 在本地主机上运行 ansible playbook,但指的是库存的 group_var

ansible - 如何使用ansible设置现有的linux环境变量?

python - 让 Ansible 信任我在 macOS 和 CentOS 上的自定义 CA

Ansible-剧本: Failed to connect to the host via ssh: no such identity

ansible - 有没有办法从库存中覆盖 ansible ssh 用户进行播放?