Module: Capistrano::Baptize

Defined in:
lib/baptize/dsl.rb,
lib/baptize/helpers.rb,
lib/baptize/install.rb,
lib/baptize/plugins/apt.rb,
lib/baptize/plugins/gem.rb,
lib/baptize/plugins/base.rb,
lib/baptize/plugins/pecl.rb,
lib/baptize/plugins/transfer.rb

Defined Under Namespace

Modules: DSL, Helpers, Plugins Classes: PackageDefinition, PolicyDefinition, VerificationFailure

Class Method Summary collapse

Class Method Details

.install(scope) ⇒ Object

Defines all baptize top-level tasks



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/baptize/install.rb', line 5

def self.install(scope)
  scope.instance_eval do
    set(:root_path) { File.expand_path(Dir.pwd) }
    set(:capistrano_path) { "#{root_path}/capistrano" }

    # Can't run this here, since Capfile might want to redefine
    # load_configuration :roles

    namespace :baptize do

      desc "Loads baptize configuration files"
      task :load_configuration do
        top.load_configuration :baptize
      end

      task :default do
        install
      end

      desc "Configures all available policies"
      task :install do
        load_configuration
      end

      namespace :policies do
        desc "List available policies"
        task :default do
          load_configuration
          logger.info "Available policies:"
          tasks.flatten.each do |x|
            if x.kind_of?(Capistrano::TaskDefinition) && x.fully_qualified_name != "baptize:policies"
              name = x.fully_qualified_name.gsub(/^baptize:policies:/, "")
              policy = Capistrano::Baptize::DSL.policies[name.to_sym]
              logger.info "#{name}:"
              logger.info "->  servers:"
              top.roles[name.to_sym].servers.each do |s|
                logger.info "->    #{s}"
              end
              logger.info "->  dependencies:"
              policy.dependencies.each do |d|
                logger.info "->    #{d}"
              end
            end
          end
        end
      end # end namespace policies
    end # end namespace baptize

    namespace :ssh do
      desc "Describe available ssh connections"
      task :default do
        count = 1
        roles.each do |name,servers|
          servers.each do |host|
            puts "cap ssh:#{count} (#{name}) #{host}"
            count = count + 1
          end
        end
      end

      1.upto(10).each do |num|
        task num.to_s.to_sym do
          count = 1
          roles.each do |name,servers|
            servers.each do |host|
              if count == num
                change_dir = exists?(:deploy_to) ? ("cd " + fetch(:deploy_to) + "/current ; ") : ""
                command = "ssh -i #{ssh_options[:keys]} #{user}@#{host} -t '#{change_dir}sudo su'"
                puts command
                exec command
              end
              count = count + 1
            end
          end
        end
      end
    end # end namespace ssh

  end

end