共用方式為


使用對稱金鑰在 Linux 上建立及佈建 IoT Edge 裝置

適用於:勾選圖示 IoT Edge 1.1

這很重要

IoT Edge 1.1 終止支援日期為 2022 年 12 月 13 日。 如需此產品、服務、技術或 API 的支援資訊,請參閱 Microsoft 產品生命週期。 如需更新至最新版 IoT Edge 的詳細資訊,請參閱 更新 IoT Edge

本文提供註冊及佈建 Linux IoT Edge 裝置 (包括安裝 IoT Edge) 的端對端指示。

連線到 IoT 中樞的每個裝置都有裝置識別碼,可用來追蹤雲端到裝置或裝置到雲端的通訊。 您可以使用連線資訊來設定裝置,其中包括 IoT 中樞主機名稱、裝置識別碼,以及裝置用來向 IoT 中樞驗證的資訊。

本文中的步驟會帶您完成稱為手動佈建的程序,您會在此程序中將單一裝置連線到其 IoT 中樞。 針對手動佈建,您有兩個選項可用來驗證 IoT Edge 裝置:

  • 對稱金鑰:當您在 IoT 中樞中建立新的裝置身分識別時,服務會建立兩個金鑰。 您會在裝置上放置其中一個金鑰,並在驗證時呈現 IoT 中樞的金鑰。

    這個驗證方法上手較為快速,但並非是安全的方法。

  • X.509 自我簽署:您可以建立兩個 X.509 身分識別憑證,並將其置於裝置上。 當您在 IoT 中樞中建立新的裝置身分識別時,您會從這兩個憑證提供指紋。 當裝置向 IoT 中樞進行驗證時,其會顯示一個憑證,而 IoT 中樞會確認憑證符合其指紋。

    此驗證方法較安全,建議用於實際執行案例。

本文說明如何使用對稱金鑰做為驗證方法。 如果您想要使用 X.509 憑證,請參閱使用 X.509 憑證在 Linux 上建立及佈建 IoT Edge 裝置

備註

如果您有許多裝置可設定,且不想手動佈建每個裝置,請使用下列其中一篇文章來了解 IoT Edge 如何與 IoT 中樞裝置佈建服務搭配運作:

先決條件

本文說明如何註冊 IoT Edge 裝置及在裝置上安裝 IoT Edge。 完成這些工作有不同的必要條件和公用程式。 在繼續之前,請先確定您已準備好所有必要條件。

裝置管理工具

您可以使用 Azure 入口網站Visual Studio CodeAzure CLI 來完成註冊裝置的步驟。 每個公用程式都有自己的必要條件:

於 Azure 訂閱中的免費或標準 IoT 中樞

裝置需求

X64、ARM32 或 ARM64 Linux 裝置。

Microsoft 發佈各種作業系統的安裝套件。

如需生產情境下,何種 Windows 作業系統可供使用的相關資訊,請參閱 Azure IoT Edge 支援系統

註冊您的裝置

您可以根據喜好,使用 Azure 入口網站Visual Studio CodeAzure CLI來註冊裝置。

在 Azure 入口網站的 IoT 中樞中,IoT Edge 裝置的建立和管理與未啟用 Edge 的 IoT 裝置是分開的。

  1. 登入 Azure 入口網站,然後瀏覽至 IoT 中樞。

  2. 在左側窗格中,從功能表中選取 [裝置],然後選取 [新增裝置]

  3. 在 [建立裝置] 頁面上,提供下列資訊:

    • 建立描述性裝置識別碼。 記下此裝置識別碼,因為您稍後會使用它。
    • 請勾選 [IoT Edge 裝置] 核取方塊。
    • 選取 [對稱金鑰] 作為 [驗證類型]。
    • 使用預設設定來自動產生驗證密鑰,並將新裝置連線到您的中樞。
  4. 請選擇儲存

現在您已在 IoT 中樞內註冊裝置,接著請擷取用來完成安裝及佈建 IoT Edge 執行階段的資訊。

檢視已註冊的裝置並擷取佈建資訊

使用對稱金鑰驗證的裝置需要其連接字串,才能完成 IoT Edge 執行階段的安裝和佈建。

連線至 IoT 中樞且已啟用 Edge 的裝置都列於 [裝置] 頁面。 您可以依類型 IoT Edge 裝置篩選清單。

如何在 Azure 入口網站 IoT 中樞中檢視裝置的螢幕快照。

當您準備好開始設定裝置時,需要連接字串才能將您的實體裝置與在 IoT 中心中的其身分識別連結起來。

使用對稱金鑰進行驗證的裝置,可在入口網站中複製其連接字串。

  1. 從入口網站中的 [裝置] 頁面,從清單中選取IoT Edge裝置標識碼。
  2. 複製 [主要連接字串] 或 [次要連接字串] 的值。

安裝 IoT Edge

在本節中,您會準備適用於 IoT Edge 的 Linux VM 或實體裝置。 然後,您會安裝 IoT Edge。

執行下列命令以新增套件存放庫,然後將 Microsoft 套件簽署金鑰新增至信任金鑰的清單。

這很重要

在 2022 年 6 月 30 日,Raspberry Pi OS Stretch 從第 1 層作業系統支援清單中被淘汰。 若要避免潛在的安全性弱點,請將主機作業系統更新為 Bullseye。

您可以使用幾個命令來完成安裝。 開啟終端機,然後執行下列命令:

  • 20.04

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

備註

使用 Azure IoT Edge 軟體套件時,必須遵守每個封裝中的授權條款 (usr/share/doc/{package-name}LICENSE 目錄)。 在使用套件之前,請先閱讀授權條款。 安裝及使用套件即表示接受這些授權條款。 如果您不同意授權條款,請勿使用該套件。

安裝容器引擎

Azure IoT Edge 依賴 OCI 相容的容器運行時間。 針對實際執行案例,建議使用 Moby 引擎。 Moby 引擎是IoT Edge正式支援的容器引擎。 Docker CE/EE 容器映像與 Moby 執行階段相容。

安裝 Moby 引擎。

sudo apt-get update; \
  sudo apt-get install moby-engine

成功安裝Moby引擎之後,請將它設定為使用 local 記錄驅動程式 作為記錄機制。 若要深入了解記錄設定,請參閱生產部署檢查清單

  • /etc/docker/daemon.json建立或開啟 Docker 精靈的組態檔。

  • 將默認記錄驅動程式設定為 local 記錄驅動程式,如下列範例所示。

       {
          "log-driver": "local"
       }
    
  • 重新啟動容器引擎,讓變更生效。

    sudo systemctl restart docker
    

    小提示

    如果您在安裝 Moby 容器引擎時發生錯誤,請確認您的 Linux 核心與 Moby 相容。 某些嵌入式裝置製造商會提供包含自訂 Linux 核心的裝置影像,而不需要容器引擎相容性所需的功能。 執行下列命令,此命令會使用 Moby 所提供的 檢查設定指令碼 來檢查您的核心設定:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    在指令碼的輸出中,檢查所有在Generally NecessaryNetwork Drivers 下的項目是否已啟用。 如果您缺少功能,請從原始碼重建核心,然後選取相關聯的模組以納入適當的核心 .config 來加以啟用。同樣地,如果您使用 defconfigmenuconfig 等核心設定產生器,請尋找並啟用個別的功能,並據此重建您的核心。 一旦您部署新修改過的核心之後,請再次執行檢查設定指令碼,以確認所有必要的功能都已成功啟用。

安裝 IoT Edge 執行階段

IoT Edge 安全性精靈會在IoT Edge裝置上提供和維護安全性標準。 守護程式會在每次開機時啟動,並透過啟動其他 IoT Edge 執行環境的部分來引導裝置。

本節中的步驟代表在具有因特網連線的裝置上安裝最新版本的一般程式。 如果您需要安裝特定版本,例如發行前版本,或需要在離線時安裝,請遵循本文稍後的離線或特定版本安裝步驟。

安裝 IoT Edge 1.1.* 版以及 libiothsm-std 套件:

sudo apt-get update; \
  sudo apt-get install iotedge

備註

IoT Edge 1.1 版是 IoT Edge 的長期支援分支。 如果您執行舊版,建議您安裝或更新至最新的修補程式,因為不再支援舊版。

使用雲端身分識別來配置裝置

既然容器引擎和 IoT Edge 執行時間已安裝在您的裝置上,您就可以進行下一個步驟,也就是使用其雲端身分識別和驗證資訊來設定裝置。

在 IoT Edge 裝置上,開啟設定檔。

sudo nano /etc/iotedge/config.yaml

尋找檔案的布建組態,並在尚未取消批注的情況下,使用連接字串 區段取消批註 手動布建組態。

# Manual provisioning configuration using a connection string
provisioning:
source: "manual"
device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"

使用您的 IoT Edge 裝置中的連接字串更新 device_connection_string 的值。 請確定其他任何配置區段都已註解掉。請確定 配置: 行前面沒有空格,且巢狀項目縮排兩個空格。

若要將剪貼簿內容貼到 Nano Shift+Right Click,或按 Shift+Insert

儲存並關閉檔案。

CTRL + XYEnter

在組態檔中輸入布建信息之後,請重新啟動精靈:

sudo systemctl restart iotedge

確認設定成功

確認您的 IoT Edge 裝置上已成功安裝並設定執行階段。

小提示

您需要有較高的權限才能執行 iotedge 命令。 當您在安裝 IoT Edge 執行階段之後登出機器,並第一次重新登入時,您的權限將會自動更新。 在那之前,請在這些命令前面使用 sudo

確認 IoT Edge 系統服務正在執行。

sudo systemctl status iotedge

如果您需要對服務進行疑難排解,請擷取服務記錄。

journalctl -u iotedge

使用 check 工具來驗證裝置的設定和連線狀態。

sudo iotedge check

小提示

務必使用 sudo 來執行檢查工具,即使更新了您的權限也要這樣做。 此工具需要較高的權限,才能存取組態檔,以確認組態狀態。

備註

在新佈建的裝置上,您可能會看到與 IoT Edge 中樞相關的錯誤:

× 生產環境準備度:Edge Hub 的儲存目錄會保存在主機檔案系統上 - 錯誤

無法檢查 edgeHub 容器的目前狀態

新佈建的裝置上預期會發生此錯誤,因為 IoT Edge 中樞模組未在執行中。 若要解決錯誤,請在 IoT 中樞內設定裝置的模組並建立部署。 建立裝置部署時,會啟動裝置上的各個模組,包括 IoT Edge 中樞模組。

檢視在 IoT Edge 裝置上執行的所有模組。 當服務啟動時,您應該只會看到 edgeAgent 模組正在執行。 edgeAgent 模組預設會執行,且有助於安裝及啟動部署至裝置的任何其他模組。

sudo iotedge list

當您建立新的 IoT Edge 裝置時,其會在 Azure 入口網站中顯示狀態碼 417 -- The device's deployment configuration is not set。 此狀態為正常,表示裝置已就緒可接收模組部署。

離線或特定版本安裝 (選擇性)

本節中的步驟適用於標準安裝步驟未涵蓋的情況。 可能包括:

  • 離線時安裝 IoT Edge
  • 安裝候選版

如果您想要安裝的特定 Azure IoT Edge 執行階段版本無法透過套件管理員取得,請使用本節中的步驟。 Microsoft 套件清單只包含一組有限的最新版本及其子版本,因此這些步驟適用於想要安裝較舊版本或候選版本的任何人員。

您可以使用 curl 命令,直接從 IoT Edge GitHub 存放庫將元件檔案設為目標。

  1. 瀏覽至 Azure IoT Edge 版本,並尋找您想要設為目標的版本。

  2. 展開該版本的 資產 區段。

  3. 每個版本都應該有IoT Edge安全性精靈和 hsmlib 的新檔案。 如果您要在離線裝置上安裝 IoT Edge,請事先下載這些檔案。 否則,請使用下列命令來更新這些元件。

    1. 尋找符合IoT Edge裝置架構的 libiothsm-std 檔案。 以滑鼠右鍵按一下檔案連結,並複製連結位址。

    2. 使用下列命令中的複製連結來安裝該版本的 hsmlib:

      curl -L <libiothsm-std_link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. 尋找符合IoT Edge裝置架構的 iotedge 檔案。 以滑鼠右鍵按一下檔案連結,並複製連結位址。

    4. 使用下列命令中的複製連結來安裝該版本的 IoT Edge 安全性精靈。

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

現在,容器引擎和 IoT Edge 執行環境已安裝在您的裝置上,您現在可以開始下一步:使用其雲端身份識別配置裝置

解除安裝 IoT Edge

如果您想要從裝置移除 IoT Edge 安裝,請使用下列命令。

移除 IoT Edge 執行階段。

sudo apt-get autoremove iotedge

IoT Edge 執行階段移除後,其所建立的任何容器隨即停止,但仍會存在於您的裝置上。 檢視所有容器以查看哪些容器保留下來。

sudo docker ps -a

刪除您裝置中的容器,包括兩個執行階段容器。

sudo docker rm -f <container name>

最後,移除裝置中的容器執行階段。

sudo apt-get autoremove --purge moby-engine