linux - SaltStack U 盘部署

标签 linux deployment salt-stack

我们有一个场景,我们现场可能有 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/

相关文章:

python - salt 定制 Cereal

windows - 如果我的文件没有更改,如何阻止 saltstack 中的 module.run?

linux - 使用 awk 为所有列使用相同的格式打印 $0

java - 使用java将文件从本地窗口机器复制到远程窗口机器

c - write() 与 ttyS 是非阻塞的

git - Jenkins 使用 Git 插件不填充 GIT_COMMIT 以提升构建

arrays - 在 for 循环中给出数组求和值

python - 更新 PostgreSQL 架构并将其部署到 Heroku

java - Glassfish 3.1部署错误

salt-stack - 如何执行saltstack minion