共用方式為


快速入門:將您的第一個 IoT Edge 模組部署至虛擬 Linux 裝置

適用於:IoT Edge 1.5 核取記號 IoT Edge 1.5

重要

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

在本快速入門中,將容器化程式碼部署至虛擬 Linux IoT Edge 裝置,以嘗試 Azure IoT Edge。 IoT Edge 可讓您從遠端管理裝置上的程式碼,以便將更多工作負載傳送至邊緣。 在本快速入門中,請針對 IoT Edge 裝置使用 Azure 虛擬機器。 它可讓您快速建立測試機器,並在完成後將其刪除。

在此快速入門中,您可了解如何:

  • 建立 IoT 中樞。
  • 向 IoT 中樞註冊 IoT Edge 裝置。
  • 在虛擬裝置上安裝並啟動 IoT Edge 執行階段。
  • 將模組從遠端部署至 IoT Edge 裝置。

圖表:裝置和雲端的快速入門架構。

本快速入門將引導您建立設定為 IoT Edge 裝置的 Linux 虛擬機器。 接著,您可以從 Azure 入口網站將模組部署至裝置。 本快速入門使用模擬感測器模組來產生溫度、濕度和壓力資料。 其他 Azure IoT Edge 教學課程會以您在此所做的工作為基礎,部署其他模組來分析模擬資料以產生商業見解。

如果您沒有使用中的 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

設定 Azure CLI 的環境。

一個資源群組,用以管理本快速入門中使用的所有資源。 本快速入門和下列教學課程會使用範例資源群組名稱 IoTEdgeResources

az group create --name IoTEdgeResources --location westus2

建立 IoT 中樞

使用 Azure CLI 建立 IoT 中樞,以啟動快速入門。

顯示如何在雲端中建立 IoT 中樞的圖表。

IoT 中樞的免費層適用於此快速入門。 如果您在過去已使用過 IoT 中樞,並已建立中樞,您可以使用該 IoT 中樞。

下列程式碼會在資源群組 IoTEdgeResources 中建立免費的 F1 中樞。 取代 <hub-name> 為 IoT 中樞的唯一名稱。 建立 IoT 中樞可能需要幾分鐘的時間。

az iot hub create --resource-group IoTEdgeResources --name <hub-name> --sku F1 --partition-count 2

如果您因為訂用帳戶中已經有一個免費的 IoT 中樞而收到錯誤,請將 SKU 變更為 S1。 每個訂用帳戶只能有一個免費的 IoT 中樞。 如果您收到無法使用 IoT 中樞名稱的錯誤,表示已有其他人的中樞使用該名稱。 請嘗試使用新名稱。

註冊 IoT Edge 裝置

向您剛才建立的 IoT 中樞註冊 IoT Edge 裝置。

圖表:如何使用 IoT 中樞身分識別註冊裝置。

建立 IoT Edge 裝置的裝置身分識別,使它能與 IoT 中樞通訊。 裝置身分識別存在於雲端,您可以使用唯一裝置連接字串來建立實體裝置與裝置身分識別的關聯。

由於 IoT Edge 裝置的行為和管理方式與一般 IoT 裝置不同,因此請使用旗標將 --edge-enabled 此身分識別宣告為 IoT Edge 裝置。

  1. 在 Azure Cloud Shell 中輸入下列命令,以在中樞中建立名為 myEdgeDevice 的裝置。

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name <hub-name>
    

    如果您收到有關 iothubowner 原則金鑰的錯誤,請確定您的 Cloud Shell 正在執行最新版本的 azure-iot 延伸模組。

  2. 檢查裝置的連接字串,以將實體裝置連結至其在 IoT 中樞 中的身分識別。 它包含 IoT 中樞的名稱、裝置的名稱,以及驗證它們之間連線的共用金鑰。 您可以在下一節中再次使用此連接字串來設定 IoT Edge 裝置。

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <hub-name>
    

    例如,連接字串看起來應該類似於 HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE-SHARED-ACCESS-KEY>

設定您的 IoT Edge 裝置

使用 Azure IoT Edge 執行階段建立虛擬機器。

圖表:如何在裝置上啟動執行階段。

IoT Edge 執行階段會部署在所有 IoT Edge 裝置上,並具有三個元件。 IoT Edge 安全性精靈會在每次 IoT Edge 裝置開機時啟動,並藉由啟動 IoT Edge 代理程式來啟動該裝置。 IoT Edge 代理程式有助於在 IoT Edge 裝置 (包括 IoT Edge 中樞) 上部署及監視模組。 IoT Edge 中樞會管理 IoT Edge 裝置上的模組通訊,以及裝置與 IoT 中樞之間的通訊。

在執行階段設定期間,請提供裝置連接字串。 此字串是從 Azure CLI 擷取。 此字串會將您的實體裝置與 Azure 中的 IoT Edge 裝置身分識別產生關聯。

部署 IoT Edge 裝置

本節將使用 Azure Resource Manager 範本來建立新的虛擬機器,並在其中安裝 IoT Edge 執行階段。 如果您想要改為使用自己的 Linux 裝置,您可以遵循手動佈建單一 Linux IoT Edge 裝置中的安裝步驟,然後再返回本快速入門。

使用 [部署至 Azure ] 按鈕或 CLI 命令,根據預先建置的 iotedge-vm-deploy 範本建立 IoT Edge 裝置。

  • 使用 IoT Edge Azure Resource Manager 範本進行部署。

    部署至 Azure

  • 針對 Bash 或 Cloud Shell 使用者,請將下列命令複製到文字編輯器 (以您的資訊取代預留位置文字),然後複製到您的 Bash 或 Cloud Shell 視窗:

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \
    --parameters adminUsername='azureUser' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    
  • 針對 PowerShell 使用者,請將下列命令複製到您的 PowerShell 視窗,然後以您自己的資訊取代預留位置文字:

    az deployment group create `
    --resource-group IoTEdgeResources `
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" `
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' `
    --parameters adminUsername='azureUser' `
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) `
    --parameters authenticationType='password' `
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    

此範本會取用下列參數:

參數 描述
資源群組 建立資源的資源群組。 使用我們在本文中使用的預設 IoTEdgeResources,或提供您訂用帳戶中現有資源群組的名稱。
template-uri 我們所用 Resource Manager 範本的指標。
dnsLabelPrefix 用來建立虛擬機器主機名稱的字串。 將預留位置文字取代為您虛擬機器的名稱。
adminUsername 虛擬機器管理帳戶的使用者名稱。 使用範例 azureUser 或提供新的使用者名稱。
deviceConnectionString IoT 中樞中裝置身分識別的連接字串,用來設定虛擬機器上的 IoT Edge 執行階段。 此參數內的 CLI 命令會為您抓取連接字串。 以您的 IoT 中樞名稱取代預留位置文字。
authenticationType 管理帳戶的驗證方法。 本快速入門會使用密碼驗證,但您也可以將此參數設定為 sshPublicKey
adminPasswordOrKey 管理帳戶的 SSH 金鑰密碼或值。 以安全密碼取代預留位置文字。 您的密碼長度必須至少有 12 個字元,而且有下列四項中的三項:小寫字元、大寫字元、數字和特殊字元。

部署完成後,CLI 中的 JSON 格式輸出會包含連線至虛擬機器的 SSH 資訊。 複製 [輸出] 區段的 [公用 SSH] 項目值。 例如,您的 SSH 命令看起來應該類似於 ssh azureUser@edge-vm.westus2.cloudapp.azure.com

檢視 IoT Edge 執行階段狀態

此快速入門中的其餘命令,會在您的 IoT Edge 裝置本身上執行,讓您可以查看在裝置上發生的事。 如果您使用的是虛擬機器,請使用您所設定的管理使用者名稱和部署命令所輸出的 DNS 名稱,立即連線到該機器。 您也可在 Azure 入口網站中您虛擬機器的 [概觀] 頁面上找到 DNS 名稱。 使用下列命令連線到您的虛擬機器。 將<admin-username><DNS-name> 取代為您自己的值。

ssh <admin-username>@<DNS-name>

連線到您的虛擬機器之後,請確認 IoT Edge 裝置上已成功安裝並設定執行階段。

  1. 檢查 IoT Edge 是否正在執行。 如果 IoT Edge 正在執行或提供任何服務錯誤,下列命令會傳回 [確定] 狀態。

    sudo iotedge system status
    

    提示

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

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

    sudo iotedge system logs
    
  3. 檢視在 IoT Edge 裝置上執行的所有模組。 由於服務只有第一次會啟動,您應該只會看到 edgeAgent 模組正在執行。 edgeAgent 模組預設會執行,且有助於安裝及啟動部署至裝置的任何其他模組。

    sudo iotedge list
    

IoT Edge 裝置現已設定完成。 其已準備好執行雲端部署的模組。

部署模組

從雲端管理您的 Azure IoT Edge 裝置,以部署將裝置遙測資料傳送至 IoT 中樞的模組。

圖表:如何將模組從雲端部署到裝置。

Azure IoT Edge 的一項關鍵功能是從雲端將程式碼部署至 IoT Edge 裝置。 IoT Edge 模組是實作為容器的可執行檔套件。 在本節中,您會從 Microsoft 成品登錄的 IoT Edge 模組區段部署預先建置的模組。

您在本節中部署的模組會模擬感應器,並傳送產生的資料。 當您開始使用 IoT Edge 時,此模組會是很有用的一組程式碼,因為您可以使用模擬的資料進行開發和測試。 如果您想要清楚檢視此模組的運作情形,您可以檢視模擬溫度感應器的原始程式碼

使用下列步驟來部署您的第一個模組。

  1. 登入 Azure 入口網站,並移至您的 IoT 中樞。

  2. 從左側功能表的 [裝置管理] 底下,選取 [裝置]

  3. 從清單中選取目標 IoT Edge 裝置的裝置識別碼。

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

  4. 在上方列中,選取 [設定模組]

    選擇要在裝置上運行的模組。 您可以選擇自己建置的模組,或是容器登錄中的映像。 在本快速入門中,您會從 Microsoft 容器登錄部署模組。

  5. 在 [IoT Edge 模組] 區段中,選取 [新增],然後選擇 [IoT Edge Module 模組]

  6. 更新下列模組設定:

    設定
    IoT 模組名稱 SimulatedTemperatureSensor
    映像 URI mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest
    重新啟動原則 always
    需要的狀態 執行中
  7. 選取 [下一步:路由] 以繼續設定路由。

  8. 新增路由,以將所有訊息從模擬的溫度模組傳送到 IoT 中樞。

    設定
    名稱 SimulatedTemperatureSensorToIoTHub
    FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
  9. 完成時,選取 [下一步:檢閱 + 建立]。

  10. 檢閱 JSON 檔案,然後選取 [建立]。 JSON 檔案會定義您部署至 IoT Edge 裝置的所有模組。

    注意

    當將新的部署提交至 IoT Edge 裝置時,不會有任何項目推送至裝置。 此時,裝置會定期查詢 IoT 中樞以取得新的指示。 裝置在發現更新的部署資訊清單時,即會使用新部署的相關資訊從雲端提取模組映像,然後開始在本機執行模組。 此程序可能需要幾分鐘的時間。

在您建立模組部署詳細資料之後,精靈會讓您回到裝置詳細資料頁面。 在 [模組] 索引標籤上檢視部署狀態。

您應看到三個模組:$edgeAgent$edgeHubSimulatedTemperatureSensor。 如果一或多個模組的 [已在部署中指定] 下顯示 [是],但在 [由裝置回報] 下未顯示,則您的 IoT Edge 裝置仍在啟動這些模組。 等待幾分鐘,然後重新整理頁面。

螢幕擷取畫面:顯示已部署模組清單中的 SimulatedTemperatureSensor。

如果您在部署模組時遇到問題,請參閱針對 Azure 入口網站的 IoT Edge 裝置進行疑難排解,深入瞭解。

檢視產生的資料

在本快速入門中,您會建立新的 IoT Edge 裝置,並在其上安裝 IoT Edge 執行階段。 然後,您可以使用 Azure 入口網站 部署 IoT Edge 模組,以在裝置上執行,而不需要變更裝置本身。

在此案例中,您推送的模組會產生可用於稍後測試的環境資料範例。 模擬感應器會同時監視機器本身和機器的周邊環境。 例如,此感測器可以位於伺服器機房、工廠車間或風力渦輪機上。 訊息包含環境溫度和溼度、機器溫度和壓力,以及時間戳記。 IoT Edge 教學課程會使用此模組所建立的資料作為分析的測試資料。

在 IoT Edge 裝置上開啟命令提示字元,或使用 Azure CLI 中的 SSH 連線。 確認您從雲端部署的模組正在 IoT Edge 裝置上執行:

sudo iotedge list

螢幕擷取畫面:顯示裝置上的三個模組。

查看從溫度傳感器模塊發送的消息:

sudo iotedge logs SimulatedTemperatureSensor -f

螢幕擷取畫面:顯示輸出控制台中的模組資料。

提示

IoT Edge 命令在參考模組名稱時會區分大小寫。

清除資源

若要繼續 IoT Edge 教學課程,請使用您在本快速入門中註冊和設定的裝置。 否則,請刪除您建立的 Azure 資源,以避免收費。

如果您是在新的資源群組中建立虛擬機器和 IoT 中樞,您可以刪除該群組和所有相關聯的資源。 仔細檢查資源群組的內容,以確保沒有您想要保留的內容。 如果您不想刪除整個群組,可改為刪除個別資源。

重要

刪除資源群組是無法回復的動作。

刪除 IoTEdgeResources 群組。 刪除資源群組可能需要幾分鐘的時間。

az group delete --name IoTEdgeResources --yes

檢視資源群組清單,確認已刪除資源群組。

az group list

下一步

在本快速入門中,您已建立 IoT Edge 裝置,並使用 Azure IoT Edge 雲端介面將程式碼部署至裝置上。 現在,您使用測試裝置來產生有關其環境的原始資料。

在下一個教學課程中,您將了解如何從 Azure 入口網站監視裝置的活動和健康情況。