How to manage multiple customer deployment in Terraform

I have a question regarding how to manage multiple customers deployment in Terraform .I want to know a convenient way, if there is any.

I think it’s difficult to answer in the general term, and one of the important design-questions is: how will you keep the customers separate?

Does each customer have it’s own account/subscription? Do they have their own VPCs/VNets?

Is it a general cloud-environment deployment or is it a specialized environment only for your service?

Are the customers’ environments built on the same components, just with a scaling factor or are they customzed?

I think your two choices would be using a module which you instantiate once per customer environment - per environment and not per customer as the same customer can have multiple environments; or using a dedicated workspace or even configuration per customer .

Staying with a module which implements the entire environment will always look as the best choice on paper; it might not be so practical six months later when different customers want to have different features in their environments.

Using separate configurations per environment easily lead to configuration drift.

No easy answers here, I’m afraid :slight_smile: