적용 대상: IoT Edge 1.5
중요합니다
IoT Edge 1.5 LTS는 지원되는 릴리스입니다. IoT Edge 1.4 LTS는 2024년 11월 12일부터 수명이 종료됩니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.
이 문서에서는 대칭 키를 사용하여 하나 이상의 Linux IoT Edge 디바이스를 설정하기 위한 단계별 지침을 제공합니다. Azure IoT Hub DPS( 디바이스 프로비저닝 서비스)를 사용하여 Azure IoT Edge 디바이스를 자동으로 설정합니다. 자동 프로비전 프로세스에 익숙하지 않은 경우 계속하기 전에 프로비전 개요를 검토합니다.
주요 작업은 다음과 같습니다.
- 단일 디바이스에 대한 개별 등록 또는 디바이스 집합에 대한 그룹 등록 을 만듭니다.
- IoT Edge 런타임을 설치하고 IoT Hub에 연결합니다.
팁
환경을 단순화하려면 Azure IoT Edge 구성 도구를 사용해 보세요. 현재 공개 미리 보기로 제공되는 이 명령줄 도구는 장치에 IoT Edge를 설치하고 DPS 및 대칭 키 증명을 사용하여 이를 프로비전합니다.
대칭 키 증명은 디바이스 프로비전 서비스 인스턴스를 사용하여 디바이스를 인증하는 간단한 방법입니다. 이 방법은 디바이스 프로비저닝을 새로 사용하거나 엄격한 보안 요구 사항이 없는 개발자를 위한 "Hello world" 환경입니다. TPM 또는 X.509 인증서를 사용하는 디바이스 증명은 더 안전하며 보다 엄격한 보안 요구 사항에 맞게 사용해야 합니다.
필수 조건
클라우드 리소스
- 활성 IoT 허브
- IoT 허브에 연결된 Azure의 IoT Hub Device Provisioning Service 인스턴스
- 디바이스 프로비저닝 서비스 인스턴스가 없는 경우 IoT Hub Device Provisioning Service 빠른 시작의 새 IoT Hub Device Provisioning Service 만들기 및 IoT 허브와 디바이스 프로비저닝 서비스 연결 섹션의 지침을 따를 수 있습니다.
- 디바이스 프로비저닝 서비스를 실행한 후 개요 페이지에서 ID 범위 값을 복사합니다. IoT Edge 런타임을 구성하는 경우 이 값을 사용합니다.
디바이스 요구 사항
물리적 또는 가상 Linux 디바이스를 IoT Edge 디바이스로 사용합니다.
각 디바이스를 식별하는 고유한등록 ID 를 정의합니다. MAC 주소, 일련 번호 또는 디바이스의 고유한 정보를 사용합니다. 예를 들어 MAC 주소와 일련 번호를 결합하여 등록 ID를 만듭니다 sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
. 유효한 문자는 소문자 영숫자 및 대시(-
)입니다.
DPS 등록 만들기
DPS를 통해 하나 이상의 디바이스를 프로비전하려면 등록을 만듭니다.
단일 IoT Edge 디바이스를 프로비전하려는 경우 개별 등록을 만듭니다. 여러 디바이스를 프로비전해야 하는 경우 DPS 그룹 등록 만들기 단계를 따릅니다.
DPS에서 등록을 만들 때 초기 디바이스 트윈 상태를 선언할 기회가 있습니다. 디바이스 쌍에서 지역, 환경, 위치 또는 디바이스 유형 같은 솔루션에 필요한 모든 메트릭으로 디바이스 그룹에 태그를 설정할 수 있습니다. 이러한 태그는 자동 배포를 만드는 데 사용됩니다.
디바이스 프로비저닝 서비스의 등록에 대한 자세한 내용은 디바이스 등록을 관리하는 방법을 참조하세요.
DPS 개별 등록 만들기
팁
이 문서의 단계는 Azure Portal에 대한 것이지만 Azure CLI를 사용하여 개별 등록을 만들도록 할 수도 있습니다. 자세한 내용은 az iot dps enrollment를 참조하세요. CLI 명령의 일부로 에지 사용 플래그를 사용하여 IoT Edge 장치에 대한 등록을 지정합니다.
Azure Portal에서 IoT Hub Device Provisioning Service 인스턴스로 이동합니다.
설정에서 등록 관리를 선택합니다.
등록을 구성하려면 개별 등록 추가를 선택한 다음, 다음 단계를 완료합니다.
메커니즘에서 대칭 키를 선택합니다.
디바이스에 대한 고유한 등록 ID를 제공합니다.
원하는 경우, 디바이스에 대한 IoT Hub 디바이스 ID를 제공합니다. 디바이스 ID를 사용하여 모듈 배포에 대한 개별 디바이스를 대상으로 할 수 있습니다. 디바이스 ID를 제공하지 않으면 등록 ID가 사용됩니다.
등록이 IoT Edge 디바이스에 대한 것이라고 선언하려면 True를 선택합니다.
원하는 경우, 초기 디바이스 쌍 상태에 태그 값을 추가합니다. 태그를 사용하여 모듈 배포에 대한 디바이스 그룹을 대상으로 할 수 있습니다. 예시:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
저장을 선택합니다.
IoT Edge 런타임을 설치할 때 사용할 개별 등록의 기본 키 값을 복사합니다.
이제 이 디바이스에 대한 등록이 존재하므로 IoT Edge 런타임은 설치 중에 디바이스를 자동으로 프로비저닝할 수 있습니다.
IoT Edge 설치
이 섹션에서는 IoT Edge용 Linux 가상 머신 또는 실제 디바이스를 준비합니다. 그런 다음, IoT Edge를 설치합니다.
다음 명령을 실행하여 패키지 리포지토리를 추가한 다음, 신뢰할 수 있는 키 목록에 Microsoft 패키지 서명 키를 추가합니다.
중요합니다
2022년 6월 30일, Raspberry Pi OS Stretch는 계층 1 OS 지원 목록에서 사용 중지되었습니다. 잠재적인 보안 취약성을 방지하려면 호스트 OS를 Bullseye로 업데이트합니다.
2계층 지원 플랫폼 운영 체제의 경우 설치 패키지는 Azure IoT Edge 릴리스에서 제공됩니다. 오프라인 또는 특정 버전 설치의 설치 단계를 참조하세요(선택 사항).
설치는 몇 가지 명령으로 수행할 수 있습니다. 터미널을 열고 다음 명령을 실행합니다.
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
운영 체제 버전에 대한 자세한 내용은 Azure IoT Edge 지원 플랫폼을 참조하세요.
참고 항목
Azure IoT Edge 소프트웨어 패키지에는 각 패키지(usr/share/doc/{package-name}
또는 LICENSE
디렉터리)에 있는 사용 조건이 적용됩니다. 패키지를 사용하기 전에 사용 조건을 읽습니다. 패키지를 설치하고 사용하면 이러한 사용 조건에 동의하는 것입니다. 사용 조건에 동의하지 않으면 해당 패키지를 사용하지 마세요.
컨테이너 엔진 설치
Azure IoT Edge는 OCI 호환 컨테이너 런타임을 사용합니다. 프로덕션 시나리오의 경우 Moby 엔진을 사용하는 것이 좋습니다. Moby 엔진은 IoT Edge에서 공식적으로 지원되는 컨테이너 엔진입니다. Docker CE/EE 컨테이너 이미지는 Moby 런타임과 호환 가능합니다. Ubuntu Core 스냅을 사용하는 경우 Docker 스냅은 Canonical에서 관리 및 지원하며, 프로덕션 환경에서도 사용 가능합니다.
Moby 엔진을 설치합니다.
sudo apt-get update; \
sudo apt-get install moby-engine
기본적으로 컨테이너 엔진은 컨테이너 로그 크기 제한을 설정하지 않습니다. 시간이 지남에 따라 이 상황으로 인해 디바이스가 로그로 채워지고 디스크 공간이 부족해질 수 있습니다. 그러나 선택 사항이지만 로컬로 표시되도록 로그를 구성할 수 있습니다. 로깅 구성에 대한 자세한 내용은 프로덕션 환경에서 IoT Edge 솔루션 배포 준비를 참조하세요.
다음 단계에서는 local
로깅 드라이버를 로깅 메커니즘으로 사용하도록 컨테이너를 구성하는 방법을 보여 줍니다.
기존 Docker 디먼의 구성 파일 만들기 또는 편집
sudo nano /etc/docker/daemon.json
예제와 같이 기본 로깅 드라이버를
local
로깅 드라이버로 설정합니다.{ "log-driver": "local" }
변경 내용을 적용하려면 컨테이너 엔진을 다시 시작합니다.
sudo systemctl restart docker
IoT Edge 런타임 설치
IoT Edge 서비스는 IoT Edge 디바이스에서 보안 표준을 제공하고 유지 관리합니다. 서비스는 부팅할 때마다 시작되며, 나머지 IoT Edge 런타임을 시작하여 디바이스를 부트스트랩합니다.
참고 항목
버전 1.2부터 Azure IoT ID 서비스는 IoT Edge 및 IoT Hub와 통신해야 하는 다른 디바이스 구성 요소에 대한 ID 프로비저닝 및 관리를 처리합니다.
이 섹션의 단계에서는 인터넷이 연결된 디바이스에 최신 IoT Edge 버전을 설치하는 일반적인 프로세스를 보여 줍니다. 시험판 버전과 같은 특정 버전을 설치해야 하거나 오프라인 상태에서 설치해야 하는 경우 이 문서의 뒷부분에 있는 오프라인 또는 특정 버전 설치 단계를 따릅니다.
팁
이전 버전을 실행하는 IoT Edge 디바이스가 이미 있고 최신 릴리스로 업그레이드하려는 경우 업데이트 IoT Edge의 단계를 사용합니다. 최신 버전은 업그레이드에 특정 단계가 필요한 이전 버전의 IoT Edge와 충분히 다릅니다.
최신 버전의 IoT Edge 및 IoT ID 서비스 패키지를 설치합니다(아직 최신 버전이 아닌 경우).
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
클라우드 ID를 사용한 디바이스 프로비전
런타임이 디바이스에 설치되면 디바이스를 Device Provisioning Service 및 IoT Hub에 연결하는 데 사용되는 정보로 구성합니다.
다음 정보를 준비합니다.
- DPS ID 범위 값
- 만든 디바이스 등록 ID
- 개별 등록의 기본 키 또는 그룹 등록을 사용하는 장치의 파생 키 중 하나입니다.
IoT Edge 설치의 일부로 제공되는 템플릿 파일을 기반으로 디바이스에 대한 구성 파일을 만듭니다.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
IoT Edge 디바이스에서 구성 파일을 엽니다.
sudo nano /etc/aziot/config.toml
파일의 프로비전 섹션을 찾습니다. 대칭 키를 사용한 DPS 설정 라인의 주석을 해제하고 다른 모든 프로비전 라인이 주석으로 처리되었는지 확인합니다.
# DPS provisioning with symmetric key [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "PASTE_YOUR_SCOPE_ID_HERE" # Uncomment to send a custom payload during DPS registration # payload = { uri = "PATH_TO_JSON_FILE" } [provisioning.attestation] method = "symmetric_key" registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE" symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" } # auto_reprovisioning_mode = Dynamic
id_scope
,registration_id
및symmetric_key
의 값을 DPS 및 디바이스 정보로 업데이트합니다.대칭 키 매개 변수는 인라인 키, 파일 URI 또는 PKCS#11 URI를 수락할 수 있습니다. 사용하는 형식에 따라 하나의 대칭 키 줄만 주석 처리를 제거합니다. 인라인 키를 사용하는 경우 예제와 같이 base64로 인코딩된 키를 사용합니다. 파일 URI를 사용하는 경우 파일에 키의 원시 바이트가 포함되어야 합니다.
PKCS#11 URI를 사용하는 경우 구성 파일에서 PKCS#11 섹션을 찾아 PKCS#11 구성 정보를 입력합니다.
구성 설정 프로비저닝에 대한 자세한 내용은 IoT Edge 디바이스 설정 구성을 참조하세요.
필요에 따라 파일의 자동 다시 프로비전 모드 섹션을 찾습니다. 매개 변수를
auto_reprovisioning_mode
사용하여 디바이스의 다시 프로비전 동작을 설정합니다. 동적 - 디바이스가 한 IoT Hub에서 다른 IoT Hub로 이동할 수 있음을 감지하면 다시 프로비전합니다. 기본값입니다. AlwaysOnStartup - 디바이스가 다시 부팅되거나 크래시로 인해 디먼이 다시 시작되면 다시 프로비전됩니다. OnErrorOnly - 디바이스 다시 프로비저닝을 자동으로 트리거하지 않습니다. 연결 오류로 인해 ID 프로비전 중에 디바이스가 IoT Hub에 연결할 수 없는 경우 각 모드에는 암시적 디바이스 다시 프로비전 대체가 있습니다. 자세한 내용은 IoT Hub 디바이스 다시 프로비저닝 개념을 참조하세요.선택적으로
payload
매개 변수의 주석 처리를 제거하여 로컬 JSON 파일에 대한 경로를 지정합니다. 파일의 내용은 디바이스가 등록 되면 DPS에 추가 데이터로 전송 됩니다. 이는 사용자 지정 할당에 유용합니다. 예를 들어, 사용자 개입 없이 IoT 플러그 앤 플레이 모델 ID를 기반으로 디바이스를 할당하려는 경우입니다.파일을 저장 후 닫습니다.
디바이스에서 수행한 구성 변경 내용을 적용합니다.
sudo iotedge config apply
설치 성공 확인
런타임이 성공적으로 시작되면 IoT Hub로 이동하여 디바이스에 IoT Edge 모듈 배포를 시작합니다.
디바이스 프로비저닝 서비스에서 만든 개별 등록이 사용되는지 확인합니다. Azure Portal에서 디바이스 프로비전 서비스 인스턴스로 이동합니다. 직접 생성한 개별 등록의 세부 정보를 확인하세요. 등록 상태는 할당된 상태이며, 디바이스 ID가 나열됩니다.
디바이스에서 이러한 명령을 실행하여 IoT Edge가 설치되고 성공적으로 시작되는지 확인합니다.
IoT Edge 서비스의 상태를 확인합니다.
sudo iotedge system status
서비스 로그를 봅니다.
sudo iotedge system logs
실행 중인 모듈을 나열합니다.
sudo iotedge list
다음 단계
디바이스 프로비저닝 서비스 등록 프로세스를 사용하면 새 디바이스를 설정할 때 디바이스 ID 및 디바이스 쌍 태그를 설정할 수 있습니다. 이러한 값을 사용하여 자동 디바이스 관리를 사용하여 개별 디바이스 또는 디바이스 그룹을 대상으로 지정합니다. Azure Portal 또는 Azure CLI를 사용하여 대규모로 IoT Edge 모듈을 배포하고 모니터링하는 방법을 알아봅니다.