title: Reuse Terraform modules for different environments
body: <p>I'm having a hard time to understand how to reuse modules like <a href="https://github.com/terraform-google-modules/terraform-google-kubernetes-engine" rel="nofollow noreferrer">terraform-google-modules/terraform-google-kubernetes-engine</a> for multiple environments like production, staging and development within one GCP project.</p>
  <p>I was used to have a structure like this:</p>
  <pre class="lang-sh prettyprint-override"><code>├── backend.tf
  ├── development
  │   └── development.tfvars
  ├── firewall.tf
  ├── gcp-apis.tf
  ├── gke.tf
  ├── outputs.tf
  ├── production
  │   └── production.tfvars
  ├── providers.tf
  ├── staging
  │   └── staging.tfvars
  ├── variables.tf
  ├── versions.tf
  └── vpc.tf
  </code></pre>
  <p>Where I just filled out the .tfvars files with values. Now I got somehow lost with the module structure. Looking at the <a href="https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/blob/master/cluster.tf#L143-L177" rel="nofollow noreferrer">terraform-google-modules/terraform-google-kubernetes-engine example</a> I'm not sure how to define multiple node pools for i.e. with different types of machines/disks.</p>
  <p>For me the <a href="https://github.com/terraform-google-modules/terraform-google-kubernetes-engine#usage" rel="nofollow noreferrer">example in README.md</a> doesn't look like a clean separation of template and variables, it seem's to be some kind of mixup (please no offense, I guess I just don't understand it).</p>
  <p>To be a little more specific: what do I need to define in my development.tfvars, staging.tfvars and production.tfvars if I want to have multiple node pools?</p>
  <p>Hope you can help me out.
  Cheers</p>