# Edge command line install with specific modules

**URL:** <https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [May 25, 2026, 11:27pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693 "2026-05-25T23:27:37Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![ASF](https://avatars.discourse-cdn.com/v4/letter/a/c4cdca/32.png) [@ASF](https://forum.inductiveautomation.com/u/ASF)\
**Post date:** [May 25, 2026, 11:27pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/1 "2026-05-25T23:27:38Z")

</div>

I'm starting to use a lot of Ignition Edge Panel systems in lieu of traditional HMI's, and to keep the cost competitive I need to automate as many parts of the setup as possible - given that a traditional HMI comes basically set up and ready to go out of the box, the engineering time to install and configure a PC is something I need to minimise. I have a batch file which I already use to set up the Windows configuration the way I want it, now I would like to add the "download and install Ignition" bit to it.

I've found the documentation on [command line installs](https://docs.inductiveautomation.com/docs/8.3/getting-started/installing-and-upgrading/command-line-installations) which gives me a brief run down and some of the flags I can use.

I've found [this forum post](https://forum.inductiveautomation.com/t/edge-command-line-install/42040) which gives details on an additional flag to use to specify Edge edition

And I've found [this older forum post](https://forum.inductiveautomation.com/t/automated-install-windows-command-line-install-available-flags/25267) which talks about using an options file to specify which modules I want to install.

But I can't find any official documentation on the latter two.

Ultimately what I want to end up with is a script that does the following. Items in standard text I have under control already, I just need to work out the ones in **bold:**

1. Downloads the latest version of Ignition
2. **Runs the installer more or less silently (I will probably use a minimal progress bar)**
3. **Installs Perspective, Allen-Bradley drivers and the other mission critical modules but nothing else**
4. **Selects Edge edition**
5. Configures the firewall
6. Starts the gateway service

Can anyone help me out with links to documentation I've not been able to find, or more details on things like the options file?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 25, 2026, 11:59pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/2 "2026-05-25T23:59:37Z")

</div>

The scripts in a docker image are probably the best resource for the remaining pieces you need. Just be aware that the typical base for such fully-automated installs is Linux, not Windows.

( _\*Cough\* [engineering malpractice](https://forum.inductiveautomation.com/search?q=engineering%20malpractice) \*Cough\*_ )

---

<div class="post-metadata">

**Author:** ![ASF](https://avatars.discourse-cdn.com/v4/letter/a/c4cdca/32.png) [@ASF](https://forum.inductiveautomation.com/u/ASF)\
**Post date:** [May 26, 2026, 2:11am UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/3 "2026-05-26T02:11:44Z")

</div>

I've not used Docker; I come from an electrical background, not a software one, and I'm the most technical/software-savvy person in my company. We're a small outfit.

And yes, I agree that Linux would be better if it were an option. For reasons unimportant to this question, that's not something I can entertain for most of my applications, unfortunately.

Regardless of where the scripts reside (or what OS I'm running them on), I still need to find the documentation for what I'm trying to do.

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [May 26, 2026, 9:20am UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/4 "2026-05-26T09:20:08Z")

</div>

I have done all this before, the first thing you do is ditch Windows. Windows doesn't belong on embedded systems, and companies making non-IT people do embedded platform integration with insecure software platform that are not designed for the task is just plain stupid.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 26, 2026, 12:00pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/5 "2026-05-26T12:00:59Z")

</div>

> [@ASF](#):
>
> I've not used Docker

I didn't say to **use** docker, but that its scripts are your best resource for finding the stuff you need. Whatever platform you do.

> [@ASF](#):
>
> electrical background, not a software one, and I'm the most technical/software-savvy

That makes using Linux even **more** important, as your odds of producing a reliable, secure system goes way up. If you don't have a huge IT department creating your custom Windows deployment tools, and maintaining security on whatever you end up with, you are [expletive]ed.

> [@ASF](#):
>
> reasons unimportant to this question

Strongly disagree. If you cannot do this properly (and it sounds like you cannot), consider hiring an outside provider to help.

> [@ASF](#):
>
> find the documentation

Not everything is formally documented. The docker implementations are effectively documentation, as Linux bash scripts are human-readable.

---

<div class="post-metadata">

**Author:** ![ASF](https://avatars.discourse-cdn.com/v4/letter/a/c4cdca/32.png) [@ASF](https://forum.inductiveautomation.com/u/ASF)\
**Post date:** [May 26, 2026, 10:39pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/6 "2026-05-26T22:39:49Z")

</div>

> [@David\_Stone](#):
>
> I have done all this before, the first thing you do is ditch Windows. Windows doesn't belong on embedded systems, and companies making non-IT people do embedded platform integration with insecure software platform that are not designed for the task is just plain stupid.

> [@pturmel](#):
>
> Strongly disagree. If you cannot do this properly (and it sounds like you cannot), consider hiring an outside provider to help.

You're missing the point. I could absolutely use Linux, but if I did, the client would hire someone other than me to do it on Windows. I appreciate your perspective, and I don't disagree, but my client base is clearly quite different to yours, and right now my issue is "where is the documentation for scripting Ignition installs" not "why do I have to do this on Windows instead of Linux".

---

<div class="post-metadata">

**Author:** ![lane.duncan](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lane.duncan/32/83700_2.png) [@lane.duncan](https://forum.inductiveautomation.com/u/lane.duncan)\
**Post date:** [May 27, 2026, 6:27am UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/7 "2026-05-27T06:27:47Z")

</div>

I’m very curious about this. The docker section in the v8.1 manual has a long list of environment variables:

> **[Docker Image | Ignition User Manual](https://docs.inductiveautomation.com/docs/8.1/platform/docker-image)**
>
> The Ignition Platform offers a container image for use on popular container runtimes such as Docker. You can find the image on Docker Hub at https://hub.docker.com/r/inductiveautomation/ignition. Our official image is a Linux container, based on...

The same page in the v8.3 manual has much of this removed, including GATEWAY\_MODULES\_ENABLED, yet the list of modules remains.

Searching this forum with the parameters found in the v8.1 manual (like IGNITION\_EDITION) brings up a lot of results, but they all seem rather old.

---

<div class="post-metadata">

**Author:** ![aaronrai24](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/aaronrai24/32/87248_2.png) [@aaronrai24](https://forum.inductiveautomation.com/u/aaronrai24)\
**Post date:** [May 27, 2026, 2:07pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/9 "2026-05-27T14:07:12Z")

</div>

I think its just in a more platform agnostic spot rather than just in the docker section.

> **[Platform Environment Variables | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.3/appendix/reference-pages/platform-environment-variables)**
>
> The environment variables listed on this page are supported by the Ignition platform and work on a wide variety of operating systems including Docker, Linux, Windows, and macOS. You can add environment variables to automate certain processes, access...

---

<div class="post-metadata">

**Author:** ![ASF](https://avatars.discourse-cdn.com/v4/letter/a/c4cdca/32.png) [@ASF](https://forum.inductiveautomation.com/u/ASF)\
**Post date:** [May 27, 2026, 10:26pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/10 "2026-05-27T22:26:33Z")

</div>

Thanks! I've had a read through that page and the thing that I'm not quite sure about is the description for the `GATEWAY_MODULES_ENABLED` flag...

> A comma-delimited set of built-in and third party fully-qualified module identifiers that whitelist modules and restrict them from being uninstalled.

...so does that mean if I add `GATEWAY_MODULES_ENABLED="allen-bradley-drivers,logix-driver,opc-ua,perspective"` to my install batch file it will only install those modules? It doesn't really read that way. Or is this something more specific to Docker instances where all the modules are installed and it just flags which ones are in use so that they get preserved and can't inadvertently be uninstalled? Again, I have only a rudimentary understanding of what Docker is and how it works, picked up by working alongside IT departments. I've never had the opportunity to dive into it myself so my understanding is pretty patchy and unreliable.

---

<div class="post-metadata">

**Author:** ![lane.duncan](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lane.duncan/32/83700_2.png) [@lane.duncan](https://forum.inductiveautomation.com/u/lane.duncan)\
**Post date:** [May 30, 2026, 5:26am UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/11 "2026-05-30T05:26:27Z")

</div>

This is an older docker reference that might help:

> $ docker run -p 8088:8088 -v my-ignition-data:/var/lib/ignition/data   
> -e GATEWAY\_ADMIN\_PASSWORD=password   
> -e GATEWAY\_MODULES\_ENABLED=vision,opc-ua,logix-driver,sql-bridge

> **[kcollins/ignition - Docker Image](https://hub.docker.com/r/kcollins/ignition/)**

---

<div class="post-metadata">

**Author:** ![Chris\_Bingham](https://avatars.discourse-cdn.com/v4/letter/c/e5b9ba/32.png) [@Chris\_Bingham](https://forum.inductiveautomation.com/u/Chris_Bingham)\
**Post date:** [May 31, 2026, 9:25pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/12 "2026-05-31T21:25:12Z")

</div>

> [@ASF](#):
>
> right now my issue is "where is the documentation for scripting Ignition installs"

Regarding module installs:

> **[Manual Module Installation​ - Installing or Upgrading a Module | Ignition User...](https://www.docs.inductiveautomation.com/docs/8.1/getting-started/installing-and-upgrading/installing-or-upgrading-a-module#manual-module-installation)**
>
> Alternatively, you can add module files directly to your Gateway File System by following the steps below: | Module Configuration

You might infer that you can delete any `modl` files that you do not wish to keep following a basic install.

Accepting any EULA programmatically is obviously undocumented. If you encounter this requirement, I'll echo a post further above:

> [@pturmel](#):
>
> Not everything is formally documented. The docker implementations are effectively documentation, as Linux bash scripts are human-readable.

The Docker commissioning **scripts** (NOT the readme, search git repos) provide **insight** as how to do most things you're after, regardless of chosen OS.

---

<div class="post-metadata">

**Author:** ![kcollins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kcollins/32/19646_2.png) [@kcollins](https://forum.inductiveautomation.com/u/kcollins)\
**Post date:** [June 3, 2026, 6:33pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/13 "2026-06-03T18:33:06Z")

</div>

The `GATEWAY_MODULES_ENABLED` environment variable is only meaningful to a starting/running Ignition Gateway (i.e. it is not known to the installer). While typically leveraged in a Docker context, it is actually part of the Ignition platform and will also work in other OS's such as Windows. However, setting up environment variables for Windows services is not very straightforward.

[This forum post](https://forum.inductiveautomation.com/t/gateway-commissioning-eam-upgrade/75328/5) shows the Windows Registry modifications for a given service definition and how to define environment variables.

[This docs page](https://docs.inductiveautomation.com/docs/8.3/platform/docker-image#module-identifiers-table) shows what identifiers can be used in that comma-delimited list. As mentioned there, if you're on Ignition 8.1.x, there are separate "legacy" identifiers that must be used.

---

<div class="post-metadata">

**Author:** ![kcollins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kcollins/32/19646_2.png) [@kcollins](https://forum.inductiveautomation.com/u/kcollins)\
**Post date:** [June 3, 2026, 6:35pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/14 "2026-06-03T18:35:14Z")

</div>

> [@Chris\_Bingham](#):
>
> Accepting any EULA programmatically is obviously undocumented.

As of Ignition 8.3.x, there are new platform environment variables `ACCEPT_MODULE_LICENSES` and `ACCEPT_MODULE_CERTS` that can be used to programmatically accept licenses/certs for third-party modules. You must use the fully-qualified module identifier[s] in these.

---

<div class="post-metadata">

**Author:** ![aaronrai24](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/aaronrai24/32/87248_2.png) [@aaronrai24](https://forum.inductiveautomation.com/u/aaronrai24)\
**Post date:** [June 3, 2026, 6:53pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/15 "2026-06-03T18:53:22Z")

</div>

Is it expected when module identifiers have capitals that the gateway skips over accepting licenses/certs for that module? In other words is it required for module identifiers to be all lowercase?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [June 3, 2026, 6:56pm UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/16 "2026-06-03T18:56:41Z")

</div>

In general, there is no requirement that module identifiers are all lowercase.

When you're specifying modules by id in these environment variables I would expect it to be case-sensitive, requiring you to use the module id as defined by the module and documented wherever you're seeing an id.

---

<div class="post-metadata">

**Author:** ![ASF](https://avatars.discourse-cdn.com/v4/letter/a/c4cdca/32.png) [@ASF](https://forum.inductiveautomation.com/u/ASF)\
**Post date:** [June 5, 2026, 4:35am UTC](https://forum.inductiveautomation.com/t/edge-command-line-install-with-specific-modules/115693/17 "2026-06-05T04:35:53Z")

</div>

Thanks all.

I ended up using the Edge ZIP installer, and scripting a deletion of the non-required modules as @Chris_Bingham suggested.

I'm fine with doing the "accept EULA and run through initial gateway commissioning" bit manually, I just didn't want a user to be in the situation of having to remember which modules we use for our specific setup and then end up with unlicensed modules showing warnings in the gateway.
