我想管理运行嵌入式 Linux 的几个设备的配置。
我的环境中有一个 Web 服务器,它有一个 SOAP 接口,我可以使用它来获取/设置我想要配置的每个设备的所有参数。Web 服务器通过发送 SNMP 消息与嵌入式 Linux 设备对话,这是我控制它们的唯一选择。
我想使用配置管理工具来定义每个嵌入式设备,然后使用 SOAP 服务器来配置它们,但我似乎找不到任何使用 Puppet/Ansible 的示例来说明我想要做的事情(但也许我一直在谷歌搜索错误的术语)。
Puppet 设备听起来有点像我想做的事情,它似乎用于配置某些类型的网络设备,但它仍然使用 ssh 与设备节点通信并在节点上的 shell 中运行命令,而不是使用中间代理来获取/设置参数。我预计我必须编写一个自定义提供程序(或非 Puppet CM 工具的等效程序),有没有办法在任何配置管理工具中实现这一点?我相信一定有一种合理的方法来做到这一点,但我很难找到这种场景的例子。
答案1
我的第一个想法是这样的...您的中央服务器允许您定义所有的配置,而不是向每个设备发出出站请求,而是以每个单独的节点容易发现的格式写出。
我使用 CFEngine,它非常轻量、快速,几乎可以在任何设备上运行。每个节点都会与中央策略服务器进行检查,默认情况下每五分钟一次,但您当然可以根据需要调整时间表。策略中可能包含一些由中央服务器生成的当天要下载的内容。(用于进行 SNMP 调用的服务器)如果有新数据,则 cfengine 代理可以处理该数据并进行必要的调整。
答案2
Ansible-Pull
假设你的运行嵌入式 Linux 的设备可以运行 Python 和 Ansible,那么一个解决方案就是使用Ansible-pull脚本让他们从中心位置检查您的 Ansible playbook,并让设备在本地针对它运行 ansible-playbook。这样,您就不需要通过 ssh 访问设备了。
您可以从 crontab 调用 ansible-pull 和/或让它在设备启动后运行。
参见 Ansible文档了解更多信息。