I have a GCP infrastructure deployed through Terraform: buckets, service accounts, Compute Engines, VPC, cloud SQL, BigTable, BigQuery, Composer, etc.
Terraform v0.11.10 Provider "google" (2.15.0)
Recently the client asked me to split our only one terraform file (e.g. main.tf) in several files. E.g: One files for Buckets, other for Service Accounts, other for Database Services, etc.
I only have one terraform state file located in a GCP bucket.
How could I do it with the lowest impact ? What about with the terraform state ? (Will there also be also multiples state files ? Or Is the idea to keep only one TF file, even if we split the code out ?)
NOTE: This has nothing to do with Terraform modules, it's just about dividing a single terraform file (.tf) into several files (.tf)
The command terraform apply
can be apply to a file or a directory, according with the documentation. Thus, put all your file in a directory and apply them.
The tfstate file is relative to a deployment. You will have only one.
About the lowest impact... Hard to say. All depends of your variables and your resource dependencies. If you have to search is several file to understand how a resource is created or where a variable is set, multiple file isn't a great idea... However, it's your customer requirement and do it the much simpler for readability.