Device Update for Azure IoT Hub는 이미지 기반, 패키지 기반 및 스크립트 기반 업데이트를 지원합니다.
이미지 업데이트는 디바이스의 최종 상태에서 더 높은 수준의 신뢰도를 제공합니다. 패키지 및 해당 종속성과 동일한 문제를 제기하지 않으므로 사전 프로덕션 환경과 프로덕션 환경 간에 이미지 업데이트 결과를 복제하는 것이 일반적으로 더 쉽습니다. 원자적 특성 덕분에 A/B 장애 조치 모델을 쉽게 채택할 수 있습니다.
이 자습서에서는 IoT Hub용 디바이스 업데이트를 사용하여 엔드투엔드 이미지 기반 업데이트를 완료하는 단계를 안내합니다.
이 자습서에서는 다음 방법을 알아봅니다.
- 이미지를 다운로드하여 설치합니다.
- IoT 디바이스에 태그를 추가합니다.
- 업데이트를 가져옵니다.
- 장치 그룹을 만듭니다.
- 이미지 업데이트를 배포하다
- 업데이트 배포 모니터링
필수 조건
아직 수행하지 않은 경우 디바이스 업데이트 계정 및 인스턴스 를 만들고 IoT Hub를 구성합니다.
최신 릴리스의 릴리스 애셋에서 파일의 이름이 Tutorial_Simulator.zip인 zip 파일을 다운로드한 후 압축을 풉니다.
Azure IoT Hub에 디바이스 추가
디바이스 업데이트 에이전트가 IoT 디바이스에서 실행되면 디바이스를 IoT Hub에 추가해야 합니다. IoT Hub 내에서 특정 디바이스에 대한 연결 문자열이 생성됩니다.
Azure Portal에서 IoT Hub용 디바이스 업데이트를 시작합니다.
새 디바이스를 만듭니다.
왼쪽 창에서 디바이스로 이동합니다. 그런 다음 새로 만들기를 선택합니다.
디바이스 ID 아래에 디바이스의 이름을 입력합니다. 키 자동 생성 확인란이 선택되어 있는지 확인합니다.
저장을 선택합니다.
이제 디바이스 페이지로 돌아가서 만든 디바이스가 목록에 있어야 합니다. 해당 디바이스를 선택합니다.
디바이스 보기에서 기본 연결 문자열 옆에 있는 복사 아이콘을 선택합니다.
다음 단계에서 나중에 사용할 수 있도록 복사한 문자를 어딘가에 붙여넣습니다.
복사된 이 문자열은 디바이스 연결 문자열입니다.
디바이스 업데이트 에이전트를 설치하여 시뮬레이터로 테스트
지침에 따라 Azure IoT Edge 런타임을 설치합니다.
비고
디바이스 업데이트 에이전트는 IoT Edge에 종속되지 않습니다. 그러나 ID를 얻고 IoT Hub에 연결하기 위해 IoT Edge(1.2.0 이상)와 함께 설치된 IoT Identity Service 디먼을 사용합니다.
이 자습서에서는 다루지 않지만 Linux 기반 IoT 디바이스에 IoT Identity Service 디먼을 독립 실행형으로 설치할 수 있습니다. 설치 시퀀스가 중요합니다. 디바이스 업데이트 패키지 에이전트는 IoT ID 서비스 후에 설치해야 합니다. 그렇지 않으면 패키지 에이전트는 IoT Hub에 대한 연결을 설정하기 위해 권한 있는 구성 요소로 등록되지 않습니다.
그런 다음 디바이스 업데이트 에이전트 .deb 패키지를 설치합니다.
sudo apt-get install deviceupdate-agent deliveryoptimization-plugin-apt다음 명령을 실행하여 구성 파일에 IoT 디바이스의 모듈(또는 디바이스를 디바이스 업데이트로 프로비전한 방법에 따라 디바이스) 기본 연결 문자열을 입력합니다.
sudo nano /etc/adu/du-config.json시뮬레이터로 실행되도록 에이전트를 설정합니다. 디바이스 업데이트 에이전트가 시뮬레이터 처리기를 호출하여 APT('microsoft/apt:1')를 사용하여 패키지 업데이트를 처리하도록 IoT 디바이스에서 다음 명령을 실행합니다.
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.jsonCtrl+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 Hub 소프트웨어에 대한 디바이스 업데이트에는 다음 사용 조건이 적용됩니다.
에이전트를 사용하기 전에 사용 조건을 읽습니다. 설치 및 사용은 해당 약관에 대한 동의를 구성합니다. 사용 조건에 동의하지 않는 경우 IoT Hub용 디바이스 업데이트를 사용하지 마세요.
비고
시뮬레이터를 사용하여 테스트한 후 다음 명령을 실행하여 APT 처리기를 호출하고 무선 패키지 업데이트를 배포합니다.
# sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_apt_1.so --update-type 'microsoft/a pt:1'
디바이스에 태그 추가
Azure Portal에 로그인하고 IoT Hub로 이동합니다.
왼쪽 창의 디바이스 에서 IoT 디바이스를 찾아 디바이스 쌍 또는 모듈 쌍으로 이동합니다.
디바이스 업데이트 에이전트 모듈의 모듈 쌍에서 기존 디바이스 업데이트 태그 값을 null로 설정하여 삭제합니다. 디바이스 업데이트 에이전트에서 디바이스 ID를 사용하는 경우 디바이스 트윈에서 이러한 내용을 변경합니다.
다음과 같이 새 디바이스 업데이트 태그 값을 추가합니다.
"tags": { "ADUGroup": "<CustomTagValue>" }
업데이트 가져오기
필수 구성 요소에서 다운로드한
Tutorial_Simulator.zip파일과adu-update-image-raspberrypi3.swu파일이TutorialImportManifest_Sim.importmanifest.json필요합니다. 업데이트 파일은 Raspberry Pi 자습서에서 재사용됩니다. 이 자습서의 업데이트는 시뮬레이션되기 때문에 파일의 내용은 중요하지 않습니다.Azure Portal에 로그인하고 디바이스 업데이트를 사용하여 IoT Hub로 이동합니다. 왼쪽 창의 자동 디바이스 관리에서 업데이트를 선택합니다.
업데이트 탭 을 선택합니다.
+새 업데이트 가져오기를 선택합니다.
스토리지 컨테이너에서 +를 선택합니다. + Storage 계정을 사용하여 기존 계정을 선택하거나 새 계정을 만듭니다. 그런 다음+ 컨테이너를 사용하여 기존 컨테이너를 선택하거나 새 컨테이너 를 만듭니다. 이 컨테이너는 가져올 업데이트 파일을 스테이징하는 데 사용됩니다.
비고
이전 업데이트에서 실수로 파일을 가져오지 않도록 업데이트를 가져올 때마다 새 컨테이너를 사용하는 것이 좋습니다. 새 컨테이너를 사용하지 않는 경우 이 단계를 완료하기 전에 기존 컨테이너에서 모든 파일을 삭제해야 합니다.
컨테이너에서 업로드 를 선택하고 1단계에서 다운로드한 파일로 이동합니다. 모든 업데이트 파일을 선택한 후 업로드를 선택합니다. 그런 다음 선택 단추를 선택하여 업데이트 가져오기 페이지로 돌아갑니다.
이 스크린샷은 가져오기 단계를 보여 줍니다. 파일 이름은 예제에 사용된 이름과 일치하지 않을 수 있습니다.
업데이트 가져오기 페이지에서 가져올 파일을 검토합니다. 그런 다음 가져오기 업데이트를 선택하여 가져오기 프로세스를 시작합니다.
가져오기 프로세스가 시작되고 화면이 가져오기 기록 섹션으로 전환됩니다. 상태 열이 가져오기에 성공했음을 나타내면 사용 가능한 업데이트 헤더를 선택합니다. 이제 목록에 가져온 업데이트가 표시됩니다.
업데이트를 가져오는 방법에 대해 자세히 알아봅니다.
업데이트 그룹 만들기
페이지 맨 위에 있는 그룹 및 배포 탭으로 이동합니다.
그룹 추가를 선택하여 새 그룹을 만듭니다.
목록에서 IoT Hub 태그 및 디바이스 클래스 를 선택합니다. 그런 다음 그룹 만들기를 선택합니다.
그룹이 만들어지면 업데이트 준수 차트 및 그룹 목록이 업데이트됩니다. 업데이트 준수 차트는 최신 업데이트, 사용 가능한 새 업데이트 및 진행 중인 업데이트와 같은 다양한 준수 상태의 디바이스 수를 보여 줍니다. 업데이트 준수에 대해 알아봅니다.
새로 만든 그룹과 새 그룹의 디바이스에 대해 사용 가능한 업데이트가 표시됩니다. 그룹의 디바이스 클래스 요구 사항을 충족하지 않는 디바이스가 있는 경우 해당하는 잘못된 그룹에 표시됩니다. 이 보기에서 사용 가능한 최상의 업데이트를 새 사용자 정의 그룹에 배포하려면 그룹 옆에 배포 를 선택합니다.
태그를 추가하고 업데이트 그룹을 만드는 방법에 대해 자세히 알아봅니다.
업데이트 배포
그룹이 만들어지면 디바이스 그룹에 사용할 수 있는 새 업데이트가 표시됩니다. 업데이트에 대한 링크는 최상의 업데이트에 있어야 합니다. 한 번 새로 고쳐야 할 수도 있습니다. 업데이트 준수에 대해 자세히 알아봅니다.
그룹 이름을 선택하여 대상 그룹을 선택합니다. 그룹 기본 사항에 따라 그룹 세부 정보로 리디렉션됩니다.
배포를 시작하려면 현재 배포 탭으로 이동합니다. 사용 가능한 업데이트 섹션에서 원하는 업데이트 옆에 있는 배포 링크를 선택합니다. 지정된 그룹에 사용할 수 있는 가장 좋은 업데이트는 최상의 강조 표시로 표시됩니다.
즉시 또는 나중에 시작하도록 배포를 예약합니다. 그런 다음 만들기를 선택합니다.
배포 세부 정보에서 상태는활성으로 바뀝니다. 배포된 업데이트는 (배포 중)으로 표시됩니다.
업데이트가 현재 진행 중인지 확인하려면 준수 차트를 봅니다.
디바이스가 성공적으로 업데이트되면 규정 준수 차트 및 배포 세부 정보가 동일하게 반영되도록 업데이트된 것을 볼 수 있습니다.
업데이트 배포 모니터링
이제 Ubuntu(18.04 x64) 시뮬레이터 참조 에이전트를 사용하는 IoT Hub용 디바이스 업데이트를 사용하여 엔드투엔드 이미지 업데이트를 성공적으로 완료했습니다.
자원을 정리하세요
더 이상 필요하지 않은 경우 디바이스 업데이트 계정, 인스턴스, IoT Hub 및 IoT 디바이스를 정리합니다.