欢迎访问宙启技术站
智能推送

了解ansible.module_utils.basic中的AnsibleModule()的基本用法

发布时间:2024-01-04 04:02:28

AnsibleModule 是 Ansible 提供的一个基本对象,用于编写和执行 Ansible 模块。它提供了一些方便的方法和属性,以便于模块编写和执行时的数据交互。

首先,我们需要导入 AnsibleModule 对象:

from ansible.module_utils.basic import AnsibleModule

接下来,我们可以创建一个 AnsibleModule 对象并传入一些基本的参数:

module = AnsibleModule(
    argument_spec=dict(
        name=dict(type='str', required=True),
        age=dict(type='int', required=False, default=18)
    )
)

在这个例子中,我们定义了两个参数,一个是 name,一个是 age。name 是必须的,age 是可选的,默认值为 18。这些参数可以在执行模块时通过命令行传递进来。

接下来,可以使用 AnsibleModule 对象的一些方法来获取和操作参数:

name = module.params['name']
age = module.params['age']

这样就可以获取到传入的参数值。

在执行模块的过程中,我们可以根据实际情况使用模块的一些方法来完成相应的工作和返回结果。对于常见的模块执行结果,可以使用以下方法来返回:

module.exit_json(changed=False, result={'msg': 'ok'})
module.fail_json(msg='something went wrong')

在这个例子中,我们使用 module.exit_json() 来返回执行结果,其中 changed=False 表示没有发生任何改变,result={'msg': 'ok'} 表示执行结果为成功。

完整的模块示例代码如下:

from ansible.module_utils.basic import AnsibleModule

def main():
    module = AnsibleModule(
        argument_spec=dict(
            name=dict(type='str', required=True),
            age=dict(type='int', required=False, default=18)
        )
    )
    
    name = module.params['name']
    age = module.params['age']
    
    # do something
    
    module.exit_json(changed=False, result={'msg': 'ok'})

if __name__ == '__main__':
    main()

这是一个非常简单的模块示例,实际使用中可以根据具体需求进行扩展和修改。AnsibleModule 对象提供了更多的方法和属性,可以根据需要进行使用。

总结来说,AnsibleModule 是 Ansible 提供的一个基本对象,用于编写和执行 Ansible 模块。可以通过它获取传入的参数,执行相应的操作,并返回执行结果。它简化了模块的编写和数据交互过程,方便了 Ansible 模块的开发和使用。