SaltStack U 盘部署

SaltStack USB-stick deployment

我们有一个场景,我们在现场可能有 100 个 Linux 系统,我们希望远程管理部署到这些系统上的软件。这些系统是移动的,只能通过 WiFi 连接到网络,并且处于相当恶劣的环境中。它们有时需要更换,需要将相同的软件和配置部署到新系统上以替换现有系统。

随着系统在网络覆盖范围内外移动,系统的任何更新都可以远程部署到它,但是当系统处于 installed/replaced 时,它固定在一个位置并不罕见没有任何 WiFi 覆盖。因此,无论我们选择做什么,我们都需要选择部署 new/replacement 系统,仅使用 USB 记忆棒。

更复杂的是,每个系统由本地有线网络上的 2 台或更多台计算机组成。我们希望能够让这些计算机中的 1 台成为 'master',这样我们只需要使用 USB 记忆棒更新 那个 计算机和该计算机上的任何其他计算机本地网络('slaves')将由主机自动更新。我们还想支持其中一个从站被替换的场景(已经加载了一些最低限度的功能系统)并且当它连接到 'master' 时它将自动更新。

我一直在(简要地)查看 SaltStack,当网络连接可用时它看起来是一个不错的选择(在这种情况下,'slaves' 可以直接连接到服务器并从中获取更新那里)。但是,我不确定它在 U 盘部署方案中对我们的效果如何。理想情况下,我希望能够访问 SaltStack 服务器,在某处输入 'master' 计算机的 minion ID,然后将部署映像下载到 USB 记忆棒上,这不仅允许我们配置 'master',而且允许 'master 自动配置任何连接的 'slave' 台计算机。

我们目前使用的是我们自己开发的临时系统,但它迫切需要更换。我们并不反对在 SaltStack 之上自己进行一些开发以支持这种情况,但是我想了解一下这是否是一条明智的途径,或者我们是否最好保留一些自定义的东西.

其他一些可能相关的随机信息: * 系统本身涉及几种不同的 CPU 架构:ARM、PowerPC 和 x86。 * 这些系统不是服务器,它们是资源有限的现场设备。从配备 256MB RAM 的 200MHz PowerPC 到配备 2GB RAM 的 Intel Atom Bay Trail。存储范围从 512MB 到几 GB。 * 它们都是 运行 基于 Yocto 的 Linux 发行版。

配置管理领域有四种公认的开源工具(所谓的 CAPS 工具):

对于您的用例,我会提请您注意 Ansible,因为它主要设计用于通过 SSH 以无代理方式运行,将其配置存储在通常掌握在 Git 存储库中的文件中。

我很确定您可以采用这些工具中的任何一个,但您可能会发现在笔记本电脑上安装 ansible 并将其用作启动配置运行的移动工作站会很方便。