Sumomo
Making cloudformation suck less.
Because plums are also peaches
Installation
Add this line to your application's Gemfile:
gem 'sumomo'And then execute:
$ bundle
Or install it yourself as:
$ gem install sumomo
Commandline Tool Usage
This gem lets you use all of the syntax in the momo and more!
You need to setup your AWS credentials using aws configure.
This is the simplest way to use sumomo:
First, create a file called Sumomofile in your directory
# Sumomofile
x = hidden_value "meow"
eip = make "AWS::EC2::EIP"
output "IPAddress", eip
output "Haha", xTo create a stack that acquires an IP Address and outputs it
$ sumomo create mystack
To view a stack's outputs
$ sumomo outputs mystack
To update a stack
$ sumomo update mystack
To delete a stack
$ sumomo delete mystack
To view what changes your stuff will cause to your stack
$ sumomo diff mystack
To see the raw cloudformation template
$ sumomo show mystack
Library Usage
The commandline tool actions can also be performed programmatically
require "sumomo"
Sumomo::update_stack(name: "mystack", region: "ap-northeast-1") do
x = hidden_value "meow"
eip = make "AWS::EC2::EIP"
output "IPAddress", eip
output "Haha", x
end
Sumomo::wait_for_stack(name: "mystack", region: "ap-northeast-1")Features
You can make a server
network = make_network(layers: %w[web])
eip = make "AWS::EC2::EIP"
make_autoscaling_group(
network: network,
layer: 'web',
eip: eip,
type: "a1.medium",
vol_size: 15, # GB,
script: <<-SCRIPT
yum install git gcc g++
echo "hello world" >> ~/hello
SCRIPT
)
output 'IP', eipYou can make apis with this now
api = make_api "test2.astrobunny.net",
name: "TestGenAPI",
cert: certificate,
dns: cloudflare_dns(key: key, email: email) do
GET "/page/:pageid", :pageid, <<-SCRIPT
respond_with ({message: pageid, params: params});
SCRIPT
GET "/best_girl", <<-SCRIPT
respond_with ({best_girl_is: "Ruby"});
SCRIPT
GET "/*", <<-SCRIPT
respond_with ({message: "Hello!"});
SCRIPT
end
output "APIURL", apiYou can test your API now
$ sumomo testapi -a TestGenAPIDevelopment
After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/davidsiaw/sumomo.