RockyLinux Ansible模块开发(手把手教你用Python编写自定义Ansible模块)

来源:这里教程网 时间:2026-03-26 00:19:40 作者:

在现代自动化运维体系中,Ansible 因其简单、无代理架构和强大的模块系统而广受欢迎。而 RockyLinux 作为 CentOS 的继任者,正成为企业级服务器部署的热门选择。本文将带你从零开始,学习如何为 RockyLinux 环境开发自定义 Ansible 模块,即使你是编程小白,也能轻松上手!

什么是 Ansible 模块?

Ansible 模块是执行特定任务的独立脚本,比如安装软件包、管理服务、操作文件等。官方提供了大量模块,但有时我们需要定制功能——这就需要自己开发模块。

自定义模块通常使用 Python 编写(也支持 Shell、Go 等),因为 Ansible 控制节点默认依赖 Python。在 RockyLinux 上,Python 3 已成为标准,非常适合开发新模块。

开发环境准备

首先确保你的 RockyLinux 系统已安装 Ansible 和 Python 3:

# 安装 EPEL 仓库sudo dnf install -y epel-release# 安装 Ansible 和 Python3sudo dnf install -y ansible python3 python3-pip# 验证版本ansible --versionpython3 --version

创建你的第一个自定义模块

我们将编写一个名为

hello_rocky
的简单模块,它接收一个名字参数,并返回一条问候语。

步骤 1:创建模块目录

Ansible 默认会在以下路径查找自定义模块:

./library/
(当前 playbook 目录下)
~/.ansible/plugins/modules/
/usr/share/ansible/plugins/modules/

我们使用第一种方式,在项目根目录创建

library
文件夹:

mkdir -p my_playbook/librarycd my_playbook

步骤 2:编写模块代码

library/
目录下创建文件
hello_rocky.py

#!/usr/bin/python3# -*- coding: utf-8 -*-from ansible.module_utils.basic import AnsibleModuledef main(): # 定义模块参数 module_args = dict( name=dict(type='str', required=True) ) # 创建模块实例 module = AnsibleModule( argument_spec=module_args, supports_check_mode=True ) # 获取传入参数 name = module.params['name'] # 构造返回结果 result = dict( changed=False, message=f"Hello, {name}! Welcome to RockyLinux Ansible automation." ) # 如果不是 check mode,才真正“执行”(本例无实际变更) if not module.check_mode: result['changed'] = False # 本模块不修改系统状态 # 成功退出并返回结果 module.exit_json(**result)if __name__ == '__main__': main()

步骤 3:编写 Playbook 测试模块

my_playbook/
目录下创建
test_hello.yml

---- name: Test custom hello_rocky module hosts: localhost connection: local tasks: - name: Say hello to Rocky hello_rocky: name: "Rocky User" register: hello_result - name: Print the message debug: msg: "{{ hello_result.message }}"

步骤 4:运行测试

执行以下命令:

ansible-playbook test_hello.yml

你将看到类似输出:

ok: [localhost] => {    "msg": "Hello, Rocky User! Welcome to RockyLinux Ansible automation."}

关键概念解析

AnsibleModule:所有自定义模块的核心类,用于处理参数、返回结果、错误等。 argument_spec:定义模块接受的参数及其类型、是否必填等。 supports_check_mode:支持 Ansible 的 dry-run 模式(--check),避免意外变更。 exit_json / fail_json:成功或失败时的标准返回方式。

进阶建议

当你熟悉基础后,可以尝试:

添加更多参数(如
state
path
) 调用系统命令(使用
module.run_command()
) 处理文件或服务状态 编写单元测试(使用
pytest
+
ansible-test

总结

通过本教程,你已经掌握了在 RockyLinux 上进行 Ansible模块开发 的基本流程。自定义模块能极大扩展 Ansible 的能力,实现更灵活的 自动化运维。记住,所有模块都应遵循幂等性原则(多次执行结果一致),并妥善处理错误。

现在,你可以尝试开发自己的模块了!无论是管理日志、部署应用,还是集成第三方 API,Python编写Ansible模块 都是你自动化工具箱中的强大武器。

Happy Automating with RockyLinux and Ansible!

相关推荐

热文推荐