首页 > 解决方案 > Ansible 模块条件要求

问题描述

我目前正在用 python 编写我的第一个 Ansible 模块。我有类似的东西:

module_args = dict(
    foo=dict(type='str', required=True),
    bar=dict(type='str', required=True),
    is_bar=dict(type='bool', required=False, default=False)
)

它是一种告诉 Ansiblebar仅在is_bar设置为 True 时才需要的方法吗?或者我是否需要根据需要放置 bar 并检查我自己的代码?

谢谢

标签: pythonansible

解决方案


根据ansible docs AnsibleModule()接受一个required_if论点。

在您的情况下,这在初始化您的时意味着以下内容AnsibleModule()

module = AnsibleModule(
    argument_spec=dict(
        foo=dict(type='str', required=True),
        bar=dict(type='str'),
        is_bar=dict(type='bool', required=False, default=False),
    ),
    required_if=[
      ('is_bar', True, ('bar')),
    ]
    # ... and potentially other arguments
)

有关如何工作的详细说明,另请参见此处。required_if例如,您可以定义多个必需的参数(如果已传入另一个参数),并且还可以具有互斥的参数。


推荐阅读