Ansible模块是离散的代码单元,可以从命令行或在Playbook任务中使用。
这些模块在Ansible中也称为任务插件或库插件。
Ansible附带了几个称为模块库的模块,可以直接通过Playbook或远程主机执行它们。
用户还可以编写他们的模块。这些模块可以控制服务,系统资源,文件或包等,并处理执行的系统命令。
让我们看看如何从命令行执行三个不同的模块。
ansible webservers -m service -a "name=httpd state=started"
ansible webservers -m ping
ansible webservers -m command -a "/sbin/reboot -t now"
每个模块都支持采用参数。主要所有模块都采用key = value参数,以空格分隔。
某些模块不带参数,而shell / command模块采用要执行的命令的字符串。
在剧本中,Ansible模块的执行方式非常相似,例如:
- name: reboot the servers
command: /sbin/reboot -t now
这是将参数传递给使用YAML语法的模块的另一种方法,也称为复杂参数。
- name: restart webserver
service:
name: httpd
state: restarted
从技术上讲,所有模块都返回JSON格式的数据,尽管通过命令行或剧本,你无需对此有所了解。如果你正在编写模块,则意味着你不必以任何特定的语言来编写模块。
模块应该是幂等的,如果它们检测到当前状态与所需的最终状态匹配,则应避免进行任何更改。使用Ansible剧本时,这些模块可以以通知“处理程序”运行其他任务的形式触发“更改事件”。
可以使用Ansible-doc工具从命令行访问每个模块的文档:
ansible-doc yum
评论前必须登录!
注册