Skip to content

Support for local MQTT broker (preview) #345

@grickettsnz

Description

@grickettsnz

Currently, when attempting to enable the experimental local MQTT broker I'm seeing issues with edgeHub not able to start and complaining about missing environment variables. I got about 6 deep trying to supply these env vars manually before giving up on that route.

Repro steps:

sudo iotedgehubdev setup -c "<CONNECTION STRING>"
iotedgehubdev start -d deployment.json

Example deployment manifest:

{
  "$schema-template": "1.0.0",
  "modulesContent": {
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.1",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {}
          }
        },
        "systemModules": {
          "edgeAgent": {
            "type": "docker",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-agent:1.2",
              "createOptions": "{}"
            }
          },
          "edgeHub": {
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-hub:1.2",
              "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}],\"1883/tcp\":[{\"HostPort\":\"1883\"}]}}}"
            },
            "env": {
               "experimentalFeatures__mqttBrokerEnabled": {
                "value": "true"
              },
              "experimentalFeatures__enabled": {
                "value": "true"
              },
              "RuntimeLogLevel": {
                "value": "debug"
              }
            }
          }
        },
        "modules": {         
        }
      }
    },
    "$edgeHub": {
      "properties.desired": {
        "schemaVersion": "1.2",
        "routes": {
          "Upstream": "FROM /messages/* INTO $upstream"
        },
        "storeAndForwardConfiguration": {
          "timeToLiveSecs": 7200
        },
        "mqttBroker": {
          "authorizations": [
            {
              "identities": ["{{iot:identity}}"],
              "allow": [
                {
                  "operations": ["mqtt:connect"]
                }
              ]
            },
            {
              "identities": ["{{iot:identity}}"],
              "allow": [
                {
                  "operations": ["mqtt:publish", "mqtt:subscribe"],
                  "resources": ["test_topic"]
                }
              ]
            }
          ]
        }
      }
    }
  }
}

Example error:

...
at Microsoft.Azure.Devices.Edge.Hub.Service.Program.Main() in /home/vsts/work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.Service/Program.cs:line 36

Error: IOTEDGE_DEVICEID

Caused by:
environment variable not found

Removing the 'experimentalFeatures__mqttBrokerEnabled' env variable allows edgeHub to start normally.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions