Class Index [+]

Quicksearch

# = Rudy – Skeleton configuration # # Rudy automatically looks for configuration files in the following # locations (in this order): # # ./.rudy/config # ~/.rudy/config # # ~/.rudy/*.rb # ./Rudyfile # ./machines.rb, ./routines.rb, ./commands.rb # ./config/rudy/*.rb # ./.rudy/*.rb # /etc/rudy/*.rb # # When multuple files are found, the configuration is NOT OVERRIDDEN, # it’s ADDED or APPENDED depending on context. This means you can split # configuration across many files as you please. # # There are five sections: accounts, defaults, machines, commands and routines. # # By convention, accounts go in ./.rudy/config or ~/.rudy/config # machines, commands, routines, and defaults configuration go in ./Rudyfile or # into separate files in ./.rudy or ./config/rudy (machines.rb, commands.rb, …) #

# ——————————————————— MACHINES ——– # The machines block describes the ‘physical’ characteristics of your machines. machines do

region :'us-east-1' do
  ami 'ami-e348af8a'               # Alestic Debian 5.0, 32-bit (US)
end
region :'eu-west-1' do
  ami 'ami-6ecde51a'               # Alestic Debian 5.0, 32-bit (EU)
end

hostname :rudy                     # One of: :default, :rudy, 'your-name'

# We've defined an environment called 'stage' with one role: 'app'. 
# The configuration inside the env block is available to all its 
# roles. The configuration inside the role blocks is available only
# to machines in that specific role. 
env :stage, :prod do
  user :root                       # User to connect as
  size 'm1.small'                  # EC2 machine type for all machines
                                   # in the 'stage' environment

  role :app do                     # stage-app is the default                                     
  end                              # machine group. 

  role :db do  
    positions 1                    # 2 machines in stage-app
    #addresses '11.22.33.44'       # Define an elastic IP to reuse

    disks do                       # Define EBS volumes 
      path '/rudy/disk1' do        # The paths can be anything but
        size 2                     # they must be unique. 
        device '/dev/sdr'          # Devices must be unique too.
      end
    end

  end                              

  role :balancer do                # You can define as many roles
  end                              # as you like. These are just 
                                   # a couple examples.

  users do                         # Specify existing private keys per user
    #rudy do                       
    #  keypair '/path/2/private-key'
    #end
  end

  role :ubuntu do
    ami 'ami-1a837773'
    root 'ubuntu'
    user 'ubuntu'
  end

end

end

# ———————————————————– COMMANDS ——– # The commands block defines shell commands that can be used in routines. The # ones defined here are added to the default list defined by Rye::Cmd (Rudy # executes all SSH commands via Rye). # # Usage: # # allow COMMAND-NAME # allow COMMAND-NAME, ‘/path/2/COMMAND’ # allow COMMAND-NAME, ‘/path/2/COMMAND’, ‘default argument’, ‘another arg’ # commands do

allow :gem_install, '/usr/bin/gem', 'install', :V, '--no-rdoc', '--no-ri'
allow :apt_get, 'apt-get', :y, :q
allow :rubycode do
  puts "Some ruby code running in #{self}"
end

end

# ———————————————————– ROUTINES ——– # The routines block describes the repeatable processes for each machine group. # To run a routine, specify its name on the command-line: rudy startup routines do

env :stage, :prod do               # We'll define routines for the stage-db
  role :db do                      # and prod-db machine groups.

    user :root                     # The default remote user

    startup do                     # $ rudy startup
      adduser :rudy                # Create a user called 'rudy'
                                   #
      disks do                     # Define EBS volume routines
        create '/rudy/disk1'       # Create an EBS volume, attach it, give
      end                          # it a filesystem, and mount it.
                                   #
      remote :root do              # Run remote SSH commands after startup
        mkdir :p, 'great'          # $ mkdir -p great
        touch 'great/scott'        # $ touch great/scott
        ls :l, :a                  # $ ls -l -a *
      end                          
    end                            

    shutdown do                    # $ rudy shutdown
      remote :root do              # Run remote SSH commands before shutdown
        uptime               
      end                               
      disks do                     
        destroy '/rudy/disk1'      # Unmount and destroy the EBS volume
      end                          
    end                            

    reboot do                      # $ rudy reboot
      before_remote do             # Run any pre-reboot tasks like stopping
        uptime                     # web servers and databases. 
      end                          #
      remote do                    # Run any startup tasks like starting
        uname                      # processes or initializing the filesystem
      end
      disks do
        mount "/rudy/disk1"
      end
    end

  end                              
end                                

# Define global routines available to all machine groups
# This routine will update a basic Debian machine and
# install essential libraries. 
# See http://github.com/rudy/arcade
sysupdate do                       # $ rudy sysupdate
  adduser :rudy
  remote :root do                  
    apt_get 'update'               # Update debian / ubuntu 
    apt_get 'install', 'build-essential', 'sqlite3', 'libsqlite3-dev'
    apt_get 'install', 'apache2-prefork-dev', 'libapr1-dev', 'rubygems'
    gem_install 'rudy'
  end
end

anything do                        # $ rudy anything
  before :uptime                   # Specify a dependency
  local do                         # This is Ruby, so any valid syntax
    ls :l                          # can be used in the definitions. 
  end                              # See: SysInfo gem for more info.
end

uptime do                          # $ rudy uptime
  local { uptime }                 # Short block syntax
end

end

# ———————————————————– DEFAULTS ——– # These values are used as defaults for their respective global settings. They # can be overridden by the command-line global options. # defaults do

zone :'us-east-1d'
environment :stage
role :app
color true                         # Terminal colors? true/false
#root 'rootuser'                   # The "root" account (on Ubuntu, set to "ubuntu")
#user 'someuser'                   # The default remote user
#localhost 'hostname'              # A local hostname instead of localhost
#auto true                         # Skip interactive confirmation?
#keydir 'path/2/keys/'             # The path to store SSH keys

end

[Validate]

Generated with the Darkfish Rdoc Generator 2.