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

问题描述 投票:6回答:2

我正在为之工作的客户有一批BeagleBones / Raspberry PI在客户所在地运营。这些设备安装在本地网络和防火墙后面。对于SSH连接,有几种选择,但我们仍在努力在这些设备上进行软件部署。我们目前不依赖于容器技术,因此Docker Cloud或Resin.io不是一种选择,但resin.io看起来非常有前途。我们使用AWS IoT进行数据收集。

有关部署的一些要求:

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

实现这一目标有哪些好方法?

linux deployment iot
2个回答
3
投票

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

好消息是,那些不依赖于容器的软件仍然可以打包(虽然它不起作用)。 resin.io中的容器用作将软件传送到设备上的方法,并实现有趣,有用和安全的更新策略,否则这些策略将无法实现或难以实现。例如:

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

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

关于resin.io的清单:

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

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


© www.soinside.com 2019 - 2024. All rights reserved.