2016-07-08 83 views
5

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

有关部署必须满足以下要求:

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

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

回答

3

(免责声明:在resin.io开发布道者这里)。

好的一点是,那些不依赖容器的软件仍然可以打包(尽管它不会以其他方式工作)。 resin.io中的容器被用作将软件传送到设备上的手段,并实施有趣,实用和安全的更新策略,否则这些策略将不可能或难以实现。例如:

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

这是不是让你信服的集装箱高科技,只是强调指出,无论是否自己的应用程序是以货柜(最有可能它不并会留这样的!),不要选择对使用该技术作为服务他们的堆栈的一部分。每项服务都会尝试以任何必要的方式提供您所需的功能。

至于与问候你的清单,以resin.io

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

另外,你提到的AWS物联网,有上集成resin.io与AWS,其中包括一个示例项目中的设备做resin.io设备的自动设备配置与AWS物联网(Plug公司some documentation,并自动获取证书适用于AWS IoT)。这可能是你感兴趣的东西。