ruby projects of interest for devops

Post on 16-May-2015

1.424 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ricardo Sanchez@ricardojsanchez

rsanchez.jayhawk@gmail.comsvDevOps 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, …

Short Ruby Intro

Ruby projects

Ruby Lab

Created by Yukihiro “Matz” MatsumotoFirst release 1995, renassaince 2005 Influenced by Python, Perl, and LispFocus on simplicity, productivity, and

developer happinessPrinciple of least surpriseMany 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)

HTTP

Request

Router

Controller

Action

Parameters

Controller

Action

Action

Action

Model

Model

Model

Database

View

<h2>List of items:

<% @items.each do |item| %>

<li> Item: <%= item %></li>

<% end %>

</h2>

HTTP

Response

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 VirtualBoxMain 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 environmentsTo install: # gem install vagranthttp://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

top related