模块简介
模块(也称为“任务插件”或“库插件”)是可从命令行或在playbook任务中使用的独立代码单元。Ansible通常在远程管理节点上执行每个模块,并收集返回值。在Ansible 2.10及更高版本中,大多数模块都托管在集合中。
您可以从命令行执行模块。
ansible webservers -m service -a "name=httpd state=started"
ansible webservers -m ping
ansible webservers -m command -a "/sbin/reboot -t now"
每个模块都支持参数。几乎所有模块都采用key=value
参数,以空格分隔。某些模块不接受任何参数,而command/shell模块则只接受要运行的命令字符串。
在playbook中,Ansible模块的执行方式非常相似。
- name: reboot the servers
command: /sbin/reboot -t now
另一种向模块传递参数的方法是使用YAML语法,也称为“复杂参数”。
- name: restart webserver
service:
name: httpd
state: restarted
所有模块都返回JSON格式的数据。这意味着可以使用任何编程语言编写模块。模块应该是幂等的,如果检测到当前状态与所需的最终状态匹配,则应避免进行任何更改。在Ansible playbook中使用时,模块可以触发“更改事件”,形式为通知处理程序运行其他任务。
您可以使用ansible-doc工具从命令行访问每个模块的文档。
ansible-doc yum
有关所有可用模块的列表,请参阅集合文档,或在命令提示符下运行以下命令。
ansible-doc -l
另请参阅
- ad hoc命令简介
/usr/bin/ansible中使用模块的示例
- 使用playbook
/usr/bin/ansible-playbook中使用模块的示例
- 您应该开发一个模块吗?
如何编写您自己的模块
- Python API
使用Python API的模块示例
- 沟通
有问题?需要帮助?想分享你的想法?请访问Ansible沟通指南
- 所有模块和插件索引
所有可用模块和插件