2015-11-20 74 views
0

这是我最近一直在想的一个有趣的问题,并没有提出或找到我认为可以接受的解决方案。如何将代码部署到所有独立网络上的硬件节点?

我正在玩Raspberry Pi's,目前有6个我想用于我的一些个人财产用于监视目的。

让他们工作并将视频流发送到我的服务器非常简单,很好,但是如何在全球范围内将代码更新部署到不在同一网络中的这些“节点”,有些位于wi-我也没有端口转发访问权限,所以它不像我可以向前发送和SSH到他们并运行一些.sh魔术来更新的东西。

最好的我想出的是使用autossh来保持一个常量,通过反向ssh向我的服务器打开一个连接,然后通过并行的ssh服务器ssh通过我的父服务器并运行.sh脚本他们当我想更新..但是这似乎过度过度,我敢肯定存在一些解决方案或平台来解决这个问题 - 像Redbox或Nest这样的公司如何在远程更新其系统上的固件?

回答

0

我实际上在做类似的事情。我将Pi部署在我住的城市周围。为了不必担心端口转发和人们更改其路由器配置,我开始使用名为Pagekite的服务http://pagekite.net/

我不隶属于他们,但我无法说服务和价格方面的好处。我的Pi被连接到需要在特定时间显示特定事物的屏幕,并且无论Pi在哪里查看当前正在播放的内容,我都能够非常轻松地访问VNC。我显然也可以只是ssh。

从我的PI设置指南协议下面的步骤与安装pagekite,并得到它在启动时自动:

  • 呼应的deb http://pagekite.net/pk/deb/ pagekite主要|须藤发球-a的/etc/apt/sources.list
  • sudo易于关键进阶--recv密钥--keyserver keys.gnupg.net AED248B1C7B2CAC3
  • sudo易于得到更新
  • 命令和apt-get安装pagekite
  • 须藤leafpad /etc/pagekite.d/10_account.rc 与风筝 的名称替换NAME.pagekite.me与任何秘密从pagekite管理控制台 更换YOURSECRET删除行“abort_not_configured”和上面的注释
  • sudo cp /etc/pagekite.d/80_sshd.rc.sample /etc/pagekite.d/80_sshd.rc
  • 须藤调用-rc.d的pagekite重启
  • 须藤重启
  • 这是假设你已经做了一个账户,并设置了“风筝”

    我想你基本上需要一个可靠的反向隧道等作为Pagekite,尤其是如果你打算扩展你的网络,因为它会变成一定规模的噩梦。我相信我只是想保留一份ssh用户名,ssh密码和pagekite地址的列表,然后编写一个脚本,通过它们和rsync的我的本地目录以及新的代码到pi上的远程目录。

    +1

    好啊 - 我希望通过这个更多。您可以通过在包含在设备处于活动状态时运行的代码的PI上使用GIT存储库来解决此问题,然后使用一些.sh魔术来定期轮询以查看设备是否应从生产存储库中下载更新( S)。如果一个新的提交被拉下来,只需重新启动后重新启动进程,以更新代码。 –

    +0

    这是一个好主意,我想我需要一个更复杂的解决方案,因为我想实际看到显示屏上显示的内容。 –