Best way to design my development setup for multiple projects

I will need to be able to create multiple projects for multiple customers. There will be over 40 projects in total. What is the best way to setup my development computer so I don’t have 40 VMs.

The sites are all individual and different but our structure of equipment naming is common across all sites. ie: Conveyor 1 would use tags CV01_Aux, CV01_FLA, etc.

The first idea I had was use one gateway with each project using a different TagProvider named after the project number. Then in Vision Client Tags have a sitenumber memory message tag. The value would equal the TagProvider name so then I can use this in Expression bindings.
Most templates and control windows would be common across all projects. The Main windows being unique to each project.

Are there any glaring problems with my idea that would make it more complex than having 40 virtuals?

I am interested what others have done. What are the upside/downside of your method?

Your question is pretty open ended. If you havent already, I suggest you review the documentation on security zones / roles to start, but also check out Project Inheritance. I am a little confused on the 40 VM though, do you mean 40 virtual machines running the gateway, if so licensing is going to be a problem unless they are running in trial?

IA also has a best practices guide for this that you may find informative:

I am curious about other approaches as well. In my scenario, I have different projects which are at different Ignition versions (albeit all are 8.1+). As I am not well-versed in multi-project development within a single gateway, I opted for a single Ubuntu VM with separate Ignition installations/folders, one installation per project, none are licensed…
The time to switch between projects is fairly quick, and forces me to be intentional in any project-specific development:
cd /usr/local/bin (my installation location)
sudo ignition_proj1/ignition.sh stop
sudo ignition_proj1/ignition.sh remove
sudo ignition_proj2/ignition.sh install
sudo ignition_proj2/ignition.sh start
So far, this has been working for me.

Use 40 VMs. Or 40 docker containers. Don’t mix different clients on the same gateway. Figure out how to repeatably deploy VMs with scripts, or use IAs scripts with Docker. Figure out how to closely match your client’s operating environments so a gateway backup can just be dropped into your corresponding VM.

Developing under trial mode is perfectly viable for all but stress testing before deployment.

5 Likes

I think this is a reasonable approach to having multiple Ignition versions installed.

You can use the zip distribution and not the installers. Also, there's no need for the service install and remove on Linux - you can just start and stop the gateways as you need, unless there's some reason you need a dev gateway to automatically start with the OS.

I'd suggest looking into Docker Compose. It's a really great and lightweight way to store and run entire systems (as long as containers exist for everything in your clients' environment).

But Phil hit the nail on the head:

If Docker doesn't work for your systems (something Windows dependent perhaps), then definitely use individual VMs.

I want to thank everyone for their time and responses. Unfortunately my employer has pulled the plug on my investigation of Ignition. I definitely enjoyed playing with the new environment. From my stand point Ignition has a lot of bonus’ however we use an in house program that is the brains of our system as well as data collection, reports, etc. Which means we only would use ignition for some display graphics as well as the gateway to our PLC/Field Devices.

Thanks again for all the responses. There definitely is a great community here!

1 Like