Lono
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
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
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request