分享方式:


教學課程:使用 Ubuntu (18.04 x64) 模擬器參考代理程式的 Azure IoT 中樞裝置更新

本教學課程示範使用 IoT 中樞裝置更新的端對端映像型更新。 Azure IoT 中樞裝置更新支援映像型、套件型和指令碼型更新。

映像更新會在裝置的最終狀態提供更高的信賴度。 在預先實際執行環境與實際執行環境之間複寫映像更新的結果通常比較容易,因為其不會引起與管理套件及其相依性相同的挑戰。 由於其不可部分完成的本質,您也可以輕鬆地採用 A/B 容錯移轉模型。

在本教學課程中,您將了解如何:

  • 使用標籤以將 IoT 裝置指派給裝置更新群組。
  • 下載並安裝映像。
  • 匯入更新。
  • 部署映像更新。
  • 監視更新部署。

必要條件

  • 建立透過 IoT 中樞設定的裝置更新帳戶和執行個體

  • 擁有 Ubuntu 18.04 裝置。 裝置可以是實體或虛擬機器。

  • 在最新版本中,從發行資產下載名為 Tutorial_Simulator.zip 的 ZIP 檔案,並將其解壓縮。

    如果您的測試裝置與開發機器不同,請將 zip 檔案下載到這兩者。

    您可以使用 wget 來下載 zip 檔案。 以最新版本取代 <release_version>,例如 1.0.0

    wget https://github.com/Azure/iot-hub-device-update/releases/download/<release_version>/Tutorial_Simulator.zip
    

註冊裝置並設定模組 ID

在 IoT 中樞中,將裝置新增至裝置登錄檔。 包含 IoT 中樞的每個裝置都必須註冊。

在本節中,我們也將建立模組 ID。 模組是 IoT 組織上元件的獨立身分識別,允許在 IoT 裝置執行多重處理序時提供更精細的細微度。 在本教學課程中,您將針對在 IoT 裝置上執行的裝置更新代理程式使用此模組 ID。 如需詳細資訊,請參閱了解和使用 Azure IoT 中樞的模組對應項

  1. Azure 入口網站中,瀏覽至 IoT 中樞。
  2. 在左側窗格中,選取 [裝置]。 然後選取 [新增裝置]
  3. 在 [裝置識別碼] 下,輸入裝置的名稱。 確定已選取 [自動產生金鑰] 核取方塊。
  4. 選取 [儲存]。
  5. 現在,您要返回 [裝置] 頁面,而您建立的裝置應在清單中。 選取該裝置。
  6. 選取 [新增模組 ID]
  7. 在 [模組 ID 名稱] 下,輸入模組的名稱,例如 DUAgent
  8. 選取儲存

複製模組連接字串

  1. 在裝置檢視中,您應看到 [模組 ID] 標題下列出新的模組。 選取模組名稱以開啟其詳細資料。
  2. 俺取 [連接字串 (主索引鍵)] 旁的 [複製] 圖示。 儲存此連接字串,以在設定裝置更新代理程式時使用。 此字串是模組連接字串

將標籤新增至模組對應項

  1. 一樣在模組 ID 詳細資料頁面上,選取 [模組 ID 對應項]

  2. 在對應項檔案中,於與 modelIdversion 相同的層級中新增裝置更新標籤,如下所示:

    "tags": {
        "ADUGroup": "DU-simulator-tutorial"
    },
    

    Screenshot of the ADUGroup tag in the module twin.

    裝置更新管理的每個裝置都需要此保留的標籤,藉此將裝置指派給裝置更新群組。 該標籤可以位於裝置對應項或模組對應項,如下所示。 每個裝置僅可以指派給一個裝置更新群組。

  3. 選取 [儲存]。 入口網站會重新格式化模組對應項以將標籤納入 json 結構。

安裝和設定裝置更新代理程式

裝置更新代理程式會在裝置更新管理的每個裝置上執行。 在本教學課程中,我們將設定為以模擬器執行,以便可以查看更新如何套用至裝置,而不需要時計變更裝置的組態。

  1. 在 IoT 裝置上,新增 Microsoft 套件存放庫,然後將 Microsoft 套件簽署金鑰新增至信任金鑰的清單。

    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   
    
  2. 安裝裝置更新代理程式 .deb 套件。

    sudo apt-get update
    sudo apt-get install deviceupdate-agent
    
  3. 開啟代理程式的組態檔。

    sudo nano /etc/adu/du-config.json
    
  4. 在組態檔中更新下列值:

    • manufacturer"Contoso" - 此值用於分類 IoT 裝置以進行目標更新。
    • model"Video" - 此值用於分類 IoT 裝置以進行目標更新。
    • name"aduagent"
    • agents.connectionData:提供您要從 模組 ID 複製的連接字串。
    • agents.manufacturer"Contoso"
    • agents.model"Video"

    如需此步驟中參數的詳細資訊,請參閱裝置更新組態檔

    注意

    您也可以使用 IoT 識別服務以佈建裝置。 若要這麼做,請先安裝 IoT 識別服務,然後再安裝裝置更新代理程式。 然後,在組態檔中設定裝置更新代理程式,且將 "connectionType": "AIS"connectionData 作為空白字串。

  5. 儲存並關閉檔案。 CTRL+XYEnter

  6. 將代理程式設定為以模擬器執行。 在 IoT 裝置上執行下列命令,讓裝置更新代理程式叫用模擬器處理常式,以使用 SWUpdate (microsoft/swupdate:1) 處理套件更新。

      sudo /usr/bin/AducIotAgent --extension-type updateContentHandler --extension-id 'microsoft/swupdate:1' --register-extension /var/lib/adu/extensions/sources/libmicrosoft_simulator_1.so
    
  7. 解壓縮您在必要條件中下載的 Tutorial_Simulator.zip 檔案,並將 sample-du-simulator-data.json 檔案複製到 tmp 資料夾。

    cp sample-du-simulator-data.json /tmp/du-simulator-data.json
    

    如果 /tmp 不存在,則執行:

    sudo mkdir/tmp
    sudo chown root:root/tmp
    sudo chmod 1777/tmp
    
  8. 變更新檔案的權限。

    sudo chown adu:adu /tmp/du-simulator-data.json
    sudo chmod 664 /tmp/du-simulator-data.json
    
  9. 重新啟動裝置更新代理程式以套用變更。

     sudo systemctl restart deviceupdate-agent
    

匯入更新

在本節中,您會使用從必要條件中所下載 Tutorial_Simulator.zipTutorialImportManifest_Sim.importmanifest.jsonadu-update-image-raspberrypi3.swu 檔案。 會從 Raspberry Pi 教學課程重複使用更新檔案。 因為本教學課程中的更新是模擬更新,所以特定的檔案內容並不重要。

  1. 在開發機器上,登入 Azure 入口網站並移至使用裝置更新設定的 IoT 中樞。

  2. 在瀏覽窗格的 [裝置管理] 下,選取 [更新]

  3. 選取 [匯入新的更新]

  4. 選取 [從儲存體容器選取]

  5. 選取現有的儲存體帳戶,或透過選取 [+儲存體帳戶] 以建立新的帳戶。 然後選取現有的容器,或選取 [+ 容器] 建立新的容器。 此容器將用來暫存更新檔案以進行匯入。

    注意

    建議您在每次匯入更新時使用新的容器,以避免意外從先前的更新匯入檔案。 如果您沒有使用新的容器,請務必先刪除現有容器中的任何檔案,再完成此步驟。

    Screenshot that shows Storage accounts and Containers.

  6. 在容器中,選取 [上傳],然後移至您在必要條件中下載的檔案。 選取 TutorialImportManifest_Sim.importmanifest.jsonadu-update-image-raspberrypi3.swu 檔案,然後選取 [上傳]

  7. 勾選每個檔案的核取方塊,然後選取 [選取] 按鈕以返回 [匯入更新] 頁面。

    Screenshot that shows selecting uploaded files in the container.

  8. 在 [匯入更新] 頁面上,檢閱要匯入的檔案。 然後選取 [匯入更新] 以啟動匯入程序。

    Screenshot that shows uploaded files that will be imported as an update.

  9. 匯入程序隨即開始,畫面會切換至 [匯入歷程記錄] 區段。 [狀態] 資料行顯示匯入進行中時匯入為 [執行中],匯入完成時匯入為 [已成功]。 使用 [重新整理] 按鈕以更新狀態。

  10. 當 [狀態] 資料行指出匯入成功時,請選取 [可用的更新] 標頭。 您現在應該會在清單中看到您匯入的更新。

    Screenshot that shows the new update listed as an available update.

如需匯入程序的詳細資訊,請參閱將更新匯入至 IoT 中樞裝置更新

檢視裝置群組

裝置更新」會利用群組來組織裝置。 裝置更新會根據裝置指派的標籤和相容性內容,自動將裝置分類為群組。 個別裝置僅屬於群組,但群組可有多個子群組來排序不同的裝置類型。

  1. 移至 [更新] 頁面頂端的 [群組和部署] 索引標籤。

  2. 檢視群組清單和更新符合性圖表。 更新合規性圖表顯示各種合規性狀態的裝置計數:最新的更新有新的更新可用更新進行中了解更新合規性

    Screenshot that shows the update compliance view.

    您應該會看到裝置群組,其包含您在本教學課程設定的模擬裝置,以及新群組裝置的任何可用更新。 如果有不符合群組裝置類別需求的裝置,會顯示在對應的無效群組中。

如需標籤和群組的詳細資訊,請參閱管理裝置群組

部署更新

  1. 在 [群組和部署] 索引標籤上,您應看到莊至群組可用的新更新。 更新的連結應位於 [狀態] 底下。 您可能需要重新整理網頁。

  2. 選取群組名稱以檢視其詳細資料。

  3. 在群組詳細資料頁面上,您應看到有一個新的更新可供使用。 選取 [部署] 以開始部署。

    Screenshot that shows starting a group update deployment.

  4. 我們在上一節匯入的更新會列為此群組的最佳可用更新。 選取部署

  5. 排程您的部署以立即開始,然後選取 [建立]

  6. 在群組詳細資料頁面上,瀏覽至 [目前更新] 索引標籤。在 [部署詳細資料] 下方,[狀態] 會變成 [作用中]

  7. 成功更新裝置後,請返回 [更新] 頁面。 您應會看到合規性圖表和部署詳細資料已更新以反映相同內容。

監視更新部署

  1. 返回群組詳細資料頁面,並選取 [部署歷程記錄] 索引標籤。

  2. 選取您所建立部署旁的 [檢視部署詳細資料]

    Screenshot that shows Deployment details.

  3. 選取 [重新整理] 以檢視最新狀態詳細資料。

您現在已使用 Ubuntu (18.04 x64) 模擬器參考代理程式,利用 IoT 中樞裝置更新成功完成端對端映像更新。

清除資源

如果您要繼續進行下一個教學課程,請保留裝置更新和 IoT 中樞資源。

當不再需要時,您可以在 Azure 入口網站中刪除這些資源。

  1. 瀏覽至您在 Azure 入口網站中的資源群組。

  2. 選擇要刪除的資源。

    • 若要刪除群組中的所有資源,您可以選取 [刪除資源群組]
    • 如果您僅要刪除選取的資源,請勾選核取方塊以選取資源,然後選取 [刪除]

下一步

在本教學課程中,您已了解如何匯入和部署映像更新。 接下來,請了解如何更新裝置套件。