我们有一个场景,我们现场可能有 100 个 Linux 系统,我们想远程管理部署到这些系统上的软件。这些系统是移动的,只能通过 WiFi 连接到网络,并且处于相当恶劣的环境中。它们偶尔需要被替换,需要将相同的软件和配置部署到新系统上以替换现有系统。
随着系统在网络覆盖范围内外移动,系统的任何更新都可以远程部署到它,但是在安装/更换系统时,它固定在没有任何 WiFi 覆盖的位置的情况并不少见.因此,无论我们选择做什么,我们都需要选择部署一个新的/替换系统,只使用一个 USB 内存棒。
更复杂的是,每个系统都由本地有线网络上的 2 台或多台计算机组成。我们希望能够让这些计算机中的 1 台成为“主”,这样我们只需要用 USB 内存棒更新那台 计算机和本地网络上的任何其他计算机(' slaves') 将由 master 自动更新。我们还希望支持其中一个从站被替换(已经加载了一些最低限度的功能系统)并且当它连接到“主站”时它将自动更新的场景。
我一直在(简要地)研究 SaltStack,当网络连接可用时,它看起来是一个不错的选择(在这种情况下,“从属”可以直接连接到服务器并从那里获取更新)。但是,我不确定它在 U 盘部署方案中对我们的效果如何。理想情况下,我希望能够访问 SaltStack 服务器,在某处输入“master”计算机的 minion ID,然后将部署镜像下载到 USB 内存棒上,这不仅允许我们配置“master”,还允许“master”自动配置任何连接的“从属”计算机。
- 这是 SaltStack 可以处理的事情吗?
- 让每个主服务器都成为一个 SaltStack 服务器是否有意义,这样我们就有一个根 SaltStack 服务器,它依次部署“主”SaltStack 计算机,然后再部署本地“从”计算机?在某些情况下,具有 256MB RAM 的低端 PowerPC 需要充当其他一台机器的“主机”……因此这可能不可行。
- “独立的 minion”在这种情况下会有用吗?
- 是否有任何其他类似的工具可以处理我应该关注的这种情况?
我们目前使用的是我们自己开发的临时系统,但它迫切需要更换。我们并不反对在 SaltStack 之上自己进行一些开发以支持这种情况,但是我想了解一下这是否是一条明智的途径,或者我们是否最好保留一些自定义的东西.
其他一些可能相关的随机信息: * 系统本身涉及几种不同的 CPU 架构:ARM、PowerPC 和 x86。 * 这些系统不是服务器,它们是资源有限的现场设备。从配备 256MB RAM 的 200MHz PowerPC 到配备 2GB RAM 的 Intel Atom Bay Trail。存储范围从 512MB 到几 GB。 * 他们都在运行基于 Yocto 的 Linux 发行版。
最佳答案
在配置管理领域有四种公认的开源工具(所谓的 CAPS 工具):
对于您的用例,我会提请您注意 Ansible,因为它主要设计用于通过 SSH 以无代理方式运行,将其配置存储在通常掌握在 Git 存储库中的文件中。
我很确定您可以采用这些工具中的任何一个,但您可能会发现在笔记本电脑上安装 ansible 并将其用作启动配置运行的移动工作站会很方便。
关于linux - SaltStack U 盘部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001017/