You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible 2.9.2自定义模块报错:'bool'对象无'get'属性

Fixing AttributeError in Custom Ansible Module: 'bool' object has no attribute 'get'

我一眼就发现问题出在你定义AnsibleModule的方式上——你把supports_check_mode=False错误地放到了argument_spec字典内部,而它应该是AnsibleModule类的独立初始化参数,不属于参数规范的一部分。

为什么会报错?

当Ansible解析模块的参数规范时,会默认对argument_spec里的每个键值对执行字典相关操作(比如.get()方法)。但你在这里塞了一个布尔值False,Ansible尝试对这个布尔值调用.get()方法,自然就触发了AttributeError: 'bool' object has no attribute 'get'这个错误。

修正后的模块代码

只需要把supports_check_mode=False从argument_spec里移出来,作为AnsibleModule的单独参数传入即可:

#!/usr/bin/python
from ansible.module_utils.basic import AnsibleModule

class AnsibleModuleTest(object):
    def __init__(self, var1, var2, var3, var4):
        self._var1 = var1
        self._var2 = var2
        self._var3 = var3
        self._var4 = var4

    def run(self, check):
        if check:
            return {"result": True, "data": {"var1": self._var1, "var2": self._var2, "var3": self._var3, "var4": self._var4}}
        else:
            return {"result": False, "error": "fail"}

def main():
    module = AnsibleModule(
        argument_spec=dict(
            var1=dict(required=True),
            var2=dict(required=True),
            var3=dict(required=False, default=None),
            var4=dict(required=False, default=None)
        ),
        supports_check_mode=False  # 移到这里作为独立参数
    )

    var1 = module.params["var1"]
    var2 = module.params["var2"]
    var3 = module.params["var3"]
    var4 = module.params["var4"]

    _test_module = AnsibleModuleTest(var1, var2, var3, var4)
    _returned_data = _test_module.run(True)

    if _returned_data["result"]:
        result = dict(msg=_returned_data["data"], changed=False)
        module.exit_json(**result)
    else:
        module.fail_json(msg=_returned_data["error"])

if __name__ == '__main__':
    main()

验证修复

重新运行你的测试Playbook:

ansible-playbook module_test.yml

现在模块应该能正常执行,返回的output会包含你传入的var1、var2,以及默认值为None的var3和var4。

内容的提问来源于stack exchange,提问作者Mark Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 13:07:42