模块介绍

模块(也称为“任务插件”或“库插件”)是离散的代码单元,可从命令行或在 playbook 任务中使用。Ansible 执行每个模块(通常在远程管理节点上),并收集返回值。在 Ansible 2.10 及更高版本中,大多数模块托管在集合(collections)中。

您可以从命令行执行模块。

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 语法,也称为“复杂参数(complex args)”。

- name: restart webserver
  service:
    name: httpd
    state: restarted

所有模块都返回 JSON 格式的数据。这意味着模块可以用任何编程语言编写。模块应该是幂等的,如果检测到当前状态与期望的最终状态一致,则应避免做出任何更改。在 Ansible playbook 中使用时,模块可以通过通知 handlers 来触发“变更事件”,从而运行额外的任务。

您可以使用 ansible-doc 工具从命令行访问每个模块的文档。

ansible-doc yum

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

ansible-doc -l

布尔变量

Ansible 在模块参数中为 bool 接受广泛的值:true/false, 1/0, yes/no, True/False 等。有效字符串的匹配不区分大小写。虽然文档示例重点使用 true/false 以兼容 ansible-lint 的默认设置,但您可以使用以下任何值:

真值(Valid values)

描述

True , 'true' , 't' , 'yes' , 'y' , 'on' , '1' , 1 , 1.0

真值(Truthy values)

False , 'false' , 'f' , 'no' , 'n' , 'off' , '0' , 0 , 0.0

假值(Falsy values)

另请参阅

即席命令(ad hoc commands)介绍

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

使用 Playbook

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

您应该开发模块吗?

如何编写您自己的模块

Python API

使用 Python API 调用模块的示例

交流方式

有疑问?需要帮助?想分享你的想法?请访问 Ansible 通信指南

所有模块和插件的索引

所有可用的模块和插件