从Ansible文档中获取-模块是Ansible上载到目标系统的小程序,执行它们并在完成后删除。
但是,为什么Ansible首先需要它们?例如,我要在Cisco交换机上执行几个命令。在剧本中,我将不得不使用ios_config模块。但是,为什么Ansible无法建立与交换机的ssh连接并开始将命令推送到控制台?在那里做什么模块?
很抱歉可能是“天真”的问题,但我在Ansible文档中找不到解释。
答案 0 :(得分:2)
Ansible最基本的方法是,为用户提供一种描述系统应处于的状态的方法。然后,Ansible将系统的现有状态与用户描述的状态进行比较,并从中进行比较。匹配,则采取必要的措施来解决差异。
至关重要的是,此行为意味着Ansible可以在系统上运行多次,并且仅在必要时才会进行更改(通常是首次将剧本应用于目标)。因此,除了简单地应用一系列命令之外,还有更多事情要做。
一个模块打包了一个特定的任务,并负责:
Ansible公开了用于创建模块的一致API,这一事实意味着Ansible可以无限扩展,因此可以为当前不支持的功能向Ansible添加新模块。
您特别提到了ios_config
。网络设备是一种稍微奇怪的设备类别,因为从历史上看,它们并不是真正以使它们易于被自动化访问的方式设计的。因此,如果这是您使用过Ansible的系统的唯一类别,那么可能不清楚为什么Ansible所采用的一般方法以及更具体的模块如此有用。
Ansible除了通过网络设备外,还可以通过模块系统来配置计算机系统的几乎任何方面,从而将对非常不同的工具和技术的管理减少为最终用户的一致API。