Given the following minimal fogg.yml
file:
version: 2
defaults:
project: foo
owner: foo@foobar.com
terraform_version: 0.12.25
backend:
bucket: my-terraform-state-bucket
dynamodb_table: terraform-statelocks
profile: default
region: us-west-2
accounts:
logging-account: {}
main-account: {}
envs:
development:
components:
database: {}
webserver: {}
modules:
rds_instance: {}
fogg apply
will generate the following directory structure.
All of the leaf directories that Fogg creates are terraform workspaces. Fogg installs fogg.tf
files in each workspace to manage remote state data sources and state storage, as well as a Makefile
for running fogg-provided make targets.
├── scripts
└── terraform
├── accounts
│ ├── logging-account
│ └── main-account
├── envs
│ └── development
│ ├── database
│ └── webserver
├── global
└── modules
└── rds_instance
Fogg will also write an empty main.tf
, variables.tf
and outputs.tf
file to each workspace to encourage best practices for workspace layout:
- Any workspaces that need to expose output values to other workspaces should define those outputs in
outputs.tf
main.tf
can invoke terraform modules and define terraform-controlled resources- Values that are local to a workspace go in a
locals{}
block invariables.tf