Project

sumomo

0.01
Low commit activity in last 3 years
A long-lived project that still receives updates
Sumomo
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0

Runtime

 Project Readme

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.