教學課程:使用 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
    

註冊裝置並設定模組身分識別

將裝置新增至 IoT 中樞內的裝置登錄。 每個連線到 IoT 中樞的裝置都必須註冊。

在本節中,我們也會建立模組身分識別。 模組是存在於 IoT 裝置上之元件的獨立身分識別,可讓您在執行多個進程的 IoT 裝置時更細微。 在本教學課程中,您將針對在 IoT 裝置上執行的裝置更新代理程式使用此模組身分識別。 如需詳細資訊,請參閱了解和使用 Azure IoT 中樞的模組對應項

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

複製模組連接字串

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

將標籤新增至模組對應項

  1. 仍在模組身分識別詳細資料頁面上,選取 [模組身分識別對應項]

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

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

    模組對應項中 ADUGroup 標籤的螢幕擷取畫面。

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

  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. 更新組態檔中的下列值:

    • 製造商"Contoso" - 此值是用來分類 IoT 裝置以鎖定更新。
    • model"Video" - 此值用來分類 IoT 裝置以鎖定更新。
    • name"aduagent"
    • agents.connectionData:提供您從模組身分識別複製的連接字串。
    • agents.manufacturer"Contoso"
    • agents.model"Video"

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

    注意

    您也可以使用 IoT 身分識別服務來布建裝置。 若要這樣做,請先 安裝 iot 縮排服務 ,再安裝裝置更新代理程式。 然後,使用 "connectionType": "AIS"connectionData 設定檔中的空白字串來設定 Device Update 代理程式。

  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.jsontmp 複製到資料夾。

    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. 選取現有的儲存體帳戶,或選取 [+ 儲存體帳戶] 來建立新的帳戶。 然後,選取現有的容器,或選取 [+ 容器] 來建立新的容器。 此容器將用來暫存更新檔案以進行匯入。

    注意

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

    此螢幕擷取畫面顯示儲存體帳戶和容器。

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

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

    顯示選取容器中上傳檔案的螢幕擷取畫面。

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

    顯示將匯入為更新之已上傳檔案的螢幕擷取畫面。

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

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

    顯示列為可用更新之新更新的螢幕擷取畫面。

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

檢視裝置群組

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

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

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

    此螢幕擷取畫面顯示更新合規性檢視。

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

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

部署更新

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

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

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

    顯示啟動群組更新部署的螢幕擷取畫面。

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

  5. 排程您的部署立即啟動,然後選取 [ 建立]。

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

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

監視更新部署

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

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

    此螢幕擷取畫面顯示 [部署詳細資料]。

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

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

清除資源

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

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

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

  2. 選擇要刪除的資源。

    • 如果您想要刪除群組中的所有資源,請選取 [刪除資源群組]。
    • 如果您只想要刪除選取資源,請使用核取方塊來選取資源,然後選取 [ 刪除]。

下一步

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