.tfvars setup

In chapter 6, you describe a workflow where all the modules are defined under modules, and in the environment directories, you just specify .tfvars files with the variable settings. Do you do this in development as well? Or is it better to have a development environment under live and use the usual module {} and .tf file setup when first creating the module?

We generally recommend using this approach in development too. Our typical approach is to use Terragrunt, which allows us to use versioned Git URLs for stage/prod, but to override those in the dev environment to point at a local folder using the --terragrunt-source parameter.

Check out Keep your Terraform code DRY for instructions and see terragrunt-infrastructure-modules-example and terragrunt-infrastructure-live-example for sample code.