Managing and deploying a Rails application can be enough drive anyone to drink.
There is an entire world of knowledge and skills to master. There are eleventy different decisions to fathom and make. And even when you have learned those skills and made those decisions, there are many tedious and error-prone steps to perform just to get a server in working condition.
But it does not have to be this way. Moonshine, an open source marriage of Capistrano and Puppet, allows you to forget your deployment troubles. Moonshine encapsulates knowledge for building and managing servers, has opinions about the decisions you need to make, and automates the pain and tedium of manual configuration away. In short, you can enjoy a drink at your leisure, instead of being driven to it.
This presentation will inform users of all levels about the complexities of deployment along with solutions that work.
Drink your deployment maladies away with moonshine
1. Drink your Deployment
Maladies away with Moonshine
Subtitle
Josh Nichols technicalpickles.com
Monday, March 15, 2010
2. Title text
Subtitle
Josh Nichols technicalpickles.com
Monday, March 15, 2010
3. What is deploying?
• Put code on server
• Run it
• ...
• PROFIT?
... if it was as easy as this sounds, I wouldn’t be here today
Josh Nichols technicalpickles.com
Monday, March 15, 2010
4. Obligatory outline
• Hurdles to Deploying
• Enter the Moonshine
• Applying Moonshine to your application
• Moonshine Plugins
• The future!?
Josh Nichols technicalpickles.com
Monday, March 15, 2010
5. Three hurdles to deployment
Josh Nichols technicalpickles.com
Monday, March 15, 2010
9. How about that drink?
Josh Nichols technicalpickles.com
Monday, March 15, 2010
10. Enter the Moonshine
• Released ~ 1 year ago
• Developed by Rails Machine
• Open source
• Built on Capistrano and Puppet
Josh Nichols technicalpickles.com
Monday, March 15, 2010
12. Code == knowledge
• Moonshine comes with default configuration that work
out of the box
• Additional Server configuration lives inside your source
tree
Josh Nichols technicalpickles.com
Monday, March 15, 2010
13. Automated like whoa
• cap deploy:setup # => prepare for moonshine
• cap deploy # => first deploy
• cap deploy # => second deploy with code updates
• cap deploy # => deploy after adding sphinx
• cap deploy:setup deploy # => to start over on a new
server
Josh Nichols technicalpickles.com
Monday, March 15, 2010
14. The code behind the moonshine
Josh Nichols technicalpickles.com
Monday, March 15, 2010
15. Apply moonshine to
your application
Josh Nichols technicalpickles.com
Monday, March 15, 2010
16. First, a server
• Running Ubuntu 8.10
• A user named ‘rails’
• Can ssh passwordlessly
• Can sudo
• A domain name
Josh Nichols technicalpickles.com
Monday, March 15, 2010
17. Install it
script/plugin install
git@github.com:railsmachine/moonshine.git
Josh Nichols technicalpickles.com
Monday, March 15, 2010
18. Generate it
script/generate moonshine
Josh Nichols technicalpickles.com
Monday, March 15, 2010
19. Customize it
app/manifests/application_manifest.rb
config/moonshine.yml
Josh Nichols technicalpickles.com
Monday, March 15, 2010
20. Deploy it
cap deploy:setup deploy
Josh Nichols technicalpickles.com
Monday, March 15, 2010
21. Beyond the first deploy
• Installing packages
• Installing gems
• cron jobs
• Creating files
• Overwritting moonshine defaults
Josh Nichols technicalpickles.com
Monday, March 15, 2010