【问题标题】:How do I deploy code to hardware nodes that are all on seperate networks?如何将代码部署到都在不同网络上的硬件节点?
【发布时间】:2015-11-20 15:50:40
【问题描述】:

这是我最近一直在思考的一个有趣的问题,但没有提出或找到我认为可以接受的解决方案。

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

让它们工作并将视频流发送到我的服务器都很容易,很好 - 但是我到底如何将代码更新部署到不在同一个网络上的这些“节点”,有些在 wi-fi 后面我也没有端口转发访问权限的网络,所以我不能只在其中发布转发和 SSH 并运行一些 .sh 魔法来更新内容。

我想出的最好办法是使用 autossh 来保持一个恒定的连接,通过反向 ssh 连接到我的一台服务器,然后通过我的父服务器并行连接到它们并在它们上运行 .sh 脚本当我想更新时.. 但这似乎太过分了,我确信有一些解决方案或平台可以解决这个问题 - Redbox 或 Nest 等公司如何远程更新其系统上的固件?

【问题讨论】:

    标签: linux unix ssh arduino raspberry-pi


    【解决方案1】:

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

    我不隶属于他们,但我不能对服务和价格说足够多的好话。我的 Pi 连接到需要在特定时间显示某些内容的屏幕,无论 Pi 在哪里查看当前播放的内容,我都可以非常轻松地进行 VNC 连接。我显然也可以通过 ssh 登录。

    我的 pi 设置指南中的以下步骤涉及安装 pagekite 并使其在启动时启动:

    1. echo deb http://pagekite.net/pk/deb/ pagekite main | sudo tee -a /etc/apt/sources.list
    2. sudo apt-key adv --recv-keys --keyserver keys.gnupg.net AED248B1C7B2CAC3
    3. sudo apt-get 更新
    4. sudo apt-get install pagekite
    5. sudo leafpad /etc/pagekite.d/10_account.rc 将 NAME.pagekite.me 替换为风筝的名称 将 YOURSECRET 替换为来自 pagekite 管理控制台的任何秘密 删除“abort_not_configured”行和上面的注释
    6. sudo cp /etc/pagekite.d/80_sshd.rc.sample /etc/pagekite.d/80_sshd.rc
    7. sudo invoke-rc.d pagekite 重启
    8. 须藤重启

    这假设您已经创建了一个帐户并设置了一个“风筝”

    我认为您基本上需要一个可靠的反向隧道,例如 Pagekite,特别是如果您计划扩展您的网络,因为它会变成一定规模的噩梦。我相信我只是要保留 ssh 用户名、ssh 密码和 pagekite 地址的列表,然后编写一个循环遍历它们的脚本,并将我的本地目录与新代码同步到 pi 上的远程目录。

    【讨论】:

    • 啊,太好了——我想多了。您可以通过在 PI 上使用 GIT 存储库来解决此问题,该存储库包含在设备处于活动状态时运行的代码,然后使用一些 .sh 魔法定期轮询以查看设备是否应该从生产存储库中提取更新( s)。如果一个新的提交被拉下,只需在拉完后重新启动以使用更新的代码重新启动进程。
    • 这是个好主意,我想我需要一个更复杂的解决方案,因为我想真正看到显示屏上的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2019-06-12
    • 2020-12-15
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    相关资源
    最近更新 更多