linux - 如何为物联网设备(基于 Linux)进行软件部署?

标签 linux deployment iot

<分区>

我为之工作的一个客户在客户地点有一批 BeagleBones/Raspberry PI 运行。这些设备安装在本地网络和防火墙后面。对于 SSH 连接,有多种选择,但我们仍在为这些设备上的软件部署而苦苦挣扎。我们暂时不依赖容器技术,所以 Docker Cloud 或 Resin.io 不是一个选择,但 resin.io 看起来很有前途。我们使用 AWS IoT 收集数据。

关于部署的一些要求:

  • 推送软件服务器 -> 设备
  • 分阶段推出,推出到随时间增加的设备百分比
  • 回滚软件
  • 设备配置
  • 没有容器技术

有哪些好的方法可以实现这一点?

最佳答案

(免责声明:此处为 resin.io 的开发人员传播者)。

好处是,不依赖于容器的软件仍然可以打包(反之则不行)。 resin.io 中的容器用作将软件交付到设备上的一种方式,并实现有趣、有用且安全的更新策略,否则这是不可能或更难做到的。例如:

  • 您的应用程序代码有错误(发生了!)并且崩溃了。这会破坏包括网络在内的整个设备吗? (在 resin.io 容器上有助于限制损害,您的应用程序崩溃但设备在线并且可以更新)
  • 在更新应用程序时是否必须更新整个机器镜像? (使用这样的容器,您的应用程序代码中发生的更改会得到更新,这导致大部分时间的数据流量非常小,并且在需要时可以非常快速地进行更改)
  • 使用这样的容器让您几乎可以实现零停机升级(启动新应用程序,旧运行版本将资源移交给新版本)。

这并不是要让您相信容器技术,只是强调您自己的应用程序是否已容器化(很可能不是并且会保持这种状态!),不要反对使用该技术作为其一部分的服务堆。每项服务都试图以任何必要的方式提供您需要的功能。

至于您关于 resin.io 的 list :

  • 推送软件服务器 -> 设备:检查,git push resin master 并且您的代码正在部署
  • 分阶段推出,推出到随时间增加的设备百分比:不是一般功能集的一部分,但使用 resin supervisor API 很容易实现:例如锁定所有设备的更新,您可以选择要解锁和更新的设备。由于这一切都是通过 API 实现的,因此可以根据您的首选部署策略进行定制
  • 回滚软件:(目前)还不是通用功能集的一部分,但是使用 git 可以很容易地重新推送以前的版本。需要注意在您的设置中固定库的版本,以实现可重现的设置,但在实践中是可行的。
  • 设备配置:可以使用自动设备设置或通过 API/SDK/CLI 进行配置
  • 没有容器技术:如上所述,在实践中,您不需要太在意服务以何种方式交付您的软件,因为在大多数情况下,它不会影响您的应用程序的行为方式。

此外,您提到了 AWS IoT,还有 some documentation关于将 resin.io 与 AWS 集成,包括一个使用 AWS IoT 自动配置 resin.io 设备的示例项目(插入设备,它会自动获取 AWS IoT 的凭证)。这可能是您感兴趣的内容。

关于linux - 如何为物联网设备(基于 Linux)进行软件部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38263339/

相关文章:

java - 如何在本地运行代理 'HiveMQ' 并将 android 应用程序连接到它

amazon-web-services - Cognito 用户的 AWS IoT 通用策略与策略

windows - 在 Windows 下使用 Linux 实用程序的最佳方法是什么?

asp.net-mvc - 自动更新网络应用

c - 实现 include/sched.h 函数

wpf - 运行 WPF 应用程序需要什么?

django - Heroku 创建了表,但是当我要迁移时,他说没有创建

http - 在 AWS-IoT 中使用 http 列出事物 api?

linux - 交叉编译 gsoap 2.8。 ARM

linux - awk 从字段中提取数字