教學課程:使用 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 中樞的模組對應項。
- 從 Azure 入口網站中,瀏覽至您的 IoT 中樞。
- 在左側窗格中,選取 [裝置]。 然後選取 [新增裝置]。
- 在 [裝置識別碼] 下,輸入裝置的名稱。 確定已選取 [自動產生金鑰] 核取方塊。
- 選取 [儲存]。
- 現在,您要返回 [裝置] 頁面,而您建立的裝置應在清單中。 選取該裝置。
- 選取 [新增模組身分識別]。
- 在 [模組身分識別名稱]下,輸入模組的名稱,例如 DUAgent。
- 選取 [儲存]。
複製模組連接字串
- 在裝置檢視中,您應該會看到新的模組列在 [ 模組身分識別 ] 標題之下。 選取模組名稱以開啟其詳細資料。
- 選取 [連接字串] 旁的 [複製] 圖示 , (主鍵) 。 儲存此連接字串,以在設定裝置更新代理程式時使用。 此字串是您 模組連接字串。
將標籤新增至模組對應項
仍在模組身分識別詳細資料頁面上,選取 [模組身分識別對應項]
在與 對應項檔案相同的層級
modelId
和version
中新增裝置更新標籤值,如下所示:"tags": { "ADUGroup": "DU-simulator-tutorial" },
裝置更新所管理的每個裝置都需要此保留標籤,此標記會將裝置指派給裝置更新群組。 它可以位於裝置對應項或模組對應項中,如下所示。 每個裝置只能指派給一個裝置更新群組。
選取 [儲存]。 入口網站會將模組對應項重新格式化,以將標籤併入 json 結構。
安裝和設定裝置更新代理程式
裝置更新代理程式會在裝置更新所管理的每個裝置上執行。 在本教學課程中,我們將將其設定為以模擬器的形式執行,以便查看更新如何套用至裝置,而不需要實際變更裝置的設定。
在您的 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
安裝裝置更新代理程式 .deb 套件。
sudo apt-get update sudo apt-get install deviceupdate-agent
開啟代理程式的組態檔。
sudo nano /etc/adu/du-config.json
更新組態檔中的下列值:
- 製造商:
"Contoso"
- 此值是用來分類 IoT 裝置以鎖定更新。 - model:
"Video"
- 此值用來分類 IoT 裝置以鎖定更新。 - name:
"aduagent"
- agents.connectionData:提供您從模組身分識別複製的連接字串。
- agents.manufacturer:
"Contoso"
- agents.model:
"Video"
如需此步驟中參數的詳細資訊,請參閱 裝置更新設定檔。
注意
您也可以使用 IoT 身分識別服務來布建裝置。 若要這樣做,請先 安裝 iot 縮排服務 ,再安裝裝置更新代理程式。 然後,使用
"connectionType": "AIS"
和connectionData
設定檔中的空白字串來設定 Device Update 代理程式。- 製造商:
儲存並關閉檔案。
CTRL
+X
、Y
和Enter
。將代理程式設定為以模擬器執行。 在 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
將您在必要條件中下載的檔案解壓縮
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
變更新檔案的權限。
sudo chown adu:adu /tmp/du-simulator-data.json sudo chmod 664 /tmp/du-simulator-data.json
重新開機裝置更新代理程式以套用您的變更。
sudo systemctl restart deviceupdate-agent
匯入更新
在本節中,您會使用從必要條件中所下載 Tutorial_Simulator.zip
的 TutorialImportManifest_Sim.importmanifest.json
和 adu-update-image-raspberrypi3.swu
檔案。 會從 Raspberry Pi 教學課程重複使用更新檔案。 因為本教學課程中的更新是模擬更新,所以特定的檔案內容並不重要。
在您的開發電腦上,登入Azure 入口網站,然後移至使用裝置更新設定的 IoT 中樞。
在流覽窗格的[裝置管理] 底下,選取[更新]。
選取 [ 匯入新的更新]。
選取 [從儲存體容器選取]。
選取現有的儲存體帳戶,或選取 [+ 儲存體帳戶] 來建立新的帳戶。 然後,選取現有的容器,或選取 [+ 容器] 來建立新的容器。 此容器將用來暫存更新檔案以進行匯入。
注意
建議您在每次匯入更新時使用新的容器,以避免意外從先前的更新匯入檔案。 如果您沒有使用新的容器,請務必先刪除現有容器中的任何檔案,再完成此步驟。
在您的容器中,選取 [上傳 ],然後移至您在必要條件中下載的檔案。 選取 TutorialImportManifest_Sim.importmanifest.json 和 adu-update-image-raspberrypi3.swu 檔案,然後選取 [上傳]。
選取每個檔案的核取方塊,然後選取 [ 選取 ] 按鈕以返回 [ 匯入更新 ] 頁面。
在 [匯入更新] 頁面上,檢閱要匯入的檔案。 然後選取 [匯入更新] 以啟動匯入程序。
匯入程序隨即開始,畫面會切換至 [匯入歷程記錄] 區段。 [ 狀態 ] 資料行會在匯入進行時顯示匯入為 [ 正在執行 ],並在匯入完成時顯示為 [成功 ]。 使用 [ 重新整理] 按鈕來更新狀態。
當 [狀態] 資料行指出匯入成功時,請選取 [可用的更新] 標頭。 您現在應該會在清單中看到您匯入的更新。
如需匯入程序的詳細資訊,請參閱將更新匯入至 IoT 中樞裝置更新。
檢視裝置群組
裝置更新」會利用群組來組織裝置。 裝置更新會根據裝置指派的標籤和相容性內容,自動將裝置分類為群組。 個別裝置僅屬於群組,但群組可有多個子群組來排序不同的裝置類型。
移至[更新] 頁面頂端的 [群組和部署] 索引標籤。
檢視群組清單和更新符合性圖表。 更新合規性圖表顯示各種合規性狀態的裝置計數:最新的更新、有新的更新可用和更新進行中。 了解更新合規性。
您應該會看到裝置群組,其包含您在本教學課程設定的模擬裝置,以及新群組裝置的任何可用更新。 如果有不符合群組裝置類別需求的裝置,會顯示在對應的無效群組中。
如需標籤和群組的詳細資訊,請參閱管理裝置群組。
部署更新
在 [ 群組和部署] 索引 標籤上,您應該會看到裝置群組可用的新更新。 更新的連結應該位於 [狀態] 下方。 您可能需要重新整理頁面。
選取組名以檢視其詳細資料。
在群組詳細資料頁面上,您應該會看到有一個新的可用更新。 選取 [部署 ] 以開始部署。
我們在上一節中匯入的更新會列為此群組的最佳可用更新。 選取 [部署]。
排程您的部署立即啟動,然後選取 [ 建立]。
在群組詳細資料頁面上,流覽至 [ 目前更新] 索引標籤。在 [部署詳細資料] 底下, [狀態 ] 會變成 [ 作用中]。
成功更新裝置之後,請返回[更新] 頁面。 您應該會看到合規性圖表和部署詳細資料已更新,以反映相同的情況。
監視更新部署
您現在已使用 Ubuntu (18.04 x64) 模擬器參考代理程式,利用 IoT 中樞裝置更新成功完成端對端映像更新。
清除資源
如果您要繼續進行下一個教學課程,請保留裝置更新和IoT 中樞資源。
不再需要時,您可以在Azure 入口網站中刪除這些資源。
瀏覽至您在 Azure 入口網站中的資源群組。
選擇要刪除的資源。
- 如果您想要刪除群組中的所有資源,請選取 [刪除資源群組]。
- 如果您只想要刪除選取資源,請使用核取方塊來選取資源,然後選取 [ 刪除]。
下一步
在本教學課程中,您已瞭解如何匯入和部署映射更新。 接下來,瞭解如何更新裝置套件。