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

时间:2016-07-08 09:32:27

标签: linux deployment iot

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

有关部署的一些要求:

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

关于resin.io的核对表:

  • 推送软件服务器 - >设备:检查,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的凭据。这可能是你感兴趣的东西。

答案 1 :(得分:1)