다음을 통해 공유


빠른 시작: 첫 번째 IoT Edge 모듈을 가상 Linux 디바이스에 배포

적용 대상:IoT Edge 1.5 확인 표시 IoT Edge 1.5

Important

IoT Edge 1.5 LTS는 지원되는 릴리스입니다. IoT Edge 1.4 LTS는 2024년 11월 12일부터 수명이 종료됩니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

가상 Linux IoT Edge 디바이스에 컨테이너화된 코드를 배포하여 이 빠른 시작에서 Azure IoT Edge를 사용해 보세요. IoT Edge를 사용하면 디바이스의 코드를 원격으로 관리하여 더 많은 워크로드를 에지로 보낼 수 있습니다. 이 빠른 시작에서는 IoT Edge 디바이스에 Azure 가상 머신을 사용합니다. 완료되면 테스트 머신을 빠르게 만들고 삭제할 수 있습니다.

이 빠른 시작에서 다음을 수행하는 방법을 알아봅니다.

  • IoT Hub를 만듭니다.
  • IoT Edge 디바이스를 IoT Hub에 등록합니다.
  • 가상 디바이스에 IoT Edge 런타임을 설치하고 시작합니다.
  • 모듈을 IoT Edge 디바이스에 원격으로 배포합니다.

빠른 시작: 디바이스 및 클라우드의 아키텍처의 다이어그램

이 빠른 시작에서는 IoT Edge 디바이스로 구성되는 Linux 가상 머신을 만드는 과정을 안내합니다. 그런 다음, Azure Portal에서 디바이스로 모듈을 배포합니다. 이 빠른 시작에서는 온도, 습도 및 압력 데이터를 생성하는 시뮬레이션된 센서 모듈을 사용합니다. 다른 Azure IoT Edge 자습서에서는 비즈니스 인사이트를 위해 시뮬레이션된 데이터를 분석하는 추가 모듈을 배포하는 과정을 설명하므로 여기서 수행하는 작업을 토대로 진행됩니다.

활성 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만드세요.

필수 조건

Azure CLI에 대한 환경을 설정합니다.

이 빠른 시작에서 사용하는 모든 리소스를 관리하는 리소스 그룹입니다. 이 빠른 시작 및 다음 자습서에서는 예제 리소스 그룹 이름 IoTEdgeResources를 사용합니다.

az group create --name IoTEdgeResources --___location westus2

IoT Hub 만들기

Azure CLI를 사용하여 IoT Hub를 만들어 빠른 시작을 시작합니다.

클라우드에서 IoT Hub를 만드는 방법을 보여 주는 다이어그램

IoT Hub의 무료 계층은 이 빠른 시작에서 작동합니다. 이전에 IoT Hub를 사용했고 이미 만든 허브가 있으면 해당 IoT 허브를 사용할 수 있습니다.

다음 코드는 IoTEdgeResources 리소스 그룹에서 무료 F1 허브를 만듭니다. IoT Hub의 고유한 이름으로 대체 <hub-name> 합니다. IoT Hub를 만드는 데 몇 분 정도 걸릴 수 있습니다.

az iot hub create --resource-group IoTEdgeResources --name <hub-name> --sku F1 --partition-count 2

구독에 이미 무료 IoT Hub가 하나 있어 오류가 발생하면 SKU를 S1로 변경합니다. 구독마다 하나의 무료 IoT Hub만 가질 수 있습니다. IoT Hub 이름을 사용할 수 없다는 오류가 발생할 경우 다른 사용자에게 해당 이름의 허브가 이미 있는 것입니다. 새 이름을 사용해 보세요.

IoT Edge 디바이스 등록

방금 만든 IoT Hub에 IoT Edge 디바이스를 등록합니다.

IoT Hub ID를 사용하여 디바이스를 등록하는 방법에 대한 다이어그램

IoT 허브와 통신할 수 있도록 IoT Edge 디바이스에 대한 디바이스 ID를 만듭니다. 디바이스 ID는 클라우드에 있으며, 사용자는 고유한 디바이스 연결 문자열을 사용하여 물리적 디바이스를 디바이스 ID에 연결합니다.

IoT Edge 디바이스는 일반적인 IoT 디바이스와 다르게 동작하고 관리되므로 플래그를 사용하여 --edge-enabled 이 ID를 IoT Edge 디바이스로 선언합니다.

  1. Azure Cloud Shell에 다음 명령을 입력하여 허브에 myEdgeDevice 라는 디바이스를 만듭니다.

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name <hub-name>
    

    iothubowner 정책 키에 대한 오류가 발생하는 경우 Cloud Shell에서 최신 버전의 azure-iot 확장을 실행하고 있는지 확인합니다.

  2. 물리적 디바이스를 IoT Hub의 ID에 연결하는 디바이스의 연결 문자열을 확인합니다. 여기에는 IoT Hub의 이름, 디바이스 이름 및 이들 간의 연결을 인증하는 공유 키가 포함됩니다. 다음 섹션에서 이 연결 문자열을 다시 사용하여 IoT Edge 디바이스를 설정합니다.

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <hub-name>
    

    예를 들어 연결 문자열은 다음과 비슷 HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE-SHARED-ACCESS-KEY>해야 합니다.

IoT Edge 디바이스 구성

Azure IoT Edge 런타임을 사용하여 가상 머신을 만듭니다.

디바이스에서 런타임을 시작하는 방법에 대한 다이어그램

IoT Edge 런타임은 모든 IoT Edge 디바이스에 배포되며 세 가지 구성 요소가 있습니다. IoT Edge 보안 디먼은 IoT Edge 디바이스가 부팅되고 IoT Edge 에이전트를 시작하여 디바이스를 부트스트랩할 때마다 시작됩니다. IoT Edge 에이전트는 IoT Edge 허브를 포함하여 IoT Edge 디바이스에서 모듈을 쉽게 배포하고 모니터링할 수 있습니다. IoT Edge 허브는 IoT Edge 디바이스의 모듈 간 통신과 디바이스와 IoT Hub 간의 통신을 관리합니다.

런타임 구성 중에 디바이스 연결 문자열을 제공합니다. 이 문자열은 Azure CLI에서 검색됩니다. 이 문자열은 물리적 디바이스를 Azure의 IoT Edge 디바이스 ID에 연결합니다.

IoT Edge 디바이스 배포

이 섹션에서는 Azure Resource Manager 템플릿을 사용하여 새 가상 머신을 만들고 IoT Edge 런타임을 설치합니다. 사용자 고유의 Linux 디바이스를 대신 사용하려는 경우 단일 Linux IoT Edge 디바이스를 수동으로 프로비저닝의 설치 단계를 수행한 다음, 이 빠른 시작으로 돌아오면 됩니다.

Azure에 배포 단추 또는 CLI 명령을 사용하여 미리 빌드된 iotedge-vm-deploy 템플릿을 기반으로 IoT Edge 디바이스를 만듭니다.

  • IoT Edge Azure Resource Manager 템플릿을 사용하여 배포합니다.

    Azure에 배포

  • bash 또는 Cloud Shell 사용자의 경우 다음 명령을 텍스트 편집기에 복사하고, 자리 표시자 텍스트를 해당 정보로 바꾸고, bash 또는 Cloud Shell 창에 복사합니다.

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \
    --parameters adminUsername='azureUser' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    
  • PowerShell 사용자의 경우 PowerShell 창에 다음 명령을 복사한 다음, 자리 표시자 텍스트를 해당 정보로 바꿉니다.

    az deployment group create `
    --resource-group IoTEdgeResources `
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" `
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' `
    --parameters adminUsername='azureUser' `
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) `
    --parameters authenticationType='password' `
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    

이 템플릿은 다음 매개 변수를 사용합니다.

매개 변수 설명
resource-group 리소스가 만들어지는 리소스 그룹입니다. 지금까지 이 문서 전체에서 사용한 기본 IoTEdgeResources를 사용하거나, 구독의 기존 리소스 그룹 이름을 입력합니다.
template-uri 사용 중인 Resource Manager 템플릿을 가리키는 포인터입니다.
dnsLabelPrefix 가상 머신의 호스트 이름을 만드는 데 사용되는 문자열입니다. 자리 표시자 텍스트를 가상 머신의 이름으로 바꿉니다.
adminUsername 가상 머신의 관리자 계정 사용자 이름입니다. azureUser 예제를 사용하거나 새 사용자 이름을 입력합니다.
deviceConnectionString IoT Hub에서 디바이스 ID의 연결 문자열입니다. 가상 머신의 IoT Edge 디바이스의 런타임을 구성하는 데 사용됩니다. 이 매개 변수 내의 CLI 명령은 사용자 대신 연결 문자열을 가져옵니다. 자리 표시자 텍스트를 IoT 허브 이름으로 바꿉니다.
authenticationType 관리자 계정의 인증 방법입니다. 이 빠른 시작에서는 암호 인증을 사용하지만, 이 매개 변수를 sshPublicKey로 설정할 수도 있습니다.
adminPasswordOrKey 관리 계정의 암호 또는 SSH 키 값입니다. 자리 표시자 텍스트를 안전한 암호로 바꿉니다. 암호의 길이는 12자 이상이어야 하며 소문자, 대문자, 숫자 및 특수 문자 중 세 가지를 포함해야 합니다.

배포가 완료되면 CLI의 JSON 형식 출력에 가상 머신에 연결할 SSH 정보가 포함됩니다. 출력 섹션의 공용 SSH 항목 값을 복사합니다. 예를 들어 SSH 명령은 ssh azureUser@edge-vm.westus2.cloudapp.azure.com과 비슷합니다.

IoT Edge 런타임 상태 보기

이 빠른 시작의 나머지 명령은 IoT Edge 디바이스 자체에서 발생하기 때문에 디바이스에서 발생하는 상황을 볼 수 있습니다. 가상 머신을 사용하는 경우 설정하는 관리 사용자 이름과 배포 명령에서 출력한 DNS 이름을 사용하여 해당 컴퓨터에 지금 연결합니다. Azure Portal의 가상 머신 개요 페이지에서 DNS 이름을 확인할 수도 있습니다. 다음 명령을 사용하여 가상 머신에 연결합니다. <admin-username><DNS-name>를 사용자 고유의 값으로 바꿉니다.

ssh <admin-username>@<DNS-name>

가상 머신에 연결되면 IoT Edge 디바이스에 런타임이 성공적으로 설치 및 구성되었는지 확인합니다.

  1. IoT Edge가 실행 중인지 확인합니다. 다음 명령은 IoT Edge가 실행 중이거나 서비스 오류를 제공하는 경우 Ok 상태를 반환합니다.

    sudo iotedge system status
    

    iotedge 명령을 실행하려면 상승된 권한이 필요합니다. IoT Edge 런타임을 설치한 후 처음으로 머신에서 로그아웃했다가 다시 로그인하면 권한이 자동으로 업데이트됩니다. 그 전까지는 명령 앞에 sudo를 사용합니다.

  2. 서비스 문제를 해결해야 할 경우 서비스 로그를 검색합니다.

    sudo iotedge system logs
    
  3. IoT Edge 디바이스에서 실행되는 모든 모듈을 봅니다. 서비스를 처음 시작했으므로 edgeAgent 모듈이 실행되는 것을 확인해야 합니다. edgeAgent 모듈은 기본적으로 실행되며, 디바이스에 배포하는 추가 모듈을 설치하고 시작하는 데 도움이 됩니다.

    sudo iotedge list
    

IoT Edge 디바이스가 구성되었습니다. 클라우드 배포 모듈을 실행할 준비가 되었습니다.

모듈 배포

클라우드에서 Azure IoT Edge 디바이스를 관리하여 디바이스 원격 분석 데이터를 IoT Hub로 보내는 모듈을 배포합니다.

클라우드에서 디바이스로 모듈을 배포하는 방법에 대한 다이어그램

Azure IoT Edge의 주요 기능은 클라우드에서 IoT Edge 디바이스에 코드를 배포하는 것입니다. IoT Edge 모듈은 컨테이너로 구현된 실행 패키지입니다. 이 섹션에서는 Microsoft Artifact Registry의 IoT Edge 모듈 섹션에서 미리 빌드된 모듈을 배포합니다.

이 섹션에서 배포하는 모듈은 센서를 시뮬레이션하고 생성된 데이터를 보냅니다. 이 모듈은 시뮬레이션된 데이터를 개발 및 테스트에 사용할 수 있으므로 IoT Edge를 시작할 때 유용한 코드 조각입니다. 시뮬레이션된 온도 센서 소스 코드를 보면 이 모듈이 하는 일을 정확하게 이해할 수 있습니다.

다음 단계를 사용하여 첫 번째 모듈을 배포합니다.

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

  2. 왼쪽 메뉴의 디바이스 관리에서 디바이스를 선택합니다.

  3. 디바이스 목록에서 대상 IoT Edge 디바이스의 디바이스 ID를 선택합니다.

    새 IoT Edge 디바이스를 만들면 Azure Portal에 상태 코드 417 -- The device's deployment configuration is not set 가 표시됩니다. 이 상태는 정상이며 디바이스가 모듈 배포를 수신할 준비가 되었음을 의미합니다.

  4. 위쪽 막대에서 모듈 설정을 선택합니다.

    디바이스에서 실행하려는 모듈을 선택합니다. 직접 빌드한 모듈이나 컨테이너 레지스트리의 이미지 중에서 선택할 수 있습니다. 이 빠른 시작에서는 Microsoft 컨테이너 레지스트리에서 모듈을 배포합니다.

  5. IoT Edge 모듈 섹션에서 추가를 선택한 다음 IoT Edge 모듈을 선택합니다.

  6. 다음 모듈 설정을 업데이트합니다.

    설정
    IoT 모듈 이름 SimulatedTemperatureSensor
    이미지 URI mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest
    정책 다시 시작 항상
    원하는 상태 실행 중
  7. 다음: 경로를 선택하여 경로 구성을 계속합니다.

  8. 시뮬레이션된 온도 모듈의 모든 메시지를 IoT Hub로 보내는 경로를 추가합니다.

    설정
    속성 SimulatedTemperatureSensorToIoTHub
    FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
  9. 완료되면 다음: 리뷰 + 만들기를 클릭합니다.

  10. JSON 파일을 검토한 다음, 만들기를 선택합니다. JSON 파일은 IoT Edge 디바이스에 배포하는 모든 모듈을 정의합니다.

    참고 항목

    IoT Edge 디바이스에 새 배포를 제출할 때는 디바이스에 아무것도 푸시되지 않습니다. 대신 디바이스가 IoT Hub에 새로운 지침이 있는지를 정기적으로 쿼리합니다. 디바이스는 업데이트된 배포 매니페스트를 찾으면 새 배포에 대한 정보를 사용하여 클라우드에서 모듈 이미지를 끌어온 다음, 모듈을 로컬로 실행하기 시작합니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.

모듈 배포 세부 정보를 만들면 마법사는 디바이스 세부 정보 페이지로 돌아갑니다. 모듈 탭에서 배포 상태를 확인합니다.

세 가지 모듈 즉, $edgeAgent, $edgeHubSimulatedTemperatureSensor가 나열됩니다. 하나 이상의 모듈에 배포에서 지정됨 아래 가 있지만, 디바이스에서 보고됨 아래에는 없는 경우, IoT Edge 디바이스가 계속 모듈을 시작하고 있는 것입니다. 몇 분 정도 기다렸다가 페이지를 새로 고칩니다.

배포된 모듈 목록에서 SimulatedTemperatureSensor를 보여 주는 스크린샷

모듈 배포에 문제가 있는 경우 Azure Portal의 IoT Edge 디바이스 문제 해결에 대해 자세히 알아보세요.

생성된 데이터 보기

이 빠른 시작에서는 새 IoT Edge 디바이스를 만들고 IoT Edge 런타임을 설치합니다. 그런 다음 Azure Portal을 사용하여 디바이스 자체를 변경하지 않고 디바이스에서 실행할 IoT Edge 모듈을 배포합니다.

여기서 푸시한 모듈은 나중에 테스트에 사용할 수 있는 샘플 환경 데이터를 생성합니다. 시뮬레이션된 센서는 머신과 머신 주변의 환경을 모니터링합니다. 예를 들어 이 센서는 서버 룸, 공장 바닥 또는 풍력 터빈에 있을 수 있습니다. 메시지에는 주변 온도 및 습도, 기계 온도 및 압력, 타임스탬프가 포함됩니다. IoT Edge 자습서는 이 모듈에서 만든 데이터를 분석용 테스트 데이터로 사용합니다.

IoT Edge 디바이스에서 명령 프롬프트를 열거나 Azure CLI에서 SSH 연결을 사용합니다. 클라우드에서 배포한 모듈이 IoT Edge 디바이스에서 실행 중인지 확인합니다.

sudo iotedge list

디바이스의 세 가지 모듈을 보여 주는 스크린샷

온도 센서 모듈에서 보낸 메시지를 봅니다.

sudo iotedge logs SimulatedTemperatureSensor -f

출력 콘솔에서 모듈의 데이터를 보여 주는 스크린샷

IoT Edge 명령은 모듈 이름을 참조할 때 대/소문자를 구분합니다.

리소스 정리

IoT Edge 자습서를 계속하려면 이 빠른 시작에서 등록하고 설정한 디바이스를 사용합니다. 그렇지 않으면 요금이 부과되지 않도록 만든 Azure 리소스를 삭제합니다.

새 리소스 그룹에서 가상 머신 및 IoT 허브를 만든 경우 해당 그룹 및 모든 관련 리소스를 삭제할 수 있습니다. 리소스 그룹의 내용을 다시 확인하여 유지하려는 내용이 없는지 확인합니다. 전체 그룹을 삭제하지는 않으려는 경우 대신, 개별 리소스를 삭제할 수 있습니다.

Important

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다.

IoTEdgeResources 그룹을 삭제합니다. 리소스 그룹을 삭제하는 데 몇 분 정도 걸릴 수 있습니다.

az group delete --name IoTEdgeResources --yes

리소스 그룹 목록을 확인하여 리소스 그룹이 삭제되어 있는지 확인합니다.

az group list

다음 단계

이 빠른 시작에서는 새 IoT Edge 디바이스를 만들고 Azure IoT Edge 클라우드 인터페이스를 사용하여 디바이스에 코드를 배포했습니다. 이제 해당 환경에 대한 원시 데이터를 생성하는 테스트 디바이스를 사용합니다.

다음 자습서에서는 Azure Portal에서 디바이스의 활동 및 상태를 모니터링하는 방법을 배웁니다.