Ansible在使用过程中,可能会有部分功能无法满足要求,能否根据实际情况,进行自行定义
收起ANSIBLE很强大,能够支持自定义模块和自定义插件,来满足我们的实际需要,实现现有模块和插件无法达到的效果。
Ansible自定义模块:
模块是Ansible的核心引擎, Ansible中的模块就是传输给远程主机并执行的那点代码。它们可以使用远程主机可以执行的任何语言实现。 Ansible的核心开发团队维护的Ansible核心模块大概有150多个,涵盖了云、命令、数据库、文件、网络、包、源控制、系统、工具、web设施等等。另外,还有100多个其他额外模块,主要由社区贡献者维护,它们扩展了这些类别的很多功能。真正神奇就发生在模块代码内部,它们接受传入的参数,然后建立预期的结果。而且Ansible能够提供一种简单的机制来利用来自Ansible外部的自定义模块。
Ansible自定义插件使用场景举例:
1)除Paramiko、本机SSH、Local、Winrm连接方式外,希望Ansible基于新的通信方式与远程主机交互;
2)除Ansible内置的with_items、with_fileglob循环体外,希望有新的遍历方式;
3)除了Ansible内置的host_vars、group_vars等变量调用方式外,希望有新的变量定义方式;
4)除了Ansible的内置的Jinja2模板渲染、to_yaml、to_json等过滤器外,希望有新的过滤器;
5)定义新的回调机制,即捕获响应事件后自定义新的响应形式。