Project Structure

Here’s an example project structure.

project
├── app
│   └── blueprints
│       └── demo
│           └── template.rb
├── config
│   ├── app.rb
│   └── blueprints
│       └── demo
│           ├── params
│           │   ├── dev.env
│           │   └── prod.env
│           └── vars
│               ├── dev.rb
│               └── prod.rb
└── output
    └── demo
        ├── params.json
        └── template.yml

Files and Folders

To explain the files and folders, we’ll use the demo blueprint as an example:

File / Folders Description
app/blueprints Where blueprints live. Blueprints contain code to build CloudFormation templates. They can be configured with parameters and variables in config/blueprints. Blueprint Structure Docs.
app/blueprints/demo/template.rb Example of a blueprint template.rb. This is where you define your source code with the Lono DSL.
app/configsets Where configsets live. Configsets are essentially configuration management. Lono can inject them into your template making them reusable. They can be configured with config/blueprints/BLUEPRINT/configsets.
config/app.rb Lono’s behavior can be tailored with config/app.rb.
config/blueprints/demo/configsets Where configsets are configured. You can selectively add configsets to templates. Configsets Docs
config/blueprints/demo/params Where CloudFormation run-time parameters can be defined. Parameters are defined with env-like files.
config/blueprints/demo/vars Where Lono variables can be defined. Variables can be used to compile down different templates. This is useful when run-time parameters do not suffice.
output/demo/params.json Where the compiled CloudFormation parameters file get written to.
output/demo/template.yml Where the compiled CloudFormation template get written to.

That’s the basic lono project structure.