Which Abstraction model is recommended?

I am looking for some guidance on what abstraction model is good for my scenario.

We have created architecture patterns for our cloud solutions like
2-tier application with web and database
micro-services applications on Kubernetes with different data storage backends
Data analytics ETL pipeline with Data lake storage and Databricks

We are planning to provide infrastructure provisioning for these patterns using Terraform Our hope is that, our customers can directly provision the pattern that they find it suits their business use case.

What would be the best way to organize the Terraform configurations for these patterns?

Option 1: We breakdown configurations into independent modules for each resource type and then define the patterns as module composition with placeholders for corresponding variables.

Option2: We create each pattern as a module with all resources that are contained in the pattern. One concern is the repetition of resources that can be present across patterns.

Or is there any other better option? Thanks for any inputs.