Visual Studio Code (VSCode)는 개발자의 개발 속도를 향상시키는 파워풀한 크로스플랫폼 무료 개발환경입니다. 이번 실습에서는 IoT Edge의 개발 프로세스를 알아보면서 VSCode를 사용하여 IoT Edge 모듈을 배포해보겠습니다.
이번 실습을 통해서
- VSCode에서 IoT Edge 디바이스 생성
- 라즈베리파이에 Azure IoT Edge 런타임 설치
- Azure Container Registry (ACR) 만들기
- Azure IoT Edge Module의 다운로드와 빌드
- Lab 2에서 만든 Azure IoT Hub
- .Net Core 설치 https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.2.107-windows-x64-installer
- Visual Studio Code 설치
- Visual Studio 용 Azure IoT Hub Toolkit, Azure IoT Edge
Azure IoT Edge가 작동될 라즈베리파이 기기를 준비합니다. 라즈베리파이에는 Rasbian 리눅스가 설치되어 있어야 합니다. 설치 방법은 Setting up your Raspberry Pi를 참조 바랍니다.
라즈베리파이에 모니터와 키보드, 마우스를 연결하여 무선 네트워크를 연결하고 IP를 확인합니다.
라즈베리파이에 SSH를 연결할 수 있도록 설정합니다. 초기 아이디와 비밀번호는 pi/raspberry 입니다.
Putty 등의 툴을 이용하여 SSH에 접속합니다.
이번엔 Azure 포탈 대신 Visual Studio Code의 Azure IoT Extension을 통해서 Azure IoT Edge 디바이스를 만들어보겠습니다.
VSCode의 Azure IoT Extension을 사용하여 IoT Hub에 연결할 수 있습니다. 연결을 위해서 Azure 구독에 로그인하고 IoT Hub를 선택해야 합니다.
-
Visual Studio Code의 Explorer 를 선택합니다.
-
Explorer 아래쪽에 Azure IoT Hub Devices 섹션을 펼칩니다.
-
Select IoT Hub.를 선택합니다.
-
Azure 에 로그인 합니다. Azure 로그인 창을 따라서 Azure에 로그인 합니다.
-
구독과 IoT Hub를 선택합니다. VSCode의 상단에 표시되는 창을 통해서 구독과 이전 실습에서 만든 IoT Hub를 선택합니다.
이번엔 VSCode를 이용해 Azure IoT Edge 디바이스를 만들어 봅니다.
-
VSCode의 Explorer창에서, AZURE IOT HUB 섹션을 찾습니다.
-
... 을 클릭하여 팝업 메뉴를 표시합니다.
-
Create IoT Edge Device를 선택
-
텍스트 박스가 열리면 디바이스 아이디를 입력합니다.
-
새로운 IoT Edge 디바이스가 생성된 것을 AZURE IOT HUB 섹션에서 확인 합니다.
output 창에서 디바이스 ID와 디바이스 Connection String이 표시된 결과 메시지를 확인 할 수 있습니다.
Ubuntu 디바이스가 IoT Hub에 연결되기 위해서는 디바이스 Connection String
이 필요합니다.
디바이스 connection string 이 클립보드로 복사됩니다.
Get Device Info 메뉴를 통해서 Connectoin String 외의 정보를 Output 윈도우에서 확인 할 수 있습니다.
이전단계에서 Azure IoT Edge 런타임을 설치했다면 Step 5로 이동합니다.
이번엔 라즈베리파이에 Azure IoT Edge 런타임을 설치해보겠습니다. Linux(x64)에서 Azure IoT Edge 런타임 설치 문서를 따라서 진행합니다.
$ curl https://packages.microsoft.com/config/debian/stretch/multiarch/prod.list > ./microsoft-prod.list
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 77 100 77 0 0 235 0 --:--:-- --:--:-- --:--:-- 235
$ sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 983 100 983 0 0 2445 0 --:--:-- --:--:-- --:--:-- 2445
$ sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
$ sudo apt-get update
$ sudo apt-get install moby-engine
$ sudo apt-get install moby-cli
일부 오류가 보이는데 우선 무시하고 넘어갑니다.
$ 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
$ sudo apt-get update
$ sudo apt-get install iotedge
데몬은 /etc/iotedge/config.yaml에 있는 구성 파일을 사용하여 구성할 수 있습니다. 이 파일은 기본적으로 쓰기 금지되어 있습니다 편집하려면 관리자 권한이 필요합니다.
VSCode에서 복사해 놓은 디바이스 Connection String을 YAML파일에 입력해줍니다. 잘 사용하는 에디터를 이용해서 수정합니다.
$ sudo nano /etc/iotedge/config.yaml
provisioning:
source: "manual"
device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"
# provisioning:
# source: "dps"
# global_endpoint: "https://global.azure-devices-provisioning.net"
# scope_id: "{scope_id}"
# registration_id: "{registration_id}"
파일을 저장하고 닫습니다. CTRL + X, Y, Enter
$ sudo systemctl restart iotedge
systemctl 명령을 이용해서 서비스 실행상태를 확인합니다.
$ systemctl status iotedge
● iotedge.service - Azure IoT Edge daemon
Loaded: loaded (/lib/systemd/system/iotedge.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-06-24 05:51:26 UTC; 13s ago
Docs: man:iotedged(8)
Main PID: 5932 (iotedged)
Tasks: 9 (limit: 9513)
CGroup: /system.slice/iotedge.service
└─5932 /usr/bin/iotedged -c /etc/iotedge/config.yaml
Jun 24 05:51:28 UbuntuIoT iotedged[5932]: 2019-06-24T05:51:28Z [INFO] - Updating identity for module $edgeAgent
Jun 24 05:51:28 UbuntuIoT iotedged[5932]: 2019-06-24T05:51:28Z [INFO] - Pulling image mcr.microsoft.com/azureiotedge-agent:1.0...
Jun 24 05:51:35 UbuntuIoT iotedged[5932]: 2019-06-24T05:51:35Z [INFO] - Successfully pulled image mcr.microsoft.com/azureiotedge-agent:1.0
Jun 24 05:51:35 UbuntuIoT iotedged[5932]: 2019-06-24T05:51:35Z [INFO] - Creating module edgeAgent...
lines 1-19/19 (END)
iotedge 명령으로 배포되고 실행중인 모듈 리스트를 확인합니다.
$ sudo iotedge list
NAME STATUS DESCRIPTION CONFIG
edgeAgent running Up 2 minutes mcr.microsoft.com/azureiotedge-agent:1.0
edgeHub running Up a minute mcr.microsoft.com/azureiotedge-hub:1.0
우리가 만든 도커이미지를 배포하기 위해서는 이미지를 컨테이너 레지스트리에 푸시 해야 합니다. 일단 이미지가 레지스트리에 올라가면 직접 IoT Edge 디바이스에 배포할 수 있습니다. Azure 에서는 Private 컨테이너 레지스트리인 Azure Container Registry(ACR)를 제공하는데 ACR을 만들어보겠습니다.
-
Azure Portal에 로그인 합니다.
-
Container Registry 를 검색하여 만들기를 클릭합니다. Create a resource -> Containers -> Container Registry
리소스그룹이름과 레지스트리 이름을 입력합니다.
Parameter | Description | Example |
---|---|---|
Registry Name | Unique name within Azure and 5-50 alphanumeric characters only | IoTHOL2019acr1 |
Subscription | Your subscription | |
Resource Group | Select the resource group used for your IoT Hub | IoTHOL2019 |
Location | Select the same region as your IoT Hub | Korea Central |
Admin user | This enables "User Name" and "Password" to access ACR. Set to Enable | Enabled |
SKU | Tier of ACR. Different tier gives different storage size limit, etc. Set to Basic for this lab | Basic |
Create 를 클릭하여 배포를 시작합니다.
후반부에 우리가 만든 컨테이너 이미지를 푸시 하기 위해서는 ACR에 로그인을 해야 합니다.
-
VSCode open Terminal
터미널 윈도우가 없다면 메뉴에서 Terminal -> New Terminal를 선택합니다.
-
ACR Access Key
포탈에서 ACR의Access Key
를 복사합니다. -
ACR에 아래 명령으로 로그인
docker login <Your ACR Login Server Name> -u <Your ACR user name> -p <Your ACR password>
예시 :
관련자료 :
- ACR Authentication : https://docs.microsoft.com/en-us/azure/container-registry/container-registry-authentication
이번엔 샘플 코드를 통해서 모듈을 빌드해보겠습니다.
- Github에서
Simulated Temperature Sensor
샘플 코드를 다운로드 - 컴파일 / 빌드
- Azure Container Registry로 업로드
- 컨테이너를 배포
샘플코드 리파지토리 : IoT Edge Samples
아래 명령으로 Github에서 Simulated Temperature Sensor
소스코드를 다운로드 합니다.
-
Console (CMD)이나 VSCode terminal 을 열기
-
git 명령 실행 예 : C:\Repo 위치로 클론
cd C:\Repo git clone https://github.com/Azure/iotedge
.NET 코어를 이용하여 빌드 합니다.
Note
아래 명령을 통해서 dotnet 코어가 설치되어 있는지 확인 할 수 있습니다.
PS C:\repo> dotnet --version
2.2.204
PS C:\repo>
이 명령은 .NET Core SDK의 버전을 보여줍니다.
참조 : https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.2.107-windows-x64-installer
컨테이너 모듈을 Azure IoT Edge에 배포하기 전에 컴파일하고 로컬에서 실행시켜봐야 합니다.
-
SimulatedTemperatureSensor
디렉토리로 이동
SimulatedTemperatureSensor
코드가 있는 디렉토리로 이동합니다. 소스코드는 이런 위치에 있습니다.<SampleRoot>\edge-modules\SimulatedTemperatureSensor
예 : C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor
PS C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor> dir Directory: C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 5/20/2019 8:01 PM config d----- 5/20/2019 8:01 PM docker d----- 5/20/2019 8:01 PM src -a---- 5/20/2019 8:01 PM 2958 SimulatedTemperatureSensor.csproj
-
샘플코드 빌드 dotnet 명령으로 빌드합니다.
dotnet publish -r linux-arm
바이너리는 아래 위치에 생성됩니다.
C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor\bin\Debug\netcoreapp2.1\linux-arm
예시 :
PS C:\repo> cd .\iotedge\edge-modules\SimulatedTemperatureSensor\ PS C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor> dotnet publish -r linux-arm Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. Restore completed in 6.21 sec for C:\repo\iotedge\edge-util\src\Microsoft.Azure.Devices.Edge.Util\Microsoft.Azure.Devices.Edge.Util.csproj. Restore completed in 8.48 sec for C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor\SimulatedTemperatureSensor.csproj. Restore completed in 8.59 sec for C:\repo\iotedge\edge-modules\ModuleLib\Microsoft.Azure.Devices.Edge.ModuleUtil.csproj. Microsoft.Azure.Devices.Edge.Util -> C:\repo\iotedge\edge-util\src\Microsoft.Azure.Devices.Edge.Util\bin\Debug\netstandard2.0\Microsoft.Azure.Devices.Edge.Util.dll Microsoft.Azure.Devices.Edge.ModuleUtil -> C:\repo\iotedge\edge-modules\ModuleLib\bin\Debug\netcoreapp2.1\Microsoft.Azure.Devices.Edge.ModuleUtil.dll SimulatedTemperatureSensor -> C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor\bin\Debug\netcoreapp2.1\win-x64\SimulatedTemperatureSensor.dll SimulatedTemperatureSensor -> C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor\bin\Debug\netcoreapp2.1\win-x64\publish\
온도센서 모듈이 Edge 모듈로 작동하기 위해서는 컨테이너 이미지로 만들어야 합니다.
아래 내용에 주의를 기울여야 합니다.
- Container Type
- Container Image Name
- Container Tag
- Dockerfile
Dockerfile 은 컨테이너 이미지를 어떻게 만드는지에 대하여 기술되어 있습니다.
컨테이너 이미지 이름은 두개의 파트로 이뤄져 있습니다.
두가지 타입이 있습니다.
- Linux container
- Windows Container
여기서는 Linux Container를 사용합니다.
이미지 이름은 슬래시로 분리되어 있는데 첫번째 파트는 레지스트리 호스트 이름입니다.
예 : myazureregistry.azurecr.io/myimage
규칙 :
- Lowercase letters
- Digits
- Separators (
.
,_
,-
)
태그로 특정 이미지를 구분합니다. 보통 버전번호와 함께 사용됩니다.
규칙 :
- 영문자 대소문자
- 숫자
- Underscores (
_
), Periods (.
), and dashes (-
)
Step 4에서 IoT Edge 런타임을 Linux 버전을 설치했기 때문에 이미지를 만드는 환경도 Linux Container가 되어야 합니다.
-
Docker for Desktop 설정 열기
Taskbar에서
Docker Desktop
아이콘을 오른쪽 클릭하고 메뉴를 표시합니다. -
Switch to Windows containers... 메뉴가 보이면 현재 Linux Container 입니다. 만약 Switch to Linux containers 가 표시되면 클릭 합니다.
-
Confirm Warning
-
Docker Desktop이 container type을 변경할 때 까지 기다립니다.
아래 명령으로 컨테이너 이미지를 빌드 합니다.
docker build .\bin\Debug\netcoreapp2.1\linux-arm\publish -t <Tag> -f <Dockerfile>
이미지 이름 SimulatedTemperatureSensor
docker build .\bin\Debug\netcoreapp2.1\linux-arm\publish\ -t simulatedtemperaturesensor -f .\docker\linux\arm32v7\Dockerfile
Sending build context to Docker daemon 75.84MB
Step 1/8 : ARG base_tag=1.0.0-preview013-linux-arm32v7
Step 2/8 : FROM azureiotedge/azureiotedge-module-base:${base_tag}
1.0.0-preview013-linux-arm32v7: Pulling from azureiotedge/azureiotedge-module-base
3447b717941c: Pull complete 8a139bc00a59: Pull complete f2a88e45a074: Pull complete bc408458c703: Pull complete e30d031d4ae9: Pull complete 5f9bdce703de: Pull complete 5c3a99376e0f: Pull complete 8488cfde5253: Pull complete Digest: sha256:04d072e4208eebb21a090820c8dc910cc70fc62270609b7ac2a2a0e0ec68458b
Status: Downloaded newer image for azureiotedge/azureiotedge-module-base:1.0.0-preview013-linux-arm32v7
---> c2dbed530906
Step 3/8 : ARG EXE_DIR=.
---> Running in dc197339a53f
Removing intermediate container dc197339a53f
---> f2d39370595c
Step 4/8 : ENV MODULE_NAME "SimulatedTemperatureSensor.dll"
---> Running in 2ada11fce451
Removing intermediate container 2ada11fce451
---> 1748beb3cf89
Step 5/8 : WORKDIR /app
---> Running in f012533703db
Removing intermediate container f012533703db
---> 096b6c50ff37
Step 6/8 : COPY $EXE_DIR/ ./
---> e277d4570542
Step 7/8 : USER moduleuser
---> Running in 1ef373f42f07
Removing intermediate container 1ef373f42f07
---> 6b3a6460b481
Step 8/8 : CMD echo "$(date --utc +"[%Y-%m-%d %H:%M:%S %:z]"): Starting Module" && exec /usr/bin/dotnet SimulatedTemperatureSensor.dll
---> Running in 0502fe4396a7
Removing intermediate container 0502fe4396a7
---> 4b0f61191305
Successfully built 4b0f61191305
Successfully tagged simulatedtemperaturesensor:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
아래 명령으로 이미지가 생성되었는지 확인 합니다.
docker images
예 :
PS C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
simulatedtemperaturesensor latest 088860719e39 4 seconds ago 398MB
mcr.microsoft.com/dotnet/core/runtime 2.1.10-nanoserver-1809 d6a221ed7eed 4 weeks ago 321MB
docker tag
커멘드를 이용해서 ACR에 푸시하기위한 태그이름으로 변경해줍니다.
docker tag <Source Image>[:TAG] <Target Image>[:TAG]
예 : Using the image just built, tag them with simtemp:0.0.1
docker tag simulatedtemperaturesensor:latest iothol2019acr1.azurecr.io/simtemp:0.0.1
또는 이미지 아이디(IMAGE ID)를 이용해서 같은 명령을 수행할 수 있습니다.
docker tag 088860719e39 iotbootcamp2019acr1.azurecr.io/simtemp:0.0.1
이제 이미지를 빌드하고 태깅했으므로 업로드(push)할 준비가 다 되었습니다.
docker push
명령으로 ACR에 push 합니다.
docker push <Your Tagged Image Name>
Example :
docker push iotbootcamp2019acr1.azurecr.io/simtemp:0.0.1
Example Output :
PS C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor> docker push iotbootcamp2019acr1.azurecr.io/simtemp:0.0.1
The push refers to repository [iotbootcamp2019acr1.azurecr.io/simtemp]
da499279ea2b: Pushed
416b2cdadff0: Pushed
b366e64214b3: Pushed
f354c3635730: Pushed
146252efae6c: Pushed
6eaf1cf63dfc: Pushed
a2bb3d322957: Pushed
761ff3ef5aab: Pushed
5c3e3ab9e119: Pushed
273db4b66a2d: Skipped foreign layer
0.0.1: digest: sha256:ce4d56e9a062f7a77e8008d1e57eceda455555f8083194fec30fffc302c56598 size: 2507
ACR에 이미지가 Push 되었는지 확인합니다.
- Azure Portal에 로그인
- ACR 로 이동
- Repositories 메뉴로 이동
- 이미지가 있는지 태그와 함께 확인
예를들어 simtemp
이름과 태그 0.0.1
확인
이제 Azure IoT Edge 디바이스인 Ubuntu 가상머신에 Edge 모듈을 배포할 준비가 완료되었습니다. 이미지를 배포하기 위해서는 Deployment Manifest
가 필요합니다. 여기에서는 Azure 포탈에서 Deployment Manifest
를 만들어서 배포하겠습니다.
-
Azure Portal에 로그인
-
IoT Hub의 IoT Edge Device ID로 이동
IoT Hub -> IoT Edge -> Ubuntu Device ID
[!NOTE]
이 단계에서는 런타임 에러를 볼 수 있습니다. 이는 아직 아무것도 배포를 하지 않았기 때문에 발생합니다. -
Device details 상세 페이지로 가서 Set modules 클릭
IoT Edge 런타임이 ACR에서 이미지를 Pull 해야하기 때문에 아래 정보를 입력해줍니다.
Refer to Step 5.4 : Login to your ACR
Parameter | Description | Example |
---|---|---|
Name | Name of this setting | BootCampACR |
Address | Your ACR Login Server Address | iotbootcamp2019acr1.azurecr.io |
User Name | Your ACR Admin User Name | iotbootcamp2019acr1 |
Password | Your ACR Password |
다음은 배포할 모듈을 지정해 줍니다.
- +Add 클릭
- IoT Edge Module 선택
- 모듈 이름 입력
이 이름은 Azure IoT Edge가 사용하는 이름입니다. (vs. Module name) - 이미지의 URL 태그를 포함한 풀 이미지 이름을 입력합니다.
- Save 클릭
- Next 클릭
Lab 2 와 마찬가지로 모듈 메시지가 IoT Hub로 전달되도록 설정합니다.
기본값으로 두고 Next를 클릭합니다.
포탈이 만든 Deployment Manifest
를 검토합니다.
Warning
Deployment Manifest는 ACR의 아이디 패스워드를 포함하고 있음.
Submit을 클릭합니다.
배포는 몇 분이 걸릴 수 있습니다. edgeAgent의 로그를 통해서 진행상황을 체크할 ㅅ수 있습니다.
Edge Agent 는 Azure IoT Edge 런타임의 일부로 Azure IoT Hub 와 통신하고 모듈 배포를 책임 집니다.
iotedge logs
명령을 통해서 배포상태를 체크합니다.
sudo iotedge logs -f edgeAgent
Enter Ctrl + c
를 눌러 모니터링을 끝낼 수 있습니다. iotedge list
명령을 통해서 모듈 리스트와 상태를 확인 할 수 있습니다.
예 :
$ iotedge logs -f edgeAgent
[06/09/2019 03:32:14.668 PM] Edge Agent Main()
2019-06-09 08:32:14.900 -07:00 [INF] - Starting module management agent.
2019-06-09 08:32:15.077 -07:00 [INF] - Version - 1.0.7.1.22377503 (f7c51d92be8336bc6be042e1f1f2505ba01679f3)
2019-06-09 08:32:15.078 -07:00 [INF] -
█████╗ ███████╗██╗ ██╗██████╗ ███████╗
██╔══██╗╚══███╔╝██║ ██║██╔══██╗██╔════╝
███████║ ███╔╝ ██║ ██║██████╔╝█████╗
██╔══██║ ███╔╝ ██║ ██║██╔══██╗██╔══╝
██║ ██║███████╗╚██████╔╝██║ ██║███████╗
╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
██╗ ██████╗ ████████╗ ███████╗██████╗ ██████╗ ███████╗
██║██╔═══██╗╚══██╔══╝ ██╔════╝██╔══██╗██╔════╝ ██╔════╝
██║██║ ██║ ██║ █████╗ ██║ ██║██║ ███╗█████╗
██║██║ ██║ ██║ ██╔══╝ ██║ ██║██║ ██║██╔══╝
██║╚██████╔╝ ██║ ███████╗██████╔╝╚██████╔╝███████╗
╚═╝ ╚═════╝ ╚═╝ ╚══════╝╚═════╝ ╚═════╝ ╚══════╝
2019-06-09 08:32:15.200 -07:00 [INF] - Started operation refresh twin config
2019-06-09 08:32:15.226 -07:00 [INF] - Edge agent attempting to connect to IoT Hub via Amqp_Tcp_Only...
2019-06-09 08:32:15.822 -07:00 [INF] - Created persistent store at C:\Windows\TEMP\edgeAgent
2019-06-09 08:32:16.326 -07:00 [INF] - Edge agent connected to IoT Hub via Amqp_Tcp_Only.
2019-06-09 08:32:16.693 -07:00 [INF] - Obtained Edge agent twin from IoTHub with desired properties version 2 and reported properties version 4.
2019-06-09 08:32:17.398 -07:00 [INF] - Plan execution started for deployment 2
2019-06-09 08:32:17.432 -07:00 [INF] - Executing command: "Command Group: (
[Create module mysimtempsensor]
[Start module mysimtempsensor]
)"
2019-06-09 08:32:17.434 -07:00 [INF] - Executing command: "Create module mysimtempsensor"
2019-06-09 08:32:47.091 -07:00 [INF] - Executing command: "Start module mysimtempsensor"
2019-06-09 08:32:48.152 -07:00 [INF] - Executing command: "Command Group: (
[Create module edgeHub]
[Start module edgeHub]
)"
2019-06-09 08:32:48.152 -07:00 [INF] - Executing command: "Create module edgeHub"
2019-06-09 08:32:56.393 -07:00 [INF] - Executing command: "Start module edgeHub"
2019-06-09 08:32:57.177 -07:00 [INF] - Plan execution ended for deployment 2
2019-06-09 08:32:57.513 -07:00 [INF] - Updated reported properties
2019-06-09 08:33:02.740 -07:00 [INF] - Updated reported properties
$ sudo iotedge list
NAME STATUS DESCRIPTION CONFIG
edgeAgent running Up 4 minutes mcr.microsoft.com/azureiotedge-agent:1.0
edgeHub running Up 3 minutes mcr.microsoft.com/azureiotedge-hub:1.0
mysimtempsensor running Up 3 minutes iotbootcamp2019acr1.azurecr.io/simtemp:0.0.1
아래 순서로 모듈의 상태를 확인 해 봅니다. Lab 2
iotedge list
iotedge logs -f <You Module Name>
Device Explorer
Azure IoT Hub까지 메시지가 전달되는지 Device Explorer를 통해 확인 합니다.