使用對稱金鑰大規模在 Windows 裝置上建立和布建適用於 Linux 的 IoT Edge

適用於:IoT Edge 1.4 複選標記 IoT Edge 1.4

重要

支援 IoT Edge 1.5 LTS 和 IoT Edge 1.4 版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge

本文說明如何使用對稱密鑰在 Windows 裝置上自動佈建一或多個適用於 Linux 的 IoT Edge。 您可以使用 Azure IoT 中樞 裝置布建服務 (DPS) 自動布建 Azure IoT Edge 裝置。 如果您不熟悉自動布建程式,請先檢閱 布建概觀 ,再繼續進行。

工作如下所示:

  1. 建立單一裝置的個別註冊一組裝置的群組註冊
  2. 部署已安裝IoT Edge運行時間的Linux虛擬機,並將其連線至 IoT 中樞。

對稱金鑰證明是使用裝置佈建服務實例驗證裝置的簡單方法。 對於不熟悉裝置佈建或沒有嚴格安全性需求的開發人員,這個證明方法代表 "Hello world" 經驗。 使用 TPMX.509 憑證 的裝置證明更安全,而且應該用於更嚴格的安全性需求。

必要條件

雲端資源

  • 作用中的IoT中樞
  • Azure 中 IoT 中樞 裝置布建服務的實例,已連結至IoT中樞
    • 如果您沒有裝置佈建服務實例,您可以依照建立新的 IoT 中樞 裝置布建服務和連結 IoT 中樞 裝置布建服務快速入門的IoT中樞和裝置布建服務小節中的指示操作。
    • 執行裝置布建服務之後,請從 [概觀] 頁面複製 [標識符範圍] 的值。 當您設定 IoT Edge 執行時間時,請使用此值。

裝置需求

具有下列最低需求的 Windows 裝置:

  • 系統需求

    • Windows 101/11 (專業版、企業版、IoT 企業版)
    • Windows Server 20191/2022
      1 已安裝所有目前累積更新的 Windows 10 和 Windows Server 2019 最低組建 17763。
  • 硬體需求

    • 最小可用記憶體:1 GB
    • 最小可用磁碟空間:10 GB
  • 虛擬化支援

    • 在 Windows 10 上,啟用 Hyper-V。 如需詳細資訊,請參閱 在 Windows 10 上安裝 Hyper-V。
    • 在 Windows Server 上安裝 Hyper-V 角色,並建立預設網路交換器。 如需詳細資訊,請參閱 Windows 上適用於 Linux 的 Azure IoT Edge 巢狀虛擬化。
    • 在虛擬機上,設定巢狀虛擬化。 如需詳細資訊,請參閱 巢狀虛擬化
  • 網路支援

    • Windows Server 未隨附預設參數。 您必須先建立虛擬交換器,才能將 EFLOW 部署至 Windows Server 裝置。 如需詳細資訊,請參閱 在 Windows 上建立 Linux 的虛擬交換器。
    • Windows 桌面版本隨附可用於 EFLOW 安裝的預設參數。 如有需要,您可以建立自己的自定義虛擬交換器。

提示

如果您想要在 Windows 部署上的適用於 Linux 的 Azure IoT Edge 中使用 GPU 加速的 Linux 模組 ,有幾個組態選項需要考慮。

您必須根據您的 GPU 架構安裝正確的驅動程式,而且您可能需要存取 Windows 測試人員計劃組建。 若要判斷您的設定需求並滿足這些必要條件,請參閱 Windows 上適用於 Linux 的 Azure IoT Edge GPU 加速。

請確定您花點時間滿足 GPU 加速的必要條件。 如果您決定要在安裝期間加速 GPU,則必須重新啟動安裝程式。

開發人員工具

準備您的目標裝置,以在 Windows 上安裝適用於 Linux 的 Azure IoT Edge,以及部署 Linux 虛擬機:

  1. 將目標裝置上的執行原則設定為 AllSigned。 您可以使用下列命令,在提升權限的 PowerShell 提示字元中檢查目前的執行原則:

    Get-ExecutionPolicy -List
    

    如果 的執行原則 local machine 不是 AllSigned,您可以使用下列項目來設定執行原則:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

如需 Windows PowerShell 模組上適用於 Linux 的 Azure IoT Edge 模組的詳細資訊,請參閱 PowerShell 函式參考

建立 DPS 註冊

建立註冊,以透過 DPS 布建一或多個裝置。

如果您想要布建單一 IoT Edge 裝置,請建立 個別註冊。 如果您需要布建多個裝置,請遵循建立 DPS 群組註冊的步驟。

當您在 DPS 中建立註冊時,有機會宣告初始裝置對應項 狀態。 在裝置對應項中,您可以透過解決方案中所需的任何計量,將標籤設定為群組裝置,例如區域、環境、位置或裝置類型。 這些標記可用來建立 自動部署

如需裝置布建服務中註冊的詳細資訊,請參閱 如何管理裝置註冊

建立 DPS 個別註冊

提示

本文中的步驟適用於 Azure 入口網站,但您也可以使用 Azure CLI 建立個別註冊。 如需詳細資訊,請參閱 az iot dps enrollment。 在 CLI 命令中,使用 已啟用邊緣的 旗標來指定註冊適用於 IoT Edge 裝置。

  1. Azure 入口網站 中,流覽至 IoT 中樞 裝置布建服務的實例。

  2. 在 [設定] 下方,選取 [管理註冊]

  3. 選取 [ 新增個別註冊 ],然後完成下列步驟來設定註冊:

    1. 針對 [ 機制],選取 [ 對稱密鑰]。

    2. 為您的裝置提供唯 一的註冊標識碼

    3. 或者,為裝置提供 IoT 中樞 裝置標識符。 您可以使用裝置識別碼,將個別裝置設為模組部署的目標。 如果您沒有提供裝置識別碼,則會使用註冊標識碼。

    4. 選取 [True ] 以宣告註冊適用於IoT Edge裝置。

    5. 或者,將標籤值新增至 初始裝置對應項狀態。 您可以使用標籤將裝置群組設為模組部署的目標群組。 例如:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. 選取 [儲存]。

  4. 複製個別註冊的主 值,以在安裝IoT Edge執行時間時使用。

現在,此裝置的註冊已存在,IoT Edge 運行時間可以在安裝期間自動布建裝置。

安裝IoT Edge

在目標裝置上的 Windows 上部署適用於 Linux 的 Azure IoT Edge。

注意

下列 PowerShell 程式概述如何在 Windows 上將適用於 Linux 的 IoT Edge 部署至本機裝置。 若要使用 PowerShell 部署至遠端目標裝置,您可以使用 遠端 PowerShell 來建立遠端裝置的連線,並在該裝置上遠端執行這些命令。

  1. 在提升許可權的 PowerShell 工作階段中,根據您的目標裝置架構執行下列其中一個命令,以在 Windows 上下載適用於 Linux 的 IoT Edge。

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. 在裝置上的 Windows 上安裝適用於 Linux 的 IoT Edge。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    您可以在 Windows 安裝和 VHDX 目錄上指定適用於 Linux 的自定義 IoT Edge,方法是將 和 VHDXDIR="<FULLY_QUALIFIED_PATH>" 參數新增INSTALLDIR="<FULLY_QUALIFIED_PATH>"至 install 命令。 例如,如果您想要使用 D:\EFLOW 資料夾進行安裝和 VHDX 的 D:\EFLOW-VHDX ,您可以使用下列 PowerShell Cmdlet。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. 如果目標裝置尚未執行,請將目標裝置上的執行原則設定為 AllSigned 。 請參閱命令的 PowerShell 必要條件,以檢查目前的執行原則,並將執行原則設定為 AllSigned

  4. 在 Windows 部署上建立適用於 Linux 的 IoT Edge。 部署會建立Linux虛擬機,並為您安裝IoT Edge運行時間。

    Deploy-Eflow
    

    提示

    根據預設, Deploy-Eflow 命令會使用 1 GB 的 RAM、1 個 vCPU 核心和 16 GB 的磁碟空間來建立 Linux 虛擬機。 不過,VM 所需的資源高度相依於您部署的工作負載。 如果您的 VM 沒有足夠的記憶體來支援您的工作負載,它將無法啟動。

    您可以使用命令的選擇性參數來自定義虛擬機的可用資源 Deploy-Eflow 。 這是在具有最低硬體需求之裝置上部署 EFLOW 的必要專案。

    例如,下列命令會建立具有1個 vCPU 核心的虛擬機、1 GB 的 RAM(以 MB 表示),以及 2 GB 的磁碟空間:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    如需所有可用選用參數的資訊,請參閱 Windows 上適用於 Linux 的 IoT Edge PowerShell 函式。

    警告

    根據預設,EFLOW Linux 虛擬機沒有 DNS 設定。 使用 DHCP 的部署會嘗試取得 DHCP 伺服器所傳播的 DNS 組態。 請檢查您的 DNS 設定,以確保因特網連線。 如需詳細資訊,請參閱 AzEFLOW-DNS

    您可以將 GPU 指派給部署,以啟用 GPU 加速的 Linux 模組。 若要取得這些功能的存取權,您必須在 Windows 上安裝適用於 Linux 的 Azure IoT Edge GPU 加速中詳述的必要條件。

    若要使用 GPU 傳遞,請將 gpuNamegpuPassthroughTypegpuCount 參數新增至命令Deploy-Eflow 如需所有可用選用參數的資訊,請參閱 Windows 上適用於 Linux 的 IoT Edge PowerShell 函式。

    警告

    啟用硬體裝置傳遞可能會增加安全性風險。 如果適用,Microsoft 建議來自 GPU 廠商的裝置風險降低驅動程式。 如需詳細資訊,請參閱 使用離散裝置指派部署圖形裝置。

  5. 輸入 『Y』 以接受授權條款。

  6. 根據您的喜好設定,輸入 『O』 或 『R』 來切換 選擇性診斷數據

  7. 部署完成後,PowerShell 視窗會報告 [部署成功]。

    成功的部署會在訊息 PNG 結束時表示「部署成功」。

    部署成功之後,您就可以布建裝置。

使用雲端身分識別來佈建裝置

在裝置上安裝運行時間之後,請使用用來連線到裝置布建服務和 IoT 中樞的信息來設定裝置。

備妥下列資訊:

在提升許可權的 PowerShell 工作階段中執行下列命令,並使用您自己的值更新佔位元值:

Provision-EflowVm -provisioningType DpsSymmetricKey -scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -symmKey PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE

確認安裝成功

確認 Windows 上的適用於 Linux 的 IoT Edge 已成功在 IoT Edge 裝置上安裝和設定。

您可以確認已使用您在裝置布建服務中建立的個別註冊。 流覽至 Azure 入口網站 中的裝置布建服務實例。 開啟您所建立之個別註冊的註冊詳細數據。 請注意,已指派註冊狀態,並列出裝置標識碼。

  1. 在 PowerShell 會話中使用下列命令登入 Windows 虛擬機上的適用於 Linux 的 IoT Edge:

    Connect-EflowVm
    

    注意

    唯一允許透過 SSH 連線到虛擬機的帳戶是建立虛擬機的使用者。

  2. 登入之後,您可以使用下列 Linux 命令來檢查執行 IoT Edge 模組的清單:

    sudo iotedge list
    
  3. 如果您需要針對IoT Edge服務進行疑難解答,請使用下列Linux命令。

    1. 擷取服務記錄。

      sudo iotedge system logs
      
    2. 使用 工具來 check 驗證裝置的組態和連線狀態。

      sudo iotedge check
      

    注意

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

    ×生產整備:Edge Hub 的記憶體目錄會保存在主機文件系統上 - 錯誤

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

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

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

在 Windows 上卸載適用於 Linux 的 IoT Edge

如果您想要從裝置移除適用於 Linux 的 Azure IoT Edge,請使用下列命令。

  1. 在 Windows 上開啟 設定
  2. 選取[新增或移除程式]
  3. 選取 Azure IoT Edge 應用程式
  4. 選取 [卸載]

下一步

裝置布建服務註冊程式可讓您在布建新裝置的同時,設定裝置標識碼和裝置對應項標籤。 您可以使用這些值,以使用自動裝置管理,以個別裝置或裝置群組為目標。 瞭解如何使用 Azure 入口網站 或使用 Azure CLI 大規模部署和監視 IoT Edge 模組。

您也可以: