📜  Ansible模块

📅  最后修改于: 2020-12-26 12:26:10             🧑  作者: Mango

Ansible模块

Ansible模块是离散的代码单元,可以从命令行或在剧本任务中使用。

这些模块在Ansible中也称为任务插件或库插件。

Ansible附带了几个称为模块库的模块,这些模块可以直接执行,也可以通过剧本远程主机执行。

用户还可以编写他们的模块。这些模块可以控制服务,系统资源,文件等,并处理执行的系统命令。

让我们看看如何从命令行执行三个不同的模块。

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