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

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

重要

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

在本快速入門中測試 Azure IoT Edge,方法是將容器化程式代碼部署至虛擬 Linux 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 中樞。 以 IoT 中樞的唯一名稱來取代 {hub_name}。 建立 IoT 中樞可能需要幾分鐘的時間。

az iot hub create --resource-group IoTEdgeResources --name {hub_name} --sku F1 --partition-count 2

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

註冊 IoT Edge 裝置

向新建立的 IoT 中樞註冊 IoT Edge 裝置。

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

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

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

  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 或提供新的用戶名稱。
device 連線 ionString IoT 中樞 中的裝置身分識別 連接字串,用來在虛擬機上設定IoT Edge運行時間。 此參數內的 CLI 命令會為您擷取 連接字串。 將佔位元文字取代為您的IoT中樞名稱。
authenticationType 系統管理員帳戶的驗證方法。 本快速入門使用 密碼 驗證,但您也可以將此參數設定為 sshPublicKey
adminPasswordOrKey 系統管理員帳戶的 SSH 金鑰密碼或值。 以安全密碼取代佔位元文字。 您的密碼長度必須至少有 12 個字元,而且有下列四項中的三項:小寫字元、大寫字元、數字和特殊字元。

部署完成之後,您應該會在 CLI 中收到 JSON 格式的輸出,其中包含連線到虛擬機器的 SSH 資訊。 複製 outputs 區段的公用 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 正在執行,或提供任何服務錯誤,下列命令應該會傳回 Ok 的狀態

    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 模組 是實作為容器的可執行套件。 在本節中,您將直接從 Azure MarketplaceIoT Edge 模組區段部署預先建置的模組 Azure IoT 中樞。

您在本節中部署的模組會模擬感測器,並傳送產生的數據。 當您開始使用IoT Edge時,此課程模組是實用的程式代碼片段,因為您可以使用仿真的數據進行開發和測試。 如果您想要確切查看此模組的用途,您可以檢視 仿真的溫度感測器原始程式碼

請遵循下列步驟來啟動 [ 設定模組 精靈],從 Azure Marketplace 部署您的第一個模組。

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

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

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

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

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

    選擇您想要在裝置上執行的模組。 您可以選擇您已建立的模組、來自 Azure Marketplace 的模組,或您自己建置的模組。 在本快速入門中,您將從 Azure Marketplace 部署模組。

  5. [IoT Edge 模組] 下,開啟 [ 新增 ] 下拉功能表,然後選取 [Marketplace 模組]。

  6. IoT Edge 模組 Marketplace 中,搜尋並選取 Simulated Temperature Sensor 模組。 模組會新增至具有所需 執行 狀態的IoT Edge模組區段。

  7. 選取 [ 下一步:路由 ] 以繼續設定路由。

    當您從 Azure Marketplace 新增模組時,會自動建立名為 SimulatedTemperatureSensorToIoTHub 的路由。 此路由會將模擬溫度模組中的所有訊息傳送至 IoT 中樞。

  8. 完成時,選取 [下一步:檢閱 + 建立]。

  9. 檢閱 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 入口網站 監視裝置的活動和健康情況。