Sha256: eed4841541b0785b24b3564f9a365ac6d293c9b550047c8ec03e49ee2cd5008b

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

require "sprinkle"

module PoolParty
  class Provider
    
    def self.install_poolparty(ips)
      
      $:.unshift( File.dirname(__FILE__) )
      
      load_str = []
      
      Dir["#{File.expand_path(File.dirname(__FILE__))}/packages/*"].each {|f| load_str << open(f).read}
            
      script=<<-EOS
        
        #{load_str.join("\n")}
        
        policy :poolparty, :roles => :app do
          requires :git
          requires :ruby
          requires :monit
          requires :s3fs
          requires :rsync
          requires :heartbeat
          requires :poolparty
        end        
        
        deployment do 
          delivery :vlad do 
            
            set :ssh_cmd, '#{RemoteInstance.ssh_string}'
            
            #{string_roles_from_ips(ips)} 
          end
          
          source do
            prefix   '/usr/local'
            archives '/root/sources'
            builds   '/root/builds'
          end
            
        end 
      EOS
      
      PoolParty.message "Installing required poolparty paraphernalia"      
      install_from_sprinkle_string script
    end
    
    def self.install_from_sprinkle_string(str)
      Sprinkle::Script.sprinkle str
    end
    
    def self.string_roles_from_ips(ips)
      ips.collect do |ip|
        "role :app, '#{ip}'"
      end.join("\n")
    end
    
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
auser-poolparty-0.0.8 lib/poolparty/provider/provider.rb
dreadpiratepj-poolparty-0.0.8 lib/poolparty/provider/provider.rb