SlideShare a Scribd company logo
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

More Related Content

PPTX
SaltConf 2014: Safety with powertools
PDF
Configuration Management - Finding the tool to fit your needs
PDF
Using Capifony for Symfony apps deployment (updated)
PDF
Vmth project
PPTX
PPT
Local Dev on Virtual Machines - Vagrant, VirtualBox and Ansible
PDF
Vagrant for Virtualized Development
PPTX
Ansible: How to Get More Sleep and Require Less Coffee
SaltConf 2014: Safety with powertools
Configuration Management - Finding the tool to fit your needs
Using Capifony for Symfony apps deployment (updated)
Vmth project
Local Dev on Virtual Machines - Vagrant, VirtualBox and Ansible
Vagrant for Virtualized Development
Ansible: How to Get More Sleep and Require Less Coffee

What's hot (20)

PDF
Steamlining your puppet development workflow
PDF
Sonata Block Bundle - sfPot March 2014
PPT
Ruby eventmachine pres at rubybdx
PDF
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
PDF
The SaltStack Pub Crawl - Fosscomm 2016
PDF
Deploying PHP Applications with Ansible
PPTX
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
PDF
Network Automation: Ansible 102
PDF
OpenNebula and SaltStack - OpenNebulaConf 2013
PDF
Provisioning iOS CI Server with Ansible
PDF
Advanced front-end automation with npm scripts
PDF
Building a smarter application stack - service discovery and wiring for Docker
PPTX
Ansible presentation
PDF
An introduction to the Symfony CMF - creating a CMS on top of Symfony
PDF
Red Hat Satellite 6 - Automation with Puppet
KEY
Puppet for dummies - ZendCon 2011 Edition
PDF
Spot Trading - A case study in continuous delivery for mission critical finan...
PDF
Ansible - A 'crowd' introduction
PPT
ruby + websocket + haproxy
PDF
SVN essentials
Steamlining your puppet development workflow
Sonata Block Bundle - sfPot March 2014
Ruby eventmachine pres at rubybdx
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
The SaltStack Pub Crawl - Fosscomm 2016
Deploying PHP Applications with Ansible
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Network Automation: Ansible 102
OpenNebula and SaltStack - OpenNebulaConf 2013
Provisioning iOS CI Server with Ansible
Advanced front-end automation with npm scripts
Building a smarter application stack - service discovery and wiring for Docker
Ansible presentation
An introduction to the Symfony CMF - creating a CMS on top of Symfony
Red Hat Satellite 6 - Automation with Puppet
Puppet for dummies - ZendCon 2011 Edition
Spot Trading - A case study in continuous delivery for mission critical finan...
Ansible - A 'crowd' introduction
ruby + websocket + haproxy
SVN essentials
Ad

Similar to Ricardo Sanchez - Ruby projects of interest for devops (20)

KEY
Why ruby and rails
PDF
Web Development using Ruby on Rails
KEY
Puppet
PDF
Ruby on Rails : 簡介與入門
PDF
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
PDF
09 - Fábio Akita - Além do rails
PDF
.NET Architects Day - DNAD 2011
KEY
Ruby On Rails
KEY
Intro to Ruby on Rails
PPT
Ruby on rails
PDF
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
PDF
Rails 2.0 Presentation
PDF
遇見 Ruby on Rails
PDF
Swing when you're winning - an introduction to Ruby and Sinatra
PDF
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
PPT
Rails Rookies Bootcamp - Blogger
KEY
Rapid development with Rails
KEY
Rails Presentation (Anton Dmitriyev)
PPTX
Why Ruby?
KEY
Ruby on Rails survival guide of an aged Java developer
Why ruby and rails
Web Development using Ruby on Rails
Puppet
Ruby on Rails : 簡介與入門
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
09 - Fábio Akita - Além do rails
.NET Architects Day - DNAD 2011
Ruby On Rails
Intro to Ruby on Rails
Ruby on rails
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Rails 2.0 Presentation
遇見 Ruby on Rails
Swing when you're winning - an introduction to Ruby and Sinatra
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Rails Rookies Bootcamp - Blogger
Rapid development with Rails
Rails Presentation (Anton Dmitriyev)
Why Ruby?
Ruby on Rails survival guide of an aged Java developer
Ad

Ricardo Sanchez - Ruby projects of interest for devops

  • 1. Ricardo Sanchez @ricardojsanchez rsanchez.jayhawk@gmail.com svDevOps Meetup – August 3, 2010
  • 2.  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, …
  • 3.  ShortRuby Intro  Ruby projects  Ruby Lab
  • 4.  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)
  • 5.  Object-Oriented  With inheritance, mixins, and metaclasses  Interpreted  Dynamic typing and Duck typing  Everything is an object, no primitives  and many more “conventions”
  • 6.  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)
  • 7. 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>
  • 8.  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
  • 9.  ActiveRecord  ActionController  ActionView  ActionMailer  ActiveSupport … is all morphing as Rails3 is introduced
  • 10. 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
  • 11.  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
  • 12.  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
  • 13.  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
  • 14.  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
  • 15.  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