• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ricardo Sanchez - Ruby projects of interest for devops
 

Ricardo Sanchez - Ruby projects of interest for devops

on

  • 1,452 views

 

Statistics

Views

Total Views
1,452
Views on SlideShare
1,452
Embed Views
0

Actions

Likes
0
Downloads
6
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ricardo Sanchez - Ruby projects of interest for devops Ricardo Sanchez - Ruby projects of interest for devops Presentation Transcript

    • Ricardo Sanchez @ricardojsanchez rsanchez.jayhawk@gmail.com svDevOps Meetup – August 3, 2010
    •  Operations Architect for PlayHaven  Started with Ruby/Rails in late 2008  Networking guy prior to that • Linux/Unix, kernel+user software development • C/C++, Routers/Switches, …
    •  ShortRuby Intro  Ruby projects  Ruby Lab
    •  Created by Yukihiro “Matz” Matsumoto  First release 1995, renassaince 2005  Influenced by Python, Perl, and Lisp  Focus on simplicity, productivity, and developer happiness  Principle of least surprise  Many interpreters • MRI, YARV, Jruby, Rubinius, IronRuby, REE, MacRuby, MagLev, …  “Rubyist” are passionate and friendly people (Culture)
    •  Object-Oriented  With inheritance, mixins, and metaclasses  Interpreted  Dynamic typing and Duck typing  Everything is an object, no primitives  and many more “conventions”
    •  Created by DHH (released 2004)  Web application framework  Model-View-Controller (MVC) pattern  Stable 2.3.8, Beta 3.0 RC (just released)  Principles • Convention over Configuration (CoC) • Don‟t Repeat Yourself (DRY)  REST (Representational State Transfer)
    • Database Router Controller Model Model HTTP Controller Action Action Action Model Request Parameters Action View <h2>List of items: HTTP <% @items.each do |item| %> Response <li> Item: <%= item %></li> <% end %> </h2>
    •  Request made from browser to URL http://localhost:3000/users/show/1  Rails receives request on port 3000 • Server invokes dispatcher (routing)  :controller = users, :action = show, :id = 1 • Action fetches model object from database • Action renders view which generates HTML  Rails sends response (HTML page) back
    •  ActiveRecord  ActionController  ActionView  ActionMailer  ActiveSupport … is all morphing as Rails3 is introduced
    •  Command line tool • Install multiple ruby interpreters/versions  E.g.: ruby (1.8.6-p399, 1.8.7-p187, …); jruby, rubinius • Manage sets of gems („gemsets‟) • Perform operations over installed interpreters/gemsets  Avail for all *nix systems (require „bash‟)  Quick examples (no sudo needed!) • $ rvm install ruby-1.9.2, jruby  Install • $ rvm use 1.9.1  Switching • $ rvm gemset use rails3  Managing Gems • $ rvm 1.8.7, 1.9.1, jruby tests  Running tests • $ rvm 1.8.7, 1.9.1 rake do:all  Running rake task  http://rvm.beginrescueend.com
    •  Tool for building and distributing virtualized development environments  Uses Oracle‟s VirtualBox  Main features • Automated provisioning using chef • Forward port to host machine • Full SSH access to created environments • Shared folders between host/guest(s) • Package environments into distributable boxes  Great for distributable dev/qa environments  To install: # gem install vagrant  http://vagrantup.com
    •  Task automation tool on remote servers  Features • Restart particular service on multiple servers once  $ cap HOSTS=„www-1,www-2‟ COMMAND=„/etc/init.d/apache2 restart” invoke • Check state of service/resource (memory,cpu) that is not monitored  $ cap HOSTS=„www-1,www-2‟ COMMAND=„grep MemTotal /proc/meminfo‟ invoke • Run command in multiple servers and monitor output • Systems deployment tasks (e.g., Rails deployments)  To install: # gem install capistrano  http://capify.org
    •  Problem: how to manage many servers  Solution: consolidate access to infrastructure data for all nodes („systems integration‟)  Chef provides configuration, integration, and operations as code (written in Ruby) • Treat infrastructure like software development projects  Modes: solo, client/server  Concepts • Nodes, Roles, Cookbooks, Recipes, Resources, Attributes  Opscode offerings • Chef - Server Configuration Management Tool (API & DSL) • Opscode Platform (hosted chef server)  http://www.opscode.com
    •  Books • Programming Ruby 1.9 • The Ruby Programming Language • Practical Ruby for Systems Administration • Everyday Scripting with Ruby  Online Learning • http://rubylearning.org (Free course) • http://github.com/edgecase/ruby_koans (FUN)  Blogs • http://rubyinside.com • http://rubyflow.com
    •  Installation (all platforms) • http://www.wiki.devchix.com/index.php?title=Work shop_Installation_Notes  Ruby, RubyGems  Editor (your choice)  Exercise • Open irb  $ irb  >> puts “Hello world” • Save previous line on hello.rb, chmod +x, and run  $ ruby hello.rb