为什么Ansible需要模块?

时间:2019-01-22 15:23:42

标签: ansible

从Ansible文档中获取-模块是Ansible上载到目标系统的小程序,执行它们并在完成后删除。

但是,为什么Ansible首先需要它们?例如,我要在Cisco交换机上执行几个命令。在剧本中,我将不得不使用ios_config模块。但是,为什么Ansible无法建立与交换机的ssh连接并开始将命令推送到控制台?在那里做什么模块?

很抱歉可能是“天真”的问题,但我在Ansible文档中找不到解释。

1 个答案:

答案 0 :(得分:2)

Ansible最基本的方法是,为用户提供一种描述系统应处于的状态的方法。然后,Ansible将系统的现有状态与用户描述的状态进行比较,并从中进行比较。匹配,则采取必要的措施来解决差异。

至关重要的是,此行为意味着Ansible可以在系统上运行多次,并且仅在必要时才会进行更改(通常是首次将剧本应用于目标)。因此,除了简单地应用一系列命令之外,还有更多事情要做。

一个模块打包了一个特定的任务,并负责:

  • 根据模块所针对的功能,为用户提供一种描述系统预期状态的一致方法
  • 针对模块所针对的功能,检查目标系统以确定系统状态是否与用户请求的状态相匹配
  • 仅在必要时更改目标系统以匹配用户要求的状态,以实现模块所针对的功能

Ansible公开了用于创建模块的一致API,这一事实意味着Ansible可以无限扩展,因此可以为当前不支持的功能向Ansible添加新模块。

您特别提到了ios_config。网络设备是一种稍微奇怪的设备类别,因为从历史上看,它们并不是真正以使它们易于被自动化访问的方式设计的。因此,如果这是您使用过Ansible的系统的唯一类别,那么可能不清楚为什么Ansible所采用的一般方法以及更具体的模块如此有用。

Ansible除了通过网络设备外,还可以通过模块系统来配置计算机系统的几乎任何方面,从而将对非常不同的工具和技术的管理减少为最终用户的一致API。