模块介绍

模块(也称为“任务插件”或“库插件”)是可从命令行或在剧本任务中使用的独立代码单元。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 参数,以空格分隔。有些模块不需要参数,而命令/shell 模块只使用要运行的命令的字符串。

从剧本中,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

要查看所有可用模块的列表,请参阅 集合文档,或在命令提示符下运行以下命令。

ansible-doc -l

另请参阅

临时命令简介

/usr/bin/ansible 中使用模块的示例

使用剧本

/usr/bin/ansible-playbook 中使用模块的示例

您应该开发一个模块吗?

如何编写自己的模块

Python API

使用 Python API 的模块示例

邮件列表

问题?帮助?想法?在 Google Groups 上的列表中查看

实时聊天

如何加入 Ansible 聊天频道

所有模块和插件的索引

所有可用的模块和插件