Skip to content

boltops-tools/lono

Repository files navigation

Lono

CodeBuild Support

BoltOps Badge

Please watch/star this repo to help grow and support the project.

Lono is a CloudFormation framework. It builds, manages, and deploys CloudFormation templates.

Lono Features

  • Simple CLI interface to launch CloudFormation stacks.
  • Ability to use Existing CloudFormation Templates.
  • The Lono DSL - Generate templates from beautiful code.
  • Write your CloudFormation parameters with simple env-like values.
  • Preview CloudFormation changes before pressing the big red button.
  • Layering - Allows you to build multiple environments like development and production with the same template.
  • Variables - Allows you to construct templates where runtime Parameters do not suffice.
  • Helpers - Allows you to extend Lono and simplify code.
  • Configsets - Configurement Management. Automatically configure EC2 instances with reuseable code.

See lono.cloud for full lono documentation.

Quick Usage

It only takes a couple of commands to start using lono.

gem install lono --prerelease
lono new project infra --examples
cd infra
lono up demo

Lono flowchart

DSL

Here's an example of what the Lono CloudFormation DSL looks like:

description "Demo stack"

parameter("InstanceType", "t3.micro")

mapping("AmiMap",
  "us-east-1": { Ami: "ami-0de53d8956e8dcf80" },
  "us-west-2": { Ami: "ami-061392db613a6357b" }
)

resource("Instance", "AWS::EC2::Instance",
  InstanceType: ref("InstanceType"),
  ImageId: find_in_map("AmiMap", ref("AWS::Region"), "Ami"),
  SecurityGroupIds: [get_att("SecurityGroup.GroupId")],
  UserData: base64(user_data("bootstrap.sh"))
)
resource("SecurityGroup", "AWS::EC2::SecurityGroup",
  GroupDescription: "demo security group",
)

output("Instance")
output("SecurityGroup", get_att("SecurityGroup.GroupId"))

Lono Up

The lono up command deploys the CloudFormation stack.

$ lono up demo

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request