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", x
To 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', eip
You 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", api
You can test your API now
$ sumomo testapi -a TestGenAPI
Development
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.