자습서: Ubuntu(18.04 x64) 시뮬레이터 참조 에이전트를 사용하는 Azure IoT Hub용 디바이스 업데이트

이 자습서에서는 IoT Hub에 대한 디바이스 업데이트를 사용하여 엔드투엔드 이미지 기반 업데이트를 보여줍니다. Device Update for Azure IoT Hub는 이미지 기반, 패키지 기반 및 스크립트 기반 업데이트를 지원합니다.

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

이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.

  • 태그를 사용하여 디바이스 업데이트 그룹에 IoT 디바이스를 할당합니다.
  • 이미지를 다운로드하여 설치합니다.
  • 업데이트를 가져옵니다.
  • 이미지 업데이트 배포
  • 업데이트 배포 모니터링

필수 조건

  • IoT Hub로 구성된 디바이스 업데이트 계정 및 인스턴스를 만듭니다.

  • 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
    

디바이스 등록 및 모듈 ID 구성

IoT Hub의 디바이스 레지스트리에 디바이스를 추가합니다. IoT Hub에 연결하는 모든 디바이스를 등록해야 합니다.

이 섹션에서는 모듈 ID도 만듭니다. 모듈은 IoT 디바이스에 있는 구성 요소에 대한 독립적인 ID로, 여러 프로세스를 실행하는 IoT 디바이스가 있는 경우 보다 세분성을 세분화할 수 있습니다. 이 자습서에서는 IoT 디바이스에서 실행되는 디바이스 업데이트 에이전트에 이 모듈 ID를 사용합니다. 자세한 내용은 IoT Hub의 모듈 쌍 이해 및 사용을 참조하세요.

  1. Azure Portal에서 IoT 허브로 이동합니다.
  2. 왼쪽 창에서 디바이스를 선택합니다. 그런 다음 디바이스 추가를 선택합니다.
  3. 디바이스 ID에서 디바이스 이름을 입력합니다. 키 자동 생성 확인란이 선택되어 있는지 확인합니다.
  4. 저장을 선택합니다.
  5. 이제 디바이스 페이지로 돌아가면 만든 디바이스가 목록에 있어야 합니다. 해당 디바이스를 선택합니다.
  6. 모듈 ID 추가를 선택합니다.
  7. 모듈 ID 이름 아래에 모듈의 이름(예: DUAgent)을 입력합니다.
  8. 저장을 선택합니다.

모듈 연결 문자열을 복사합니다.

  1. 디바이스 보기에서 모듈 ID 제목 아래에 새 모듈이 나열됩니다. 모듈 이름을 선택하여 세부 정보를 엽니다.
  2. 연결 문자열(기본 키) 옆의 복사 아이콘을 선택합니다. 디바이스 업데이트 에이전트를 구성할 때 사용할 연결 문자열을 저장합니다. 이 문자열은 모듈 연결 문자열입니다.

모듈 쌍에 태그 추가

  1. 모듈 ID 세부 정보 화면에서 모듈 ID 트윈을 선택합니다.

  2. 다음과 같이 트윈 파일의 modelIdversion과 동일한 수준에서 새 Device Update 태그 값을 추가합니다.

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

    Screenshot of the ADUGroup tag in the module twin.

    디바이스 업데이트로 관리되는 모든 디바이스에는 디바이스 업데이트 그룹에 디바이스를 할당하는 이 예약 태그가 필요합니다. 여기에 표시된 것처럼 디바이스 트윈 또는 모듈 트윈에 있을 수 있습니다. 각 디바이스는 하나의 디바이스 업데이트 그룹에만 할당할 수 있습니다.

  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. 구성 파일에서 다음 값을 찾습니다.

    • manufacturer: "Contoso" - 이 값은 업데이트를 대상으로 하는 IoT 디바이스를 분류하는 데 사용됩니다.
    • model: "Video" - 이 값은 업데이트를 대상으로 하는 IoT 디바이스를 분류하는 데 사용됩니다.
    • 이름: "aduagent"
    • agents.connectionData: 모듈 ID에서 복사한 연결 문자열을 제공합니다.
    • agents.manufacturer: "Contoso"
    • agents.model: "Video"

    이 단계의 매개 변수에 대한 자세한 내용은 디바이스 업데이트 구성 파일을 참조하세요.

    참고 항목

    IoT ID 서비스를 사용하여 디바이스를 프로비전할 수도 있습니다. 이렇게 하려면 디바이스 업데이트 에이전트를 설치하기 전에 iot ID 서비스를 설치합니다. 그런 다음 구성 파일에서 "connectionType": "AIS"connectionData를 빈 문자열로 디바이스 업데이트 에이전트를 구성합니다.

  5. 파일을 저장 후 닫습니다. CTRL+X, YEnter.

  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.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
    
  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 Portal에 로그인하고 디바이스 업데이트로 구성된 IoT Hub로 이동합니다.

  2. 탐색 창의 장치 관리 아래에서 업데이트를 선택합니다.

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

  4. 스토리지 컨테이너에서 선택을 선택합니다.

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

    참고 항목

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

    Screenshot that shows Storage accounts and Containers.

  6. 컨테이너에서 업로드를 선택하고 사전 요구 사항에서 다운로드한 파일로 이동합니다. TutorialImportManifest_Sim.importmanifest.jsonadu-update-image-raspberrypi3.swu 파일을 선택한 다음 업로드를 선택합니다.

  7. 각 파일별로 확인란을 선택한 다음 선택 단추를 선택하여 업데이트 가져오기 페이지로 돌아갑니다.

    Screenshot that shows selecting uploaded files in the container.

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

    Screenshot that shows uploaded files that will be imported as an update.

  9. 가져오기 프로세스가 시작되고 화면이 가져오기 기록 섹션으로 전환됩니다. 상태 열은 가져오기가 진행 중인 동안 가져오기를 실행 중으로 표시하고 가져오기가 완료되면 성공으로 표시됩니다. 상태를 업데이트하려면 새로 고침 버튼을 선택합니다.

  10. 상태 열에 가져오기가 성공했다고 표시되면 사용 가능한 업데이트 헤더를 선택합니다. 이제 목록에 가져온 업데이트가 표시됩니다.

    Screenshot that shows the new update listed as an available update.

가져오기 프로세스에 대한 자세한 내용은 IoT Hub용 디바이스 업데이트로 업데이트 가져오기를 참조하세요.

디바이스 그룹 보기

Device Update는 그룹을 사용하여 디바이스를 구성합니다. Device Update는 할당된 태그 및 호환성 속성에 따라 디바이스를 그룹으로 자동 정렬합니다. 각 디바이스는 하나의 그룹에만 속하지만 그룹은 서로 다른 디바이스 클래스를 정렬하기 위해 여러 하위 그룹을 가질 수 있습니다.

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

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

    Screenshot that shows the update compliance view.

    새 그룹의 디바이스에 대해 사용 가능한 업데이트와 함께 이 자습서에서 설정한 시뮬레이션된 디바이스가 포함된 디바이스 그룹이 표시되어야 합니다. 그룹의 디바이스 클래스 요구 사항을 충족하지 않는 디바이스가 있는 경우 해당하는 잘못된 그룹에 표시됩니다.

태그 및 그룹에 대한 자세한 내용은 디바이스 그룹 관리를 참조하세요.

업데이트 배포

  1. 그룹 및 배포 탭에 디바이스 그룹에 사용할 수 있는 새 업데이트가 표시됩니다. 업데이트 링크는 상태 아래에 있어야 합니다. 페이지를 새로 고쳐야 할 수 있습니다.

  2. 세부 정보를 보려면 그룹 이름을 선택합니다.

  3. 그룹 세부 정보 페이지에서 사용할 수 있는 새 업데이트가 하나 있음을 확인할 수 있습니다. 배포를 선택하여 배포를 시작합니다.

    Screenshot that shows starting a group update deployment.

  4. 이전 섹션에서 가져온 업데이트는 이 그룹에 가장 적합한 업데이트로 나열됩니다. 배포를 선택합니다.

  5. 즉시 시작하도록 배포를 예약한 다음, 만들기를 선택합니다.

  6. 그룹 세부 정보 페이지에서 현재 업데이트 탭으로 이동합니다. 배포 세부 정보에서 상태활성으로 바뀝니다.

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

업데이트 배포 모니터링

  1. 그룹 세부 정보 페이지로 돌아가서 배포 기록 탭을 선택합니다.

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

    Screenshot that shows Deployment details.

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

이제 Ubuntu(18.04 x64) 시뮬레이터 참조 에이전트를 사용하는 IoT Hub용 디바이스 업데이트를 사용하여 엔드투엔드 이미지 업데이트를 성공적으로 완료했습니다.

리소스 정리

다음 자습서를 계속 진행하려면 디바이스 업데이트 및 IoT Hub 리소스를 유지합니다.

더 이상 필요하지 않은 경우 Azure Portal 이러한 리소스를 삭제할 수 있습니다.

  1. Azure Portal에서 리소스 그룹으로 이동합니다.

  2. 삭제할 리소스를 선택합니다.

    • 그룹의 모든 리소스를 삭제하려는 경우 리소스 그룹 삭제를 선택합니다.
    • 선택한 리소스만 삭제하려면 검사 상자를 사용하여 리소스를 선택한 다음 삭제를 선택합니다.

다음 단계

이 자습서에서는 이미지 업데이트를 가져오고 배포하는 방법을 알아보았습니다. 다음으로, 디바이스 패키지를 업데이트하는 방법을 알아봅니다.