Then sure sprinkle a few per-env-toggles `count: 1 if env == dev else 0` (or whatever the latest nicest way to do that is today), but it feels weird to have to set up an artificial TF module around our entire codebase to be able to share the bulk of the code?
module "cool_name" {
count = var.create_cool_name ? 1 : 0
}
I've always wanted a simple enable/disable syntax for modules in tf.Does TF support count on modules now?! The pattern I was referring to is akin to having an `enabled` var that you define in _every_ module (there are ways to make this easier to do [0]) and inside of each module you have a
local {
make_the_s3_bucket = var.enabled && var.make_s3_bucket
make_the_rds_instance = var.enabled && var.enable_rds
}
Then you use the typical `count: foo == bar ? 1:0` trick where some part of the `foo/bar` conditional ropes in local.make_the_rds_instance[0]: https://github.com/cloudposse/terraform-null-label/tree/main
Thank you for replying though, I appreciate it :)
count - Creates multiple instances of a module from a single module block.
for_each - Creates multiple instances of a module from a single module block.
providers - Passes provider configurations to a child module. If not specified, the child module inherits all of the default (un-aliased) provider configurations from the calling module.
depends_on - Creates explicit dependencies between the entire module and the listed targets.
I hope this doesn't come across as snarky, I just wanted to share the doc link :)
- root
-- /envs
--- / .dev.env
--- / .test.env
--- / .prod.env
--- / dev.tfvars
--- / test.tfvars
--- / prod.tfvars
- 1_create_network.tf
- 2_create_storage.tf
- 3_create_service.tf
https://www.youtube.com/watch?v=WgPQ-nm_ers Compliance At Scale: Hardened Terraform Modules at Morgan Stanley
The rationale here is that our environments should be almost the same between them, and any variations should be accomplished by parameterization.
Modules are kept either in separate repos, if they need to be shared between many workspaces, or under the `modules` subfolder.