Structuring terraform into smaller environments - advice

Hi Guys, I need some advice regarding structuring terraform into many smaller environments on same Azure subscription account.

I know terraform a bit, but in the past I worked just with one terraform repository serving all infrastructure (with modules per provider/function).

infrastructure
|- modules
|–|- gcp
|—|- main.tf
|----|- variables.tf
|–|- vsphere
|—|- main.tf
|----|- variables.tf

Now I have following situation:

  • one Azure subscription
  • need for multiple separated infrastructure “buckets” - per 2 different projects, and I would like to separate test/dev (which should be more ephemeral) from production servers (long life).
  • need to hand over the infra per project in the future

Is it convenient and feasible to have:

  • a bit of terraform code in each project repository, to keep it together with project
  • many tfstates on same Azure subscription (one state per each infra bucket) that are isolated on Azure side by (resource groups?)

Any advice Guys?