연습 - Linux용 IoT Edge 런타임 설치

완료됨

시작하기 전에 다음이 필요합니다.

클라우드 리소스 만들기

리소스 그룹 만들기

Azure Cloud Shell 환경에서 다음 단계를 수행합니다.

  1. 왼쪽 상단에서 'Bash'를 Cloud Shell 환경으로 선택합니다.

  2. Azure IoT 확장을 Cloud Shell 인스턴스에 추가합니다.

    az extension add --name azure-iot
    
  3. 다음 명령을 사용하여 eastus2 위치에 리소스 그룹을 만듭니다. 리소스 그룹에 이름을 지정합니다.

    az group create --name <resource-group-name> --location eastus2   
    

IoT 허브에서 IoT Edge 디바이스 만들기

  1. 다음 명령을 사용하여 F1 계층 IoT Hub을 만듭니다. IoT Hub에 이름을 지정하고 리소스 그룹으로 바꿉니다.

    az iot hub create --resource-group <resource-group-name> --name <iot-hub-name> --sku F1 --partition-count 2  
    
  2. 연결하기 전에 디바이스를 IoT Hub에 등록해야 합니다. 다음 명령을 실행하여 IoT Hub에 디바이스 ID를 만듭니다. IoT 디바이스에 이름을 지정하고 IoT Hub으로 바꿉니다.

    az iot hub device-identity create --hub-name <iot-hub-name> --device-id <device-id>
    

Linux용 IoT Edge 설치

참고

Linux용 IoT Edge 설치에 대해 자세히 알아보려면 Microsoft 페이지로 이동합니다.

  1. Linux 컴퓨터에서 터미널을 엽니다.

  2. 디바이스 운영 체제와 일치하는 리포지토리 구성을 설치합니다.

    Ubuntu Server 18.04:

    curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ./microsoft-prod.list
    
  3. 생성된 목록을 sources.list.d 디렉터리에 복사합니다.

    sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
    
  4. Microsoft GPG 공개 키를 설치합니다.

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
    

컨테이너 엔진 설치

Azure IoT Edge는 OCI 호환 컨테이너 런타임을 사용합니다. 프로덕션 시나리오의 경우 Moby 엔진을 사용하는 것이 좋습니다. Moby 엔진은 Azure IoT Edge에서 공식적으로 지원되는 유일한 컨테이너 엔진입니다. Docker CE/EE 컨테이너 이미지는 Moby 런타임과 호환 가능합니다.

  1. 디바이스에서 패키지 목록을 업데이트합니다.

    sudo apt-get update
    
  2. Moby 엔진을 설치합니다.

    sudo apt-get install moby-engine
    

Moby 컨테이너 엔진 설치 시 오류가 발생하면 Linux 커널의 Moby 호환성을 확인합니다. 일부 포함된 디바이스의 제조업체는 컨테이너 엔진 호환성에 필요한 기능이 없는 사용자 지정 Linux 커널을 포함하는 디바이스 이미지를 제공합니다. Moby에서 제공한 check-config 스크립트를 사용하는 다음 명령을 실행하여 커널 구성을 확인합니다.

curl -sSL https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
chmod +x check-config.sh
./check-config.sh

스크립트의 출력에서 Generally NecessaryNetwork Drivers 아래의 모든 항목을 사용할 수 있는지 확인합니다. 기능이 누락됐다면 소스에서 커널을 다시 빌드하고 적절한 커널 .config 내에 포함하기 위한 관련 모듈을 선택하여 활성화합니다. 마찬가지로 defconfig 또는 menuconfig 같은 커널 구성 생성기를 사용하는 경우 각각의 기능을 찾아 활성화하고 그에 따라 커널을 다시 빌드합니다. 새로 수정된 커널을 배포한 후에는 check-config 스크립트를 다시 실행하여 필요한 모든 기능이 성공적으로 활성화되었는지 확인합니다.

IoT Edge 보안 디먼 설치

IoT Edge 보안 디먼은 IoT Edge 디바이스에서 보안 표준을 제공하고 유지 관리합니다. 디먼은 부팅할 때마다 시작되며, 나머지 IoT Edge 런타임을 시작하여 디바이스를 부트스트랩합니다.

  1. 디바이스에서 패키지 목록을 업데이트합니다.

    sudo apt-get update
    
  2. 사용할 수 있는 IoT Edge 버전을 확인합니다.

    apt list -a iotedge
    
  3. 최신 버전의 보안 디먼을 설치하고, 다음 명령을 사용하여 최신 버전의 libiothsm-std 패키지도 설치합니다.

    sudo apt-get install iotedge
    

클라우드 ID를 사용한 디바이스 프로비전

대칭 키를 사용하여 인증

이 시점에서 IoT Edge 런타임은 Linux 디바이스에 설치되고, 클라우드 ID 및 인증 정보를 사용하여 디바이스를 프로비전해야 합니다.

이 섹션에서는 대칭 키 인증을 사용하여 디바이스를 프로비전하는 단계를 안내합니다. IoT Hub에 디바이스를 등록했고 디바이스 정보에서 연결 문자열 검색을 완료한 상태여야 합니다.

IoT Edge 디바이스에서 구성 파일을 엽니다.

sudo nano /etc/iotedge/config.yaml

파일의 프로비전 구성을 찾고 Manual provisioning configuration using a connection string 섹션의 주석 처리 제거가 되어 있지 않은 경우에 주석 처리 제거합니다.

```toml
# Manual provisioning configuration using a connection string
provisioning:
  source: "manual"
  device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"
```

device_connection_string의 값을 IoT Edge 디바이스의 연결 문자열로 업데이트합니다. 다른 프로비저닝 섹션이 주석으로 처리되었는지 확인합니다. 프로비저닝: 줄에 선행 공백이 없고 중첩된 항목이 두 개의 공백으로 들여쓰기되었는지 확인합니다.

Shift+Right, Shift+Insert를 클릭하여 클립보드 콘텐츠를 Nano에 붙여넣기합니다.

파일을 저장하고 닫습니다.

CTRL + X`, `Y`, `Enter

구성 파일에서 프로비전 정보를 입력한 후 디먼을 다시 시작합니다.

sudo systemctl restart iotedge

구성 성공 확인

IoT Edge 디바이스에서 런타임이 성공적으로 설치 및 구성되었는지 확인합니다.

IoT Edge 시스템 서비스가 실행되고 있는지 확인합니다.

sudo systemctl status iotedge