Code Monkey home page Code Monkey logo

skillet's Introduction

Skillet

An easy-to-deploy standalone Rack app with bundled Chef server and cookbooks.

Rationale

Hey, wouldn’t it be cool to run a Chef server on Heroku?

Deployment

As a prerequisite, you’ll need access to a CouchDB instance somehow somewhere. (As one option, see my hideabed. I hear there’s also hosting.couch.io.)

I happen to be using Heroku. Here’s how you’d deploy there:

git clone http://github.com/matthewtodd/skillet.git
cd skillet
# adjust cookbooks to your liking
heroku create my-skillet
heroku config:add MERB_SESSION_SECRET_KEY=37b51d194a7513e45b56f6524f2d51f2
heroku config:add CHEF_AUTHORIZED_OPENID_IDENTIFIERS=one.example.com,two.example.com
heroku config:add CHEF_AUTHORIZED_OPENID_PROVIDERS=provider.example.com,another-provider.example.com
heroku config:add CHEF_COUCHDB_URL=https://user:[email protected]
heroku config:add CHEF_OPENID_URL=https://my-skillet-openid.heroku.com
heroku config:add CHEF_VALIDATION_TOKEN=73feffa4b7f6bb68e44cf984c85f6e88
heroku addons:add piggyback_ssl
git push heroku master

Then, give it a go with

open https://my-skillet.heroku.com

Until Chef 0.8.0 is released, you’ll need a second appserver so that your Nodes can authenticate themselves with OpenID. Strangely, it seems this is not as simple as cranking your Heroku dynos to 2. So, you’ll need to create a second copy of Skillet on Heroku to act as Chef’s OpenID server. Basically, you’ll follow the instructions above, but with a different app name, and make sure you’ve set CHEF_OPENID_URL properly. (At this point, it probably makes sense to keep your own fork of Skillet.)

Notes

It would be great if Heroku supported git submodules. Then we could pull in Opscode’s cookbooks instead of duplicating them.

I’ve totally stubbed out Chef::Queue, so there’s no search indexing. This hasn’t been a big deal for me yet, as I’m dealing with a number of single-server environments. But I suppose you could either perform the search indexing in-process, or run it through Heroku’s recently-added support for Delayed::Job. Either way, beware the Heroku constraints and workarounds.

skillet's People

Contributors

matthewtodd avatar suriyaa avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.