Skip to content

Commit

Permalink
Uploaded new Manifest for eflow. Working on Linux deployment Guide.
Browse files Browse the repository at this point in the history
  • Loading branch information
MSFTKevino committed May 26, 2022
1 parent 8aaf918 commit 46e739e
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 4 deletions.
16 changes: 12 additions & 4 deletions LINUX_INSTALL.md
Expand Up @@ -5,16 +5,24 @@ I have decided to release a dedicated installation guide for a deployment of IoT
- IoT Edge runs on Linux. It does not run on Windows. Deploying on Windows requires a Linux VM (either WSL or Hyper-V) and thus is just a layer that is not neccesary as it adds more complexity, and increases the opportunity for problems.
- The IoT Wall Gateway computer (HP) has limited storage, and runs an older (4th-Gen) Intel Processor. Running Windows 10 on the MTC Floor would show that we aren't able to support the latest OS for our showcase solution with Industrial IoT. And Linux is a better choice of an Edge Computing Device.

<<TODO: Everything below>>
>**Please Note:** The OPC UA Wall is an evolving solution and will continue to be improved through the coming weeks and months. I'll be posting a list of roadmap features and showcases that you can leverage for your customer events. If you would like to assist, I'm looking for volunteers. Reach out to me directly.
**Please Note:** The OPC UA Wall is an evolving solution and will continue to be improved through the coming weeks and months. I'll be posting a list of roadmap features and showcases that you can leverage for your customer events. If you would like to assist, I'm looking for volunteers. Reach out to me directly.
Thank You

Kevin Orbaker
Kevin

## HP Gateway Setup

The HP gateway installed on the OPC wall must be installed/upgraded with the latest version of Windows 10 Enterprise (currently this is build 21H2). It is best if you do a clean installation of Windows 10. Storage on the HP gateway is limited. Do not install any unnecessary software. Please make sure all updates are completed prior to proceeding with the installation. After all Windows Updates are applied, run Disk Cleanup on the C: drive (include system files) to free up space.
Download the latest **supported** 64-bit Desktop Image of Ubuntu Linux distrabution (at the time of creating these instructions it was Ubuntu 20.04 LTS) from the Ubuntu [website](https://releases.ubuntu.com/20.04/).

Once you have downloaded the ISO image you will need to write the ISO image to a USB (3.0/3.1) thumbdrive. I used the Raspberry Pi Imager found [here](https://www.raspberrypi.com/software/). An alternative is Win32DiskImager found [here](https://sourceforge.net/projects/win32diskimager/)

Use the thumbdrive to install a fresh image of Ubuntu on the HP Gateway machine. If you have not installed Ubunbtu, there are some great tutorials online. [I like this one](https://ubuntu.com/tutorials/install-ubuntu-desktop?msclkid=7da411b7d0c011ecbac877d8a0a8d735#1-overview)

>Don't forget to update! Make sure you have run through the Ubunutu updates before you continue.

<<TODO>>
### Update Network Settings

*This is a critical step as it must be done prior to the next steps.* The HP Gateway comes with two ethernet ports. Both ports are connected to the same switch, and by default, they both grab an IP Address from whatever DHCP server your wall is connected to. We need to assign a **static IP address** to one of the ports to ensure it can communicate with the devices that are plugged into the IoT Wall.
Expand Down
151 changes: 151 additions & 0 deletions manifest/iot-edge-eflow-v1.json
@@ -0,0 +1,151 @@
{
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"modules": {
"metricscollector": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-metrics-collector:1.0"
},
"type": "docker",
"env": {
"UploadTarget": {
"value": "IotMessage"
},
"ResourceID": {
"value": "Industrial connector for IoTEdge"
},
"MetricsEndpointsCSV": {
"value": "http://edgeHub:9600/metrics,http://edgeAgent:9600/metrics,http://iiotadapter:9702/metrics,http://opcpublisher:9702/metrics"
},
"CompressForUpload": {
"value": "false"
},
"TransformForIoTCentral": {
"value": true
}
},
"status": "running",
"restartPolicy": "always",
"version": "1.0",
"startupOrder": 4
},
"opcplc": {
"settings": {
"image": "mcr.microsoft.com/iotedge/opc-plc:latest-debug",
"createOptions": "{\"Hostname\":\"opcplc\",\"Cmd\":[\"--pn=50000\",\"--autoaccept\",\"--sn=25\",\"--sr=10\",\"--st=uint\",\"--fn=10\",\"--fr=1\",\"--ft=uint\",\"--ctb\",\"--scn\",\"--lid\",\"--lsn\",\"--ref\",\"--gn=10\"],\"HostConfig\":{\"Mounts\":[{\"Type\":\"volume\",\"Target\":\"/appdata\",\"Source\":\"industrialconnector\",\"Consistency\":\"consistent\",\"RW\":true}],\"PortBindings\":{\"50000/tcp\":[{\"HostPort\":\"50000\"}]}},\"ExposedPorts\":{\"50000/tcp\":{}}}"
},
"type": "docker",
"version": "1.0",
"status": "running",
"restartPolicy": "always",
"startupOrder": 2
},
"opcplclarge": {
"settings": {
"image": "mcr.microsoft.com/iotedge/opc-plc:latest-debug",
"createOptions": "{\"Hostname\":\"opcplclarge\",\"Cmd\":[\"--pn=50001\",\"--autoaccept\",\"--sn=100\",\"--sr=10\",\"--st=uint\",\"--fn=100\",\"--ut\",\"--ctb\",\"--scn\",\"--lid\",\"--lsn\",\"--ref\",\"--gn=3000\"],\"HostConfig\":{\"Mounts\":[{\"Type\":\"volume\",\"Target\":\"/appdata\",\"Source\":\"industrialconnector\",\"Consistency\":\"consistent\",\"RW\":true}],\"PortBindings\":{\"50001/tcp\":[{\"HostPort\":\"50001\"}]}},\"ExposedPorts\":{\"50001/tcp\":{}}}"
},
"type": "docker",
"version": "1.0",
"status": "running",
"restartPolicy": "always",
"startupOrder": 2
},
"opcpublisher": {
"settings": {
"image": "mcr.microsoft.com/iotedge/opc-publisher:2.8.2",
"createOptions": "{\"Hostname\":\"opcpublisher\",\"Cmd\":[\"PkiRootPath=/mount/pki\",\"--pf=/mount/published_nodes.json\",\"--lf=/mount/publisher.log\",\"--mm=PubSub\",\"--me=Json\",\"--fm=true\",\"--bs=1\",\"--di=20\",\"--aa\",\"--rs\"],\"HostConfig\":{\"Mounts\":[{\"Type\":\"volume\",\"Target\":\"/appdata\",\"Source\":\"industrialconnector\",\"Consistency\":\"consistent\",\"RW\":true}]}}"
},
"type": "docker",
"version": "1.0",
"status": "running",
"restartPolicy": "always",
"startupOrder": 3
},
"iiotadapter": {
"settings": {
"image": "industrialconnectortest.azurecr.io/iotedge/iiotadapter:0.8.0-alpha.355-debug",
"createOptions": "{\"Hostname\":\"iiotadapter\",\"HostConfig\":{\"Mounts\":[{\"Type\":\"volume\",\"Target\":\"/appdata\",\"Source\":\"industrialconnector\",\"Consistency\":\"consistent\",\"RW\":true}]},\"User\":\"iiotuser\",\"ExposedPorts\":{\"9702/tcp\":{}},\"Cmd\":[\"--pki /appdata/pki\",\"--config /appdata/configuration\"]}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always",
"version": "1.0",
"startupOrder": 1
},
"industrialconnectorui": {
"settings": {
"image": "industrialconnectortest.azurecr.io/iotedge/industrialconnectorui:0.8.0-alpha.355-debug",
"createOptions": "{\"Hostname\":\"industrialconnectorui\",\"HostConfig\":{\"Mounts\":[{\"Type\":\"volume\",\"Target\":\"/appdata\",\"Source\":\"industrialconnector\",\"Consistency\":\"consistent\",\"RW\":true}],\"PortBindings\":{\"80/tcp\":[{\"HostPort\":\"8080\"}], \"443/tcp\":[{\"HostPort\":\"8443\"}]}},\"ExposedPorts\":{\"80/tcp\":{}, \"443/tcp\":{}},\"Cmd\":[\"--pki /appdata/pki\",\"--config /appdata/configuration\"]}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always",
"version": "1.0",
"startupOrder": 4
}
},
"runtime": {
"settings": {
"minDockerVersion": "v1.25"
},
"type": "docker"
},
"schemaVersion": "1.1",
"systemModules": {
"edgeAgent": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.2",
"createOptions": ""
},
"type": "docker",
"env": {
"ExperimentalFeatures__Enabled": {
"value": "true"
},
"ExperimentalFeatures__EnableGetLogs": {
"value": "true"
},
"ExperimentalFeatures__EnableUploadLogs": {
"value": "true"
},
"ExperimentalFeatures__EnableMetrics": {
"value": "true"
}
}
},
"edgeHub": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.2",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
},
"type": "docker",
"env": {
"SslProtocols": {
"value": "tls1.2"
}
},
"status": "running",
"restartPolicy": "always",
"startupOrder": 0
}
}
}
},
"$edgeHub": {
"properties.desired": {
"routes": {
"publisherruntimeinfo": "FROM /messages/modules/opcpublisher/outputs/runtimeinfo INTO BrokeredEndpoint(\"/modules/iiotadapter/inputs/publisherruntimeinfo\")",
"metrics2iothub": "FROM /messages/* WHERE $connectionModuleId = 'metricscollector' INTO $upstream",
"pubsub2adapter": "FROM /messages/* WHERE NOT IS_DEFINED (processed) INTO BrokeredEndpoint(\"/modules/iiotadapter/inputs/transform\")",
"adapter2iothub": "FROM /messages/* WHERE IS_DEFINED (processed) INTO $upstream"
},
"schemaVersion": "1.0",
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
}
}
}

0 comments on commit 46e739e

Please sign in to comment.