다음을 통해 공유


자습서: Raspberry Pi 3 B+ 참조 이미지를 사용하여 Azure IoT Hub에 대한 디바이스 업데이트

Device Update for Azure IoT Hub는 이미지 기반, 패키지 기반 및 스크립트 기반 업데이트를 지원합니다.

이미지 업데이트는 디바이스의 최종 상태에서 더 높은 수준의 신뢰도를 제공합니다. 패키지 및 해당 종속성과 동일한 문제를 제기하지 않으므로 사전 프로덕션 환경과 프로덕션 환경 간에 이미지 업데이트 결과를 복제하는 것이 일반적으로 더 쉽습니다. 원자적 특성 덕분에 A/B 장애 조치 모델을 쉽게 채택할 수 있습니다.

이 자습서에서는 Raspberry Pi 3 B+ 보드에서 IoT Hub용 디바이스 업데이트를 사용하여 엔드투엔드 이미지 기반 업데이트를 완료하는 단계를 안내합니다.

이 자습서에서는 다음 방법을 알아봅니다.

  • 이미지를 다운로드합니다.
  • IoT 디바이스에 태그를 추가합니다.
  • 업데이트를 가져옵니다.
  • 장치 그룹을 만듭니다.
  • 이미지 업데이트를 배포하다
  • 업데이트 배포 모니터링

비고

이 자습서의 이미지 업데이트는 Raspberry Pi B3 보드에서 유효성을 검사했습니다.

필수 조건

아직 수행하지 않은 경우 디바이스 업데이트 계정 및 인스턴스 를 만들고 IoT Hub를 구성합니다.

이미지 다운로드

디바이스 업데이트 GitHub 릴리스 페이지의자산에 샘플 이미지를 제공합니다. .gz 파일은 Raspberry Pi 3 B+ 보드에 플래시할 수 있는 기본 이미지입니다. swUpdate 파일은 IoT Hub용 디바이스 업데이트를 통해 가져올 업데이트입니다.

이미지로 SD 카드 플래시

즐겨 찾는 OS 플래시 도구를 사용하여 Raspberry Pi 3 B+ 디바이스에서 사용할 SD 카드에 디바이스 업데이트 기본 이미지(adu-base-image)를 설치합니다.

bmaptool을 사용하여 SD 카드 플래시

  1. bmaptool 아직 설치하지 않은 경우 유틸리티를 설치합니다.

    sudo apt-get install bmap-tools
    
  2. 에서 SD 카드의 경로를 찾습니다 /dev. 경로는 대략 /dev/sd* 또는 /dev/mmcblk*와 비슷해야 합니다. dmesg 유틸리티를 사용하여 올바른 경로를 쉽게 찾을 수 있습니다.

  3. 플래시하기 전에 탑재된 모든 파티션을 분리합니다.

    sudo umount /dev/<device>
    
  4. 디바이스에 대한 쓰기 권한이 있는지 확인합니다.

    sudo chmod a+rw /dev/<device>
    
  5. 선택 사항: 빠른 플래시를 위해 bimap 파일과 이미지 파일을 다운로드하여 동일한 디렉터리에 배치합니다.

  6. SD 카드를 플래시합니다.

    sudo bmaptool copy <path to image> /dev/<device>
    

Azure IoT Hub 소프트웨어에 대한 디바이스 업데이트에는 다음 사용 조건이 적용됩니다.

에이전트를 사용하기 전에 사용 조건을 읽습니다. 설치 및 사용은 해당 약관에 대한 동의를 구성합니다. 사용 조건에 동의하지 않는 경우 IoT Hub용 디바이스 업데이트를 사용하지 마세요.

IoT Hub에서 디바이스 또는 모듈 만들기 및 연결 문자열 가져오기

이제 디바이스를 IoT Hub에 추가합니다. IoT Hub 내에서 디바이스에 대한 연결 문자열이 생성됩니다.

  1. Azure Portal에서 IoT Hub를 시작합니다.

  2. 새 디바이스를 만듭니다.

  3. 왼쪽 창에서 디바이스를 선택합니다. 그 후 새로 만들기를 선택합니다.

  4. 디바이스 ID에서 디바이스 이름을 입력합니다. 키 자동 생성 확인란이 선택되어 있는지 확인합니다.

  5. 저장을 선택합니다. 디바이스 페이지에서 만든 디바이스가 목록에 있어야 합니다.

  6. 다음 두 가지 옵션 중 하나를 사용하여 디바이스 연결 문자열을 가져옵니다.

    • 옵션 1: 모듈 ID와 함께 디바이스 업데이트 에이전트 사용: 동일한 디바이스 페이지에서 위쪽에서 모듈 ID 추가 를 선택합니다. 이름이 IoTHubDeviceUpdate인 새 디바이스 업데이트 모듈을 만듭니다. 사용 사례에 적용되는 다른 옵션을 선택한 다음 저장을 선택합니다. 새로 만든 모듈을 선택합니다. 모듈 보기에서 기본 연결 문자열 옆에 있는 복사 아이콘을 선택합니다.
    • 옵션 2: 디바이스 ID와 함께 디바이스 업데이트 에이전트 사용: 디바이스 보기에서 기본 연결 문자열 옆에 있는 복사 아이콘을 선택합니다.
  7. 다음 단계에서 나중에 사용할 수 있도록 복사한 문자를 어딘가에 붙여넣습니다.

    복사된 이 문자열은 디바이스 연결 문자열입니다.

IoT Hub용 디바이스 업데이트에 대한 디바이스 내 구성 준비

IoT Hub용 디바이스 업데이트가 제대로 구성되도록 두 개의 구성 파일이 디바이스에 있어야 합니다. 첫 번째 파일은 du-config.json 파일이며, /adu/du-config.json에 있어야 합니다. 두 번째 파일은 du-diagnostics-config.json 파일이며 /adu/du-diagnostics-config.json에 있어야 합니다.

du-config.json 파일 및 du-diagnostics-config.json 파일에 대한 두 가지 예는 다음과 같습니다.

예제 du-config.json

   {
      "schemaVersion": "1.0",
      "aduShellTrustedUsers": [
         "adu",
         "do"
      ],
      "manufacturer": "fabrikam",
      "model": "vacuum",
      "agents": [
         {
         "name": "main",
         "runas": "adu",
         "connectionSource": {
            "connectionType": "string",
            "connectionData": "HostName=example-connection-string.azure-devices.net;DeviceId=example-device;SharedAccessKey=M5oK/rOP12aB5678YMWv5vFWHFGJFwE8YU6u0uTnrmU="
         },
         "manufacturer": "fabrikam",
         "model": "vacuum"
         }
      ]
   }  

예제 du-diagnostics-config.json

   {
      "logComponents":[
         {
               "componentName":"adu",
               "logPath":"/adu/logs/"
         },
         {
               "componentName":"do",
               "logPath":"/var/log/deliveryoptimization-agent/"
         }
      ],
      "maxKilobytesToUploadPerLogPath":50
   }

Raspberry Pi에서 디바이스 업데이트 에이전트 구성

  1. Raspberry Pi 3이 네트워크에 연결되어 있는지 확인합니다.

  2. 다음 지침에 따라 구성 세부 정보를 추가합니다.

    1. 먼저 PowerShell 창에서 다음 명령을 사용하여 컴퓨터에 SSH합니다.

         ssh raspberrypi3 -l root
      
    2. du-config.json 파일을 편집하려면 만들거나 엽니다.

         nano /adu/du-config.json
      
    3. 명령을 실행한 후 파일이 있는 열린 편집기가 표시됩니다. 파일을 만든 적이 없으면 비어 있습니다. 이제 앞의 예제 du-config.json 내용을 복사하고 디바이스에 필요한 구성을 대체합니다. 그런 다음, 예제 연결 문자열을 이전 단계에서 만든 디바이스에 대한 연결 문자열로 바꿉 있습니다.

    4. 변경 내용을 완료한 후 Ctrl+X 를 선택하여 편집기를 종료합니다. 그런 다음 y 를 입력하여 변경 내용을 저장합니다.

    5. 이제 비슷한 명령을 사용하여 du-diagnostics-config.json 파일을 만들어야 합니다. 다음을 사용하여 편집할 du-diagnostics-config.json 파일을 만들거나 열어 시작합니다.

         nano /adu/du-diagnostics-config.json
      
    6. 위의 예제 du-diagnostics-config.json 내용을 복사하고 기본 빌드와 다른 구성을 대체합니다. du-diagnostics-config.json 예제 파일은 IoT Hub용 디바이스 업데이트의 기본 로그 위치를 나타냅니다. 구현이 다른 경우에만 변경하면 됩니다.

    7. 변경 내용을 완료한 후 Ctrl+X 를 선택하여 편집기를 종료합니다. 그런 다음 y 를 입력하여 변경 내용을 저장합니다.

    8. 다음 명령을 사용하여 디렉터리에 있는 /adu/ 파일을 표시합니다. 구성 파일인 두 개의 du-diagnostics-config.json 파일을 다음을 사용하여 편집할 수 있어야 합니다:

         ls -la /adu/
      
  3. 디바이스 업데이트 시스템 디먼을 다시 시작하여 구성이 적용되었는지 확인합니다. 에 로그인한 raspberrypi터미널 내에서 다음 명령을 사용합니다.

       systemctl start adu-agent
    
  4. 다음 명령을 사용하여 에이전트가 라이브 상태인지 확인합니다.

       systemctl status adu-agent
    

    상태가 활성 및 녹색으로 돌아오는 것을 볼 수 있습니다.

IoT Hub용 디바이스 업데이트에서 디바이스 연결

  1. 왼쪽 창에서 디바이스를 선택합니다.

  2. 디바이스 이름이 있는 링크를 선택합니다.

  3. IoT 디바이스 ID(정체)를 사용하여 디바이스 업데이트에 직접 연결하는 경우, 페이지 맨 위에서 디바이스 트윈을 선택합니다. 그렇지 않은 경우, 만든 모듈을 선택한 후 모듈 쌍을 선택합니다.

  4. 디바이스 쌍 속성의 보고된 섹션에서 Linux 커널 버전을 찾습니다. 디바이스 업데이트에서 업데이트를 받지 못한 새 디바이스의 경우 DeviceManagement:DeviceInformation:1.swVersion 값은 디바이스에서 실행되는 펌웨어 버전을 나타냅니다. 디바이스에 업데이트가 적용된 후 디바이스 업데이트는 AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId 속성 값을 사용하여 디바이스에서 실행되는 펌웨어 버전을 나타냅니다.

  5. 기본 및 업데이트 이미지 파일에는 파일 이름에 버전 번호가 있습니다.

    adu-<image type>-image-<machine>-<version number>.<extension>
    

이후의 "업데이트 가져오기" 섹션에서 해당 버전 번호를 사용합니다.

디바이스에 태그 추가

  1. Azure Portal에 로그인하고 IoT 허브로 이동합니다.

  2. 왼쪽 창의 디바이스 아래에서 IoT 디바이스를 찾아 디바이스 쌍 또는 모듈 쌍으로 이동합니다.

  3. 디바이스 업데이트 에이전트 모듈의 모듈 쌍에서 기존 디바이스 업데이트 태그 값을 null로 설정하여 삭제합니다. 디바이스 업데이트 에이전트에서 디바이스 ID를 사용하는 경우 디바이스 쌍에서 이러한 내용을 변경합니다.

  4. 다음과 같이 새 디바이스 업데이트 태그 값을 추가합니다.

        "tags": {
                "ADUGroup": "<CustomTagValue>"
                }
    

업데이트 가져오기

  1. 최신 에이전트의 릴리스 자산에서 샘플 자습서 매니페스트(Tutorial Import Manifest_Pi.json) 및 샘플 업데이트(adu-update-image-raspberrypi3-0.6.5073.1.swu)를 다운로드합니다.

  2. Azure Portal에 로그인하고 Device Update를 사용하여 IoT 허브로 이동합니다. 왼쪽 창의 자동 디바이스 관리에서 업데이트를 선택합니다.

  3. 업데이트 탭을 선택합니다.

  4. + 새 업데이트 가져오기를 선택합니다.

  5. + 스토리지 컨테이너에서 선택을 선택합니다. 기존 계정을 선택하거나 + 스토리지 계정을 사용하여 새 계정을 만듭니다. 그런 다음 + 컨테이너를 사용하여 기존 컨테이너를 선택하거나 새 컨테이너를 만듭니다. 이 컨테이너는 가져올 업데이트 파일을 스테이징하는 데 사용됩니다.

    비고

    이전 업데이트에서 실수로 파일을 가져오지 않도록 업데이트를 가져올 때마다 새 컨테이너를 사용하는 것이 좋습니다. 새 컨테이너를 사용하지 않는 경우 이 단계를 완료하기 전에 기존 컨테이너에서 모든 파일을 삭제해야 합니다.

    Storage 계정 및 컨테이너를 보여주는 스크린샷.

  6. 컨테이너에서 업로드를 선택하고 1단계에서 다운로드한 파일로 이동합니다. 모든 업데이트 파일을 선택한 후 업로드를 선택합니다. 그런 다음 선택 단추를 선택하여 업데이트 가져오기 페이지로 돌아갑니다.

    업로드된 파일 선택을 보여주는 스크린샷.

    이 스크린샷은 가져오기 단계를 보여 줍니다. 파일 이름은 예제에 사용된 이름과 일치하지 않을 수 있습니다.

  7. 업데이트 가져오기 페이지에서 가져올 파일을 검토합니다. 그런 다음 업데이트 가져오기를 선택하여 가져오기 프로세스를 시작합니다.

    업데이트 가져오기를 보여 주는 스크린샷

  8. 가져오기 프로세스가 시작되고 화면이 가져오기 기록 섹션으로 전환됩니다. 상태 열에 가져오기가 성공했다고 표시되면 사용 가능한 업데이트 헤더를 선택합니다. 이제 목록에 가져온 업데이트가 표시됩니다.

    작업 상태를 보여주는 스크린샷.

업데이트를 가져오는 방법에 대해 자세히 알아봅니다.

업데이트 그룹 만들기

  1. 페이지 위에 있는 그룹 및 배포 탭으로 이동합니다.

    그룹 해제된 디바이스를 보여주는 스크린샷.

  2. 그룹 추가 선택하여 새 그룹을 만듭니다.

    디바이스 그룹 추가를 보여 주는 스크린샷

  3. 목록에서 IoT Hub 태그 및 디바이스 클래스 를 선택합니다. 그런 다음 그룹 만들기를 선택합니다.

    태그 선택을 보여 주는 스크린샷

  4. 그룹이 만들어지면 업데이트 준수 차트 및 그룹 목록이 업데이트됩니다. 업데이트 준수 차트에는 최신 업데이트, 사용 가능한 새 업데이트진행 중인 업데이트 등 다양한 준수 상태의 디바이스 수가 표시됩니다. 업데이트 준수를 알아봅니다.

    업데이트 규정 준수 보기를 보여주는 스크린샷.

  5. 새로 만든 그룹과 새 그룹의 디바이스에 대해 사용 가능한 업데이트가 표시됩니다. 그룹의 디바이스 클래스 요구 사항을 충족하지 않는 디바이스가 있는 경우 해당 잘못된 그룹에 표시됩니다. 이 보기에서 새 사용자 정의 그룹에 가장 적합한 업데이트를 배포하려면 그룹 옆에 있는 배포를 선택합니다.

태그를 추가하고 업데이트 그룹을 만드는 방법에 대해 자세히 알아봅니다.

업데이트 배포

  1. 그룹이 만들어지면 디바이스 그룹에 사용할 수 있는 새 업데이트가 표시됩니다. 업데이트에 대한 링크는 최상의 업데이트에 있어야 합니다. 한 번 새로 고쳐야 할 수도 있습니다. 업데이트 규정 준수에 대해 자세히 알아보세요.

  2. 그룹 이름을 선택하여 대상 그룹을 선택합니다. 그룹 기본 사항에서 그룹 세부 정보로 리디렉션됩니다.

    그룹 세부 정보를 보여주는 스크린샷.

  3. 배포를 시작하려면 현재 배포 탭으로 이동합니다. 사용 가능한 업데이트 섹션에서 원하는 업데이트 옆에 있는 배포 링크를 선택합니다. 지정된 그룹에서 사용할 수 있는 최상의 업데이트는 최상이라는 강조 표시로 나타납니다.

    업데이트 선택을 보여주는 스크린샷.

  4. 즉시 또는 나중에 시작하도록 배포를 예약합니다. 그런 다음 만들기를 선택합니다.

    만들기 단추를 보여 주는 스크린샷.

  5. 배포 세부 정보에서 상태활성으로 바뀝니다. 배포된 업데이트는 (배포 중)으로 표시됩니다.

    배포 활성을 보여 주는 스크린샷

  6. 업데이트가 현재 진행 중인지 확인하려면 준수 차트를 봅니다.

  7. 디바이스가 성공적으로 업데이트되면 규정 준수 차트 및 배포 세부 정보가 동일하게 반영되도록 업데이트된 것을 볼 수 있습니다.

    업데이트가 성공했음을 보여 주는 스크린샷

업데이트 배포 모니터링

  1. 페이지 맨 위에 있는 배포 기록 탭을 선택합니다.

    배포 기록을 보여주는 스크린샷.

  2. 만든 배포 옆에 있는 세부 정보를 선택합니다.

    배포 세부 정보를 보여주는 스크린샷.

  3. 최신 상태 세부 정보를 보려면 새로 고침을 선택합니다.

이제 Raspberry Pi 3 B+ 디바이스에서 IoT Hub용 디바이스 업데이트를 사용하여 성공적인 엔드투엔드 이미지 업데이트를 완료했습니다.

리소스 정리

더 이상 필요하지 않은 경우 디바이스 업데이트 계정, 인스턴스, IoT Hub 및 IoT 디바이스를 정리합니다.

다음 단계