Solutions provisioner
7 min
a control panel that runs the industry solutions rather than being one of them it starts and stops each solution, connects to a litmus edge once instead of once per solution, and provisions or removes each one from its own card use it when you want to show more than one solution, or to switch between them without editing compose files every solution also runs perfectly well on its own, so this is a convenience rather than a requirement operator view on 4009 what it demonstrates one edge connection for the whole set enter the address and token once the panel verifies them and every solution it starts inherits them provisioning and removal as a control, not a command each card carries deploy and clean up, both with a preview that shows what would change before anything is written to the edge deployment onto the edge itself the panel can ask the connected edge to pull and run a solution through the edge's own applications api, using the registry credentials the device already holds before you start everything in industry solutions # , plus one thing specific to the panel it needs access to the host docker socket, because it starts each solution as a sibling container so their ports land on the host that is a real grant of authority to a container it is how a control panel of this kind has to work, and it is worth knowing before you run it deploy services provisioner image us docker pkg dev/litmus customer facing/litmus solutions/solgen provisioner 0 1 0 container name solgen provisioner restart unless stopped ports \ target 4009 published 4009 protocol tcp environment probe host host docker internal runner docker log level info edge url "${edge url }" edge api token "${edge api token }" edge verify tls "${edge verify tls 0}" solgen registry solgen image tag volumes \ /var/run/docker sock /var/run/docker sock \ provisioner state /data extra hosts \ "host docker internal\ host gateway" volumes provisioner state {} docker compose up d then open http //localhost 4009 nothing needs filling in to start it the panel asks for the litmus edge address and a token, verifies them, and stores them itself the two edge values above only let you skip that step configuration variable default what it does edge url unset litmus edge to connect to optional; the panel can ask instead edge api token unset token for that edge edge verify tls 0 1 checks the edge's certificate probe host host docker internal where the panel looks for the solutions it started from inside a container, 127 0 0 1 is the container itself, so this must name the host runner auto docker or source which way to start solutions solgen registry the published repository where to pull solution images from solgen image tag 0 1 0 which tag to run solgen registry and solgen image tag are written without a value on purpose compose leaves a variable absent when it has no value, which lets the default apply giving them an empty string instead would mean something different and the panel would look for images that do not exist what you see the page is three parts litmus edge , at the top what you are connected to, whether it is answering, and how recently that was checked solutions , a card each a switch to start and stop it, what it puts on the edge, the scenarios it demonstrates, a link to its operator view, and deploy and clean up controls with previews team solutions , below the published litmus solutions catalogue joined against the container registries this machine can read, so what is published and what you could actually run here are one view rather than two solutions this machine has no credential for are greyed out rather than shown as errors not everything can be started from here a solution that is more than one container cannot be started as a single container, and the panel says so on the card rather than offering a button that cannot work rotating equipment reliability # is the one this affects it needs a message broker alongside it, so it is deployed with its own compose file removing it docker compose down solutions the panel started keep running, deliberately, so restarting the panel does not interrupt a demonstration stop them from their cards first if you want them to go too support support\@litmus io mailto\ support\@litmus io