Skip to content

AWS focused configuration management tool built in Go (golang) using Javascript as a config language

License

Notifications You must be signed in to change notification settings

cvillecsteele/mithras

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WHAT IS MITHRAS? ###############################################################################

Build Status

See the Mithras main site at mithras.io for more information.

Use Mithras to deploy and configure full-stack applications in AWS, with agentless setup and the flexibility and power of a Javascript configuration language.

Mithras focuses on AWS, making design choices that make simple AWS tasks easy, including features like explicit dependency declaration and idempotent operations.

Mithras presents a simplified interface, reducing the surface area of the AWS SDK to a digestible and easily managed size.

Using brittle data languages such as YAML make customizing your configuration unecessarily convoluted. Mithras chooses a well-known and powerful language for descriving your AWS configurations: Javascript. You won't have to twist an unsuitable language to do what's needed for your configuration.

Here are some uses cases for Mithras:

  • Provisioning
  • Configuration Management
  • App Deployment
  • Continuous Delivery
  • Orchestration

Sounds pretty nifty, eh? But it's not perfect. If you need enterprise configuration management features, Mithras isn't a good choice. (Not yet, anyway.) If you have the need to manage hosts and resources outside AWS, Mithras probably isn't a good choice. If you love YAML, don't bother with Mithras.

Finally, Mithras is new. It's currently alpha quality software, with bugs and design choices still being shaken out. Proceed with caution.

DESIGN ###############################################################################

  • AWS first
  • Javascript DSL
  • Simple (abstract) aws interface - not a port of the aws sdk to js
  • Agentless
  • Idempotent
  • Declarative resources
  • Explicit dependencies
  • Immutable infrastructure

BUILDING FROM SOURCE ###############################################################################

  1. Set up a standard Go 1.6 environment http://golang.org/doc/code.html and ensure that $GOPATH environment variable properly set.
  2. go get github.com/cvillecsteele/mithras.
  3. cd $GOPATH/src/github.com/cvillecsteele/mithras
  4. go install to build the mithras binary
  5. Make sure $GOPATH/bin is in your $PATH.

RUNNING ###############################################################################

  1. Mithras depends on using ssh-agent. Make sure it is set up and has the right keys added.
  2. Set up a site directory. Let's say it's '~/projects/my_site'
  3. EXPORT MITHRASHOME=~/projects/my_site.
  4. Create your site file, site.js.
  5. Set up your AWS credentials file and specify a profile to use with export AWS_PROFILE=.... (See: https://github.com/aws/aws-sdk-go/wiki/configuring-sdk)
  6. Build remote runner and wrapper with mithras build
  7. mithras -v run

To run the example from the mithras repo:

`$ mithras -v run -f example/site.js`

To run a JS repl:

`$ mithras repl`

TODO ###############################################################################

  • IAM: check policies is an object with string keys

  • IAM: let role.AssumeRolePolicyDocument be an object

  • throw instead of os.exit?

  • document ASG solution

  • parallelize with workers?

  • explainer videos

  • document workers better

  • make sure no handlers are interacting with AWS outside the catalog (s3)

  • rework / robustify web core module

  • signals?

  • nodjs-like 'process' object?

  • more s3 configuration support for buckets

  • repl should have mithras env loaded

  • copy - localFile so we don't read it into memory??

  • test base config in nginx

  • versioned js modules

  • better nodejs package support

BUILDING DOCS ###############################################################################

Run:

mithras -v run -f dev/website.js

To serve docs locally, first install harp, then:

cd website && harp server

ISSUES ###############################################################################

  • damn it's a big hunk of code... 28Mb???... NO... Now 30!!
  • phew is otto sloowwww

About

AWS focused configuration management tool built in Go (golang) using Javascript as a config language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published