教學課程:使用 Ubuntu (18.04 x64) 模擬器參考代理程式的 Azure IoT 中樞裝置更新
Azure IoT 中樞裝置更新支援映像型、套件型和指令碼型更新。
映像更新會在裝置的最終狀態提供更高的信賴度。 在生產前環境與生產環境之間複寫映像更新的結果通常比較容易,因為其不會引起與套件及其相依性相同的挑戰。 由於其不可部分完成的本質,您也可以輕鬆地採用 A/B 容錯移轉模型。
本教學課程將逐步引導您完成端對端映像型更新,方法是使用 IoT 中樞裝置更新。
在本教學課程中,您將了解如何:
- 下載並安裝映像。
- 將標籤新增至 IoT 裝置。
- 匯入更新。
- 建立裝置群組。
- 部署映像更新。
- 監視更新部署。
必要條件
如果您尚未這麼做,請建立裝置更新帳戶和執行個體,並設定 IoT 中樞。
在最新版本中,從發行資產下載名為 Tutorial_Simulator.zip
的 ZIP 檔案,並將其解壓縮。
將裝置新增至 Azure IoT 中樞
在 IoT 裝置上執行裝置更新代理程式之後,您必須將裝置新增至 IoT 中樞。 從 IoT 中樞內,為特定裝置產生連接字串。
從 Azure 入口網站,啟動 IoT 中樞裝置更新。
建立新的裝置。
在左側窗格上,移至 [裝置]。 然後選取 [新增]。
在 [裝置識別碼] 下,輸入裝置的名稱。 確定已選取 [自動產生金鑰] 核取方塊。
選取 [儲存]。
現在,您要返回 [裝置] 頁面,而您建立的裝置應在清單中。 選取該裝置。
在裝置檢視中,選取 [主要連接字串] 旁邊的 [複製] 圖示。
將複製的字元貼到某處,稍後在下列步驟中使用:
此複製的字串是您的裝置連接字串。
安裝裝置更新代理程式,將其以模擬器進行測試
請遵循指示來安裝 Azure IoT Edge 執行階段。
注意
裝置更新代理程式不相依於 IoT Edge。 但是確實依賴 IoT 識別服務精靈,該精靈會與 IoT Edge (1.2.0 和更高版本) 一併安裝,以取得身分識別並且連線至 IoT 中樞。
雖然本教學課程中未涵蓋,但是 IoT 識別服務精靈可以在以 Linux 為基礎的 IoT 裝置上獨立安裝。 安裝順序很重要。 裝置更新套件代理程式必須在 IoT 識別服務之後安裝。 否則,套件代理程式將不會註冊為授權的元件,以建立與 IoT 中樞的連線。
然後,安裝裝置更新代理程式 .deb 套件。
sudo apt-get install deviceupdate-agent deliveryoptimization-plugin-apt
執行下列命令,在組態檔中輸入 IoT 裝置的模組 (或裝置,視您使用裝置更新佈建裝置的方式而定) 主要連接字串:
sudo nano /etc/adu/du-config.json
將代理程式設定為以模擬器執行。 在 IoT 裝置上執行下列命令,讓裝置更新代理程式叫用模擬器處理常式,以使用 APT ('microsoft/apt:1') 處理套件更新:
sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_simulator_1.so --update-type 'microsoft/apt:1'
若要註冊並叫用模擬器處理常式,請使用下列格式填入預留位置:
sudo /usr/bin/AducIotAgent --register--content-handler <full path to the handler file> --update-type <update type name>
您將需要從必要條件中所下載
Tutorial_Simulator.zip
的sample-du-simulator-data.json
檔案。開啟檔案
sample-du-simulator-data.json
,並將內容複寫到剪貼簿:nano sample-du-simulator-data.json
選取檔案的內容,然後按 Ctrl+C。 按 Ctrl+X 關閉檔案,並且不要儲存變更。
執行下列命令,以在 tmp 資料夾中建立及編輯
du-simulator-data.json
檔案:sudo nano /tmp/du-simulator-data.json
按 Ctrl+V 將內容貼到編輯器中。 選取 Ctrl+X 以儲存變更,然後選取 Y。
變更權限︰
sudo chown adu:adu /tmp/du-simulator-data.json sudo chmod 664 /tmp/du-simulator-data.json
如果 /tmp 不存在,則:
sudo mkdir/tmp sudo chown root:root/tmp sudo chmod 1777/tmp
執行下列命令來重新啟動裝置更新代理程式:
sudo systemctl restart adu-agent
Azure IoT 中樞裝置更新軟體受限於下列授權條款:
在使用代理程式之前,請先閱讀授權條款。 安裝及使用代理程式即表示接受這些授權條款。 如果您不同意授權條款,請不要使用 IoT 中樞裝置更新代理程式。
注意
使用模擬器進行測試之後,請執行下列命令來叫用 APT 處理常式,並部署無線套件更新:
# sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_apt_1.so --update-type 'microsoft/a pt:1'
將標籤新增至您的裝置
登入 Azure 入口網站並移至 IoT 中樞。
從左窗格中的 [ 裝置 ],尋找您的 IoT 裝置,然後移至裝置對應項或模組對應項。
在裝置更新代理程式模組的模組對應項中,將其設定為 Null,以刪除任何現有的裝置更新標記值。 如果您使用裝置身分識別搭配裝置更新代理程式,請在裝置對應項上進行這些變更。
新增裝置更新標記值,如下所示:
"tags": { "ADUGroup": "<CustomTagValue>" }
匯入更新
您將需要從必要條件中所下載
Tutorial_Simulator.zip
的TutorialImportManifest_Sim.importmanifest.json
和adu-update-image-raspberrypi3.swu
檔案。 會從 Raspberry Pi 教學課程重複使用更新檔案。 因為本教學課程中的更新是模擬更新,所以特定的檔案內容並不重要。登入 Azure 入口網站,並使用裝置更新移至 IoT 中樞。 在左窗格中,選取 [自動裝置管理] 下的 [更新]。
選取 [更新] 索引標籤。
選取 [+ 匯入新的更新]。
選取 [+ 從儲存體容器選取]。 選取現有帳戶或使用 [+ 儲存體帳戶] 建立新帳戶。 然後選取現有的容器,或使用 [+ 容器] 建立新的容器。 此容器將用來暫存更新檔案以進行匯入。
注意
建議您在每次匯入更新時使用新的容器,以避免意外從先前的更新匯入檔案。 如果您沒有使用新的容器,請務必先刪除現有容器中的任何檔案,再完成此步驟。
在容器中,選取 [上傳],然後移至您在步驟 1 下載的檔案。 選取了所有更新檔案之後,請選取 [上傳]。 然後選取 [選取] 按鈕,以返回 [匯入更新] 頁面。
此螢幕擷取畫面顯示匯入步驟。 檔案名稱可能不符合範例中使用的檔案名稱。
在 [匯入更新] 頁面上,檢閱要匯入的檔案。 然後選取 [匯入更新] 以啟動匯入程序。
匯入程序隨即開始,畫面會切換至 [匯入歷程記錄] 區段。 當 [狀態] 資料行指出匯入成功時,請選取 [可用的更新] 標頭。 您現在應該會在清單中看到您匯入的更新。
深入了解如何匯入更新。
建立更新群組
移至頁面頂端的 [群組和部署] 索引標籤。
選取 [新增群組] 以建立新群組。
從清單中選取 [IoT 中樞] 標記和 [裝置類別]。 接著選取 [建立群組]。
建立群組之後,更新合規性圖表和群組清單會進行更新。 更新合規性圖表顯示各種合規性狀態的裝置計數:最新的更新、有新的更新可用和更新進行中。 了解更新合規性。
您應該會看到新建立的群組,以及新群組中裝置的任何可用更新。 如果有不符合群組裝置類別需求的裝置,會顯示在對應的無效群組中。 若要從此檢視將最佳的可用更新部署到新的使用者定義群組,請選取群組旁的 [部署]。
深入了解如何新增標記以及建立更新群組。
部署更新
建立群組之後,您應該會看到裝置群組可用的新更新。 更新的連結應位於 [最佳更新] 底下。 您可能需要再次重新整理。 深入了解更新合規性。
選取群組名稱來選取目標群組。 系統會將您導向至 [群組基本資料] 下方的 [群組詳細資料]。
若要啟動部署,請移至 [目前部署] 索引標籤。從 [可用更新] 區段選取所需更新旁的部署連結。 指定群組的最佳可用更新會以最佳醒目提示來表示。
排程您的部署,以立即或在未來啟動。 然後選取 [建立]。
在 [部署詳細資料] 下方,[狀態] 會變成 [作用中]。 部署的更新會標示為 [(部署中)]。
檢視合規性圖表,以查看更新目前是否正在進行中。
成功更新裝置之後,您會看到合規性圖表和部署詳細資料已更新,以反映相同狀態。
監視更新部署
您現在已使用 Ubuntu (18.04 x64) 模擬器參考代理程式,利用 IoT 中樞裝置更新成功完成端對端映像更新。
清除資源
不再需要時,請清除您的裝置更新帳戶、執行個體、IoT 中樞和 IoT 裝置。