共用方式為


教學課程:設定 Azure IoT Edge 裝置

適用於:勾選圖示 IoT Edge 1.1

這很重要

IoT Edge 1.1 終止支援日期為 2022 年 12 月 13 日。 如需此產品、服務、技術或 API 的支援資訊,請參閱 Microsoft 產品生命週期。 如需更新至最新版 IoT Edge 的詳細資訊,請參閱 更新 IoT Edge

在本文中,我們會將執行 Linux 的 Azure 虛擬機設定為做為透明閘道的 Azure IoT Edge 裝置。 透明閘道設定可讓裝置透過網關聯機到 Azure IoT 中樞,而不知道閘道是否存在。 同時,與IoT中樞裝置互動的使用者並不知道中繼閘道裝置。 最後,我們會將IoT Edge模組新增至透明閘道,以將邊緣分析新增至系統。

備註

本教學課程中的概念適用於所有IoT Edge版本,但您建立以試用案例的範例裝置會執行IoT Edge 1.1版。

本文中的步驟通常是由雲端開發人員執行。

在本教學課程的本節中,您將瞭解如何:

  • 建立憑證,讓您的閘道裝置安全地連線到下游裝置。
  • 建立IoT Edge裝置。
  • 建立 Azure 虛擬機以模擬 IoT Edge 裝置。

先決條件

本文是一系列關於在 IoT Edge 上使用 Azure Machine Learning 的教學課程的一部分。 本系列中的每個文章都是以上一篇文章中的工作為基礎。 如果您已直接抵達本文,請參閱本系列的第一篇文章 #C1 #B0。

建立憑證

若要讓裝置作為閘道運作,它必須安全地連線到下游裝置。 透過IoT Edge,您可以使用公鑰基礎結構 (PKI) 來設定裝置之間的安全連線。 在此情況下,我們允許下游IoT裝置連線到作為透明閘道的IoT Edge裝置。 為了維護合理的安全性,下游裝置應確認IoT Edge裝置的身分識別。 如需IoT Edge裝置如何使用憑證的詳細資訊,請參閱 Azure IoT Edge 憑證使用量詳細數據

在本節中,我們會使用接著建置和執行的 Docker 映射來建立自我簽署憑證。 我們選擇使用 Docker 映射來完成此步驟,因為它可減少在 Windows 開發電腦上建立憑證所需的步驟數目。 若要了解我們使用 Docker 映射自動化的內容,請參閱 建立示範憑證來測試 IoT Edge 裝置功能

  1. 登入您的開發 VM。

  2. 使用路徑和名稱 c:\edgeCertificates 建立新的資料夾。

  3. 如果尚未執行,請從 Windows [開始] 選單啟動 適用於 Windows 的 Docker

  4. 開啟 Visual Studio Code。

  5. 選取 [檔案>開啟資料夾],然後選取 C:\source\IoTEdgeAndMlSample\CreateCertificates

  6. 總管 窗格中,右鍵點擊 dockerfile ,然後選取 建立映像

  7. 在對話框中,接受映像名稱和標籤的預設值: createcertificates:latest

    顯示在Visual Studio Code 中建立憑證的螢幕快照。

  8. 等待建置完成。

    備註

    您可能會看到有關遺漏公鑰的警告。 可以放心地忽略此警告。 同樣地,您會看到安全警告,建議您檢查或重設圖片的權限,但對於這張圖片來說,可以安全地忽略這個警告。

  9. 在 Visual Studio Code 終端機視窗中,執行 createcertificates 容器。

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Docker 會提示存取 c:\ 磁碟驅動器。 選取 [分享]。

  11. 出現提示時提供您的認證。

  12. 容器完成執行之後,請檢查 c:\edgeCertificates 中的下列檔案:

    • c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
    • c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pfx
    • c:\edgeCertificates\private\new-edge-device.key.pem

將憑證上傳至 Azure Key Vault

為了安全地儲存我們的憑證,並使其可從多個裝置存取,我們會將憑證上傳至 Azure Key Vault。 如您在上述清單中所看到的,我們有兩種類型的憑證檔案:PFX 和 PEM。 我們會將 PFX 檔案視為要上傳至 Key Vault 的 Key Vault 憑證。 PEM 檔案是純文本,我們會將它們視為 Key Vault 秘密。 我們將使用與我們透過執行 Jupyter Notebook 所創建的 Azure Machine Learning 工作區相關聯的 Key Vault 實例。

  1. Azure 入口網站,移至您的 Azure Machine Learning 工作區。

  2. 從 Machine Learning 工作區的概觀頁面,尋找 Key Vault 的名稱。

    顯示複製金鑰保存庫名稱的螢幕快照。

  3. 在您的開發計算機上,將憑證上傳至 Key Vault。 以您的資源資訊取代 <subscriptionId><keyvaultname>

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. 如果系統提示您,請登入 Azure。

  5. 腳本會執行幾分鐘,輸出會列出新的 Key Vault 條目。

    顯示 Key Vault 腳本輸出的螢幕快照。

註冊 IoT Edge 裝置

若要將 Azure IoT Edge 裝置連線到 IoT 中樞,我們會先在中樞註冊裝置。 我們會從雲端中的裝置身分識別取得連接字串,並用它來在 IoT Edge 裝置上設定運行時間。 設定的裝置連線到中樞之後,我們可以部署模組並傳送訊息。 我們也可以在IoT中樞中變更其對應的裝置身分識別,以變更實體IoT Edge裝置的設定。

在本教學課程中,我們會使用Visual Studio Code 註冊新的裝置身分識別。 您也可以使用 Azure 入口網站或 Azure CLI 來完成這些步驟。 無論您選擇哪一種方法,請確定您取得IoT Edge裝置的裝置連接字串。 您可以在 Azure 入口網站的裝置詳細資料頁面上找到裝置連接字串。

  1. 在您的開發計算機上,開啟 Visual Studio Code。

  2. 在 Visual Studio Code Explorer 檢視中展開 Azure IoT 中樞窗格。

  3. 選取省略號,然後選取 [建立 IoT Edge 裝置]。

  4. 為裝置指定名稱。 為了方便,我們將名稱設定為 aaTurbofanEdgeDevice,以便它能在裝置列表中排序到最上面。

  5. 新的裝置會出現在裝置清單中。

    顯示 Visual Studio Code Explorer 中裝置檢視的螢幕快照。

部署 Azure 虛擬機

我們會使用已安裝並設定 Azure IoT Edge 運行時間的 Ubuntu 18.04 LTS 虛擬機。 部署會使用 iotedge-vm-deploy 專案存放庫中維護的 Azure Resource Manager 範本。 它會使用您在範本中提供的連接字串,布建您在上一個步驟中註冊的 IoT Edge 裝置。

您可以使用 Azure 入口網站或 Azure CLI 來部署虛擬機。 我們將顯示 Azure 入口網站步驟。 如需詳細資訊,請參閱 在Ubuntu虛擬機上執行 Azure IoT Edge

使用 Azure 部署按鈕進行部署

  1. 若要使用 iotedge-vm-deploy ARM範本來部署您的Ubuntu18.04 LTS虛擬機,請按下列按鈕:

    iotedge-vm-deploy 的 [部署至 Azure] 按鈕

  2. 在新啟動的視窗中,填入可用的表單域。

    領域 說明
    訂用帳戶 要在其中部署虛擬機器的目前作用中的 Azure 訂用帳戶。
    資源群組 現有或新建立的資源群組,其中包含虛擬機器及其相關聯的資源。
    DNS 標籤首碼 您選擇的必要值,用來為虛擬機器的主機名稱加上前置詞。
    系統管理員使用者名稱 在部署時將會提供 root 權限的使用者名稱。
    裝置連接字串 為您在預定的IoT 中樞內建立的裝置提供裝置連接字串
    VM 大小 要部署的虛擬機大小
    Ubuntu OS 版本 要安裝在基礎虛擬機器上的 Ubuntu 作業系統版本。
    地點 要在其中部署虛擬機器的地理區域,此值預設為所選資源群組的位置。
    驗證類型 選擇 [sshPublicKey] 或 [密碼],取決於您的喜好設定。
    系統管理員密碼或金鑰 SSH 公開金鑰的值或密碼的值,取決於選擇的驗證類型。
  3. 填入所有欄位時,請選取頁面底部的複選框以接受條款,然後選取 [ 檢閱 + 建立 ] 和 [ 建立 ] 以開始部署。

  4. 在 Azure 入口網站中瀏覽至您的虛擬機。 您可以透過您的資源群組,或在入口網站登陸頁面上選取 [Azure 服務] 下的 [虛擬機] 來找到它。

  5. 記下虛擬機的 DNS 名稱 。 您將需要它才能登入虛擬機。

連接到您的 IoT Edge 裝置

  1. 開啟命令提示字元,並使用下列命令登入虛擬機。 根據上一節輸入您自己的用戶名稱和 DNS 名稱資訊。

    ssh <adminUsername>@<DNS_name>
    
  2. 當系統提示您驗證主機的真實性時,請輸入 yes 並選取 Enter

  3. 出現提示時,請提供密碼。

  4. Ubuntu 會顯示歡迎訊息,然後您應該會看到類似 的 <username>@<machinename>:~$提示。

下載 Key Vault 憑證

本文稍早,我們已將憑證上傳至 Key Vault,使其可供 IoT Edge 裝置和下游裝置使用。 下游裝置會使用IoT Edge裝置作為閘道來與IoT中樞通訊。

我們將在稍後的教學課程中處理下游裝置。 在本節中,將憑證下載至 IoT Edge 裝置。

  1. 從 Linux 虛擬機的 SSH 連線中,使用 Azure CLI 登入 Azure。

    az login
    
  2. 系統會提示您開啟瀏覽器至 Microsoft裝置登入 頁面,並提供唯一的程式代碼。 您可以在本機電腦上執行這些步驟。 當您完成驗證時,請關閉瀏覽器視窗。

  3. 當您成功驗證時,Linux VM 會登入並列出您的 Azure 訂用帳戶。

  4. 設定您想要用於 Azure CLI 命令的 Azure 訂用帳戶。

    az account set --subscription <subscriptionId>
    
  5. 在 VM 上建立憑證的目錄。

    sudo mkdir /edgeMlCertificates
    
  6. 下載儲存在密鑰保存庫中的憑證:new-edge-device-full-chain.cert.pem、new-edge-device.key.pem 和 azure-iot-test-only.root.ca.cert.pem。

    key_vault_name="<key vault name>"
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
    

更新IoT Edge裝置設定

IoT Edge 運行時間會使用檔案 /etc/iotedge/config.yaml 來保存其組態。 我們需要更新此檔案中的兩個資訊:

  • 憑證:用於與下游裝置連線的憑證
  • 主機名稱:VM IoT Edge 裝置的完整域名(FQDN)

直接編輯 config.yaml 檔案來更新憑證和主機名。

  1. 開啟 config.yaml 檔案。

    sudo nano /etc/iotedge/config.yaml
    
  2. 藉由移除前置 # 和設定路徑,以更新 config.yaml 檔案的 certificates 區段,讓檔案看起來像下列範例:

    certificates:
      device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem"
      device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem"
      trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"
    

    請確定 憑證: 行前面沒有空格符,而且每個巢狀憑證都會縮排兩個空格。

    以滑鼠右鍵按兩下 nano 會將剪貼簿的內容貼到目前的游標位置。 若要取代字串,請使用鍵盤箭號移至您想要取代的字串、刪除字串,然後按兩下滑鼠右鍵以從緩衝區貼上。

  3. 在 Azure 入口網站中,前往您的虛擬機。 從 概觀 區段複製機器的 DNS 名稱(FQDN)。

  4. 將 FQDN 貼入config.yml檔案的主機名區段。 請確定名稱全部為小寫。

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. 選取 Ctrl+XYEnter 來儲存並關閉檔案。

  6. 重新啟動IoT Edge精靈。

    sudo systemctl restart iotedge
    
  7. 檢查 IoT Edge 精靈的狀態。 在命令之後,輸入 :q 以結束。

    systemctl status iotedge
    

故障排除

如果您在狀態中看到錯誤 (前面加上 "[ERROR]" 的彩色文字),請檢查精靈記錄檔以取得詳細的錯誤資訊。

journalctl -u iotedge --no-pager --no-full

如需解決錯誤的詳細資訊,請參閱 疑難解答 頁面。

清理資源

本教學課程是一組的一部分,其中每個文章都是以先前文章中完成的工作為基礎。 請等待清理資源,直到您完成最後一個教學課程為止。

後續步驟

我們剛剛完成將 Azure VM 設定為 IoT Edge 透明閘道。 我們從產生上傳至 Key Vault 的測試憑證開始。 接下來,我們使用腳本和 Resource Manager 範本,從 Azure Marketplace 部署了帶有 Ubuntu Server 16.04 LTS 和 Azure IoT Edge 運行時映像的 VM。 當 VM 啟動並執行時,我們會透過 SSH 連線。 然後,我們登入 Azure,並從 Key Vault 下載憑證。 我們藉由更新 config.yaml 檔案,對 IoT Edge 運行時間的設定進行了數次更新。

繼續進行下一篇文章,以建置IoT Edge模組。