使用對稱密鑰在 Windows 裝置上建立及布建適用於 Linux 的 IoT Edge

適用於:IoT Edge 1.4 checkmark IoT Edge 1.4

重要

支援的版本是 IoT Edge 1.4。 如果您是舊版,請參閱更新 IoT Edge

本文提供在 Windows 裝置上註冊和布建適用於 Linux 的 IoT Edge 的端對端指示。

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

本文中的步驟會逐步解說一個稱為手動布建的程式,您可以在其中將單一裝置連線到其 IoT 中樞。 針對手動布建,您有兩個選項可用來驗證 IoT Edge 裝置:

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

    這個驗證方法的啟動速度較快,但不是那麼安全。

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

    此驗證方法更安全,而且建議用於生產案例。

本文涵蓋使用對稱金鑰作為驗證方法。 如果您想要使用 X.509 憑證,請參閱 使用 X.509 憑證在 Windows 裝置上建立和布建適用於 Linux 的 IoT Edge。

注意

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

必要條件

本文涵蓋在 Windows 上註冊 IoT Edge 裝置及安裝適用於 Linux 的 IoT Edge。 這些工作有不同的必要條件和公用程式,可用來完成這些工作。 在繼續之前,請確定您已涵蓋所有必要條件。

裝置管理工具

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

Azure 訂用帳戶中的免費或標準 IoT 中樞

裝置需求

具有下列最低需求的 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 函式參考

註冊您的裝置

視您的喜好設定而定,您可以使用 Azure 入口網站、Visual Studio Code 或 Azure CLI 來註冊您的裝置。

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

  1. 登入 Azure 入口網站 並流覽至IoT中樞。

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

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

    • 建立描述性的裝置識別碼,例如 my-edge-device-1 (所有小寫)。 複製此裝置識別碼,因為您稍後會使用它。
    • 核取 [ IoT Edge 裝置 ] 複選框。
    • 選取 [對稱金鑰] 作為 [驗證類型]。
    • 使用預設設定來自動產生驗證密鑰,以將新裝置連線到您的中樞。
  4. 選取 [儲存]。

您應該會看到IoT中樞中列出的新裝置。

既然您已在 IoT 中樞 中註冊裝置,您可以在下一個步驟中擷取用來完成 IoT Edge 運行時間安裝和布建的布建資訊。

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

使用對稱金鑰驗證的裝置需要其 連接字串,才能完成IoT Edge執行時間的安裝和布建。 當您建立裝置時,會為IoT Edge裝置產生 連接字串。 針對 Visual Studio Code 和 Azure CLI,連接字串 位於 JSON 輸出中。 如果您使用 Azure 入口網站 來建立裝置,您可以從裝置本身找到 連接字串。 當您在IoT中樞中選取裝置時,它會列在 Primary connection string 裝置頁面上。

連線到 IoT 中樞的邊緣裝置會列在 IoT 中樞的 [裝置 ] 頁面上。 如果您有多個裝置,您可以選取 Iot Edge 裝置類型來篩選清單,然後選取 [套用]。

當您準備好設定裝置時,您需要連結實體裝置及其身分識別在IoT中樞內的 連接字串。 使用對稱金鑰進行驗證的裝置具有可在入口網站中複製其 連接字串。 若要在入口網站中尋找您的 連接字串:

  1. 從 [ 裝置] 頁面,從清單中選取 [IoT Edge 裝置標識符]。
  2. 複製 Primary 連線 ion StringSecondary 連線 ion String 的值。 任一金鑰都能夠運作。

安裝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 視窗會報告 [部署成功]。

    A successful deployment will say 'Deployment successful' at the end of the messages, PNG.

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

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

您已準備好使用裝置的雲端身分識別和驗證資訊來設定裝置。

若要使用對稱金鑰布建裝置,您需要裝置的 連接字串

在目標裝置上提升許可權的 PowerShell 工作階段中執行下列命令。 將佔位元文字取代為您自己的值。

Provision-EflowVm -provisioningType ManualConnectionString -devConnString "PASTE_DEVICE_CONNECTION_STRING_HERE"

如需命令的詳細資訊 Provision-EflowVM ,請參閱 Windows 上適用於適用於 Linux 的 IoT Edge PowerShell 函式。

確認設定成功

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

  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. 選取 [卸載]

下一步