centostrano 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. data/CHANGELOG +215 -0
  2. data/COPYING +19 -0
  3. data/LICENSE +339 -0
  4. data/README +166 -0
  5. data/THANKS +5 -0
  6. data/bin/centify +137 -0
  7. data/docs/ANNOUNCE.deprec2 +47 -0
  8. data/docs/README.install +88 -0
  9. data/docs/README.nagios +28 -0
  10. data/docs/README.rails +20 -0
  11. data/docs/README.svn +31 -0
  12. data/docs/ROADMAP.txt +74 -0
  13. data/docs/deprec-1.x/deprec-1.x.quickstart +50 -0
  14. data/docs/deprec-1.x/notes.txt +12 -0
  15. data/docs/deprec_banner.gif +0 -0
  16. data/lib/centostrano.rb +9 -0
  17. data/lib/deprec/capistrano_extensions.rb +391 -0
  18. data/lib/deprec/centostrano.rb +46 -0
  19. data/lib/deprec/recipes/apache.rb +188 -0
  20. data/lib/deprec/recipes/canonical.rb +57 -0
  21. data/lib/deprec/recipes/deprec.rb +188 -0
  22. data/lib/deprec/recipes/deprecated.rb +71 -0
  23. data/lib/deprec/recipes/example.rb +115 -0
  24. data/lib/deprec/recipes/git.rb +106 -0
  25. data/lib/deprec/recipes/gitosis.rb +134 -0
  26. data/lib/deprec/recipes/logrotate.rb +54 -0
  27. data/lib/deprec/recipes/memcache.rb +53 -0
  28. data/lib/deprec/recipes/merb.rb +57 -0
  29. data/lib/deprec/recipes/mongrel.rb +220 -0
  30. data/lib/deprec/recipes/monit.rb +139 -0
  31. data/lib/deprec/recipes/mysql.rb +147 -0
  32. data/lib/deprec/recipes/nginx.rb +172 -0
  33. data/lib/deprec/recipes/postgresql.rb +132 -0
  34. data/lib/deprec/recipes/rails.rb +297 -0
  35. data/lib/deprec/recipes/ruby.rb +71 -0
  36. data/lib/deprec/recipes/sphinx.rb +89 -0
  37. data/lib/deprec/recipes/ssh.rb +93 -0
  38. data/lib/deprec/recipes/svn.rb +167 -0
  39. data/lib/deprec/recipes/users.rb +90 -0
  40. data/lib/deprec/recipes.rb +33 -0
  41. data/lib/deprec/templates/aoe/aoe-init +55 -0
  42. data/lib/deprec/templates/aoe/fence_aoemask +351 -0
  43. data/lib/deprec/templates/apache/httpd-vhost-app.conf.erb +144 -0
  44. data/lib/deprec/templates/apache/httpd.conf +465 -0
  45. data/lib/deprec/templates/apache/index.html.erb +37 -0
  46. data/lib/deprec/templates/apache/master.css +72 -0
  47. data/lib/deprec/templates/centos/repository.erb +6 -0
  48. data/lib/deprec/templates/coraid/aoe-init +55 -0
  49. data/lib/deprec/templates/deprec/caprc.erb +14 -0
  50. data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
  51. data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
  52. data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
  53. data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
  54. data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
  55. data/lib/deprec/templates/mongrel/logrotate.erb +0 -0
  56. data/lib/deprec/templates/mongrel/mongrel_cluster-init-script +54 -0
  57. data/lib/deprec/templates/mongrel/mongrel_cluster.logrotate.d +14 -0
  58. data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
  59. data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
  60. data/lib/deprec/templates/monit/monit-init-script +104 -0
  61. data/lib/deprec/templates/monit/monitrc.erb +227 -0
  62. data/lib/deprec/templates/monit/nothing +0 -0
  63. data/lib/deprec/templates/mysql/create_databases.sql +20 -0
  64. data/lib/deprec/templates/mysql/database.yml.prod +6 -0
  65. data/lib/deprec/templates/mysql/database.yml.stage +6 -0
  66. data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
  67. data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
  68. data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
  69. data/lib/deprec/templates/nagios/cgi.cfg.erb +321 -0
  70. data/lib/deprec/templates/nagios/commands.cfg.erb +240 -0
  71. data/lib/deprec/templates/nagios/contacts.cfg.erb +57 -0
  72. data/lib/deprec/templates/nagios/hosts.cfg.erb +143 -0
  73. data/lib/deprec/templates/nagios/htpasswd.users +1 -0
  74. data/lib/deprec/templates/nagios/localhost.cfg.erb +157 -0
  75. data/lib/deprec/templates/nagios/nagios.cfg.erb +1274 -0
  76. data/lib/deprec/templates/nagios/nagios_apache_vhost.conf.erb +45 -0
  77. data/lib/deprec/templates/nagios/nrpe.cfg.erb +210 -0
  78. data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
  79. data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
  80. data/lib/deprec/templates/nagios/services.cfg.erb +79 -0
  81. data/lib/deprec/templates/nagios/templates.cfg.erb +9 -0
  82. data/lib/deprec/templates/nagios/timeperiods.cfg.erb +94 -0
  83. data/lib/deprec/templates/network/hostname.erb +1 -0
  84. data/lib/deprec/templates/network/hosts.erb +2 -0
  85. data/lib/deprec/templates/network/interfaces.erb +22 -0
  86. data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
  87. data/lib/deprec/templates/nginx/logrotate.erb +0 -0
  88. data/lib/deprec/templates/nginx/mime.types.erb +70 -0
  89. data/lib/deprec/templates/nginx/nginx-init-script +109 -0
  90. data/lib/deprec/templates/nginx/nginx.conf.erb +120 -0
  91. data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
  92. data/lib/deprec/templates/nginx/nothing.conf +1 -0
  93. data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +41 -0
  94. data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
  95. data/lib/deprec/templates/postfix/aliases.erb +3 -0
  96. data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
  97. data/lib/deprec/templates/postfix/main.cf.erb +41 -0
  98. data/lib/deprec/templates/postfix/master.cf.erb +77 -0
  99. data/lib/deprec/templates/postgresql/pg_hba.conf.erb +76 -0
  100. data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
  101. data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
  102. data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
  103. data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
  104. data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
  105. data/lib/deprec/templates/trac/trac.ini.erb +106 -0
  106. data/lib/deprec/templates/trac/trac_deprec.png +0 -0
  107. data/lib/deprec/templates/trac/tracd-init.erb +43 -0
  108. data/lib/deprec/templates/xen/15-disable-hwclock +40 -0
  109. data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
  110. data/lib/deprec/templates/xen/xen-tools.conf.erb +220 -0
  111. data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
  112. data/lib/deprec/templates/xen/xend-init.erb +69 -0
  113. data/lib/deprec/templates/xen/xendomains.erb +137 -0
  114. data/lib/deprec/templates/xen/xm.tmpl.erb +85 -0
  115. data/lib/deprec_cmd_completion.sh +26 -0
  116. data/lib/vmbuilder_plugins/all.rb +20 -0
  117. data/lib/vmbuilder_plugins/apt.rb +93 -0
  118. data/lib/vmbuilder_plugins/emerge.rb +76 -0
  119. data/lib/vmbuilder_plugins/gem.rb +90 -0
  120. data/lib/vmbuilder_plugins/std.rb +203 -0
  121. metadata +207 -0
@@ -0,0 +1,46 @@
1
+ # Copyright 2008 by Saulius Grigaitis. All rights reserved.
2
+ require 'capistrano'
3
+ require 'fileutils'
4
+
5
+ module Yum
6
+
7
+ def enable_repository(name)
8
+ case name
9
+ when :rpmforge
10
+ rpm_install("http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.`uname -i`.rpm")
11
+ when :epel
12
+ sudo "sudo test -f /etc/yum.repos.d/epel.repo || sudo rpm -U http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm"
13
+ end
14
+ end
15
+
16
+ def rpm_install(packages, options={})
17
+ send(run_method, "wget -Ncq #{[*packages].join(' ')}", options)
18
+ files=[*packages].collect { |package| File.basename(package) }
19
+ # TODO hmm... This should me replaces with something more smart, like check if package is already installed
20
+ send(run_method, "rpm -U --force #{files.join(' ')}", options)
21
+ send(run_method, "rm #{files.join(' ')}", options)
22
+ end
23
+
24
+ def install_from_src(src_package, src_dir)
25
+ package_dir = File.join(src_dir, src_package[:dir])
26
+ deprec2.unpack_src(src_package, src_dir)
27
+ enable_repository :rpmforge
28
+ enable_repository :epel
29
+ rpm_install("http://www.asic-linux.com.mx/~izto/checkinstall/files/rpm/checkinstall-1.6.1-1.i386.rpm")
30
+ apt.install( {:base => %w(gcc gcc-c++ make patch rpm-build which)}, :stable )
31
+ # XXX replace with invoke_command
32
+ sudo <<-SUDO
33
+ sh -c '
34
+ cd #{package_dir};
35
+ #{src_package[:configure]}
36
+ #{src_package[:make]}
37
+ sudo /usr/local/sbin/checkinstall -y -R --install --pkgversion=#{src_package[:version]} --pkgrelease=#{src_package[:release]} #{src_package[:install]}
38
+ #{src_package[:post_install]}
39
+ '
40
+ SUDO
41
+ #/usr/local/sbin/checkinstall --fstrans=no -y -R #{src_package[:install]}
42
+ end
43
+
44
+ end
45
+
46
+ Capistrano.plugin :yum, Yum
@@ -0,0 +1,188 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace :centos do
4
+ namespace :apache do
5
+
6
+ # put apache config for site in shared/config/apache2 dir
7
+ # link it into apps to enable, unlink to disable?
8
+ # http://times.usefulinc.com/2006/09/15-rails-debian-apache
9
+
10
+ # XXX Check this over after a nice sleep
11
+ #
12
+ # def set_apache_conf
13
+ # if apache_default_vhost
14
+ # set :apache_conf, "/usr/local/apache2/conf/default.conf" unless apache_default_vhost_conf
15
+ # else
16
+ # set :apache_conf, "/usr/local/apache2/conf/apps/#{application}.conf" unless apache_conf
17
+ # end
18
+ # end
19
+
20
+ set(:apache_server_name) { domain }
21
+ set :apache_user, 'daemon' # XXX this is not yet being inserted into httpd.conf!
22
+ # I've added it for deprec:nagios:install
23
+ set :apache_conf, nil
24
+ set :apache_default_vhost, false
25
+ set :apache_default_vhost_conf, nil
26
+ set :apache_ctl, "/etc/init.d/httpd"
27
+ set(:apache_server_aliases) { web_server_aliases }
28
+ set :apache_proxy_port, 8000
29
+ set :apache_proxy_servers, 2
30
+ set :apache_proxy_address, "127.0.0.1"
31
+ set :apache_ssl_enabled, false
32
+ set :apache_ssl_ip, nil
33
+ set :apache_ssl_forward_all, false
34
+ set :apache_ssl_chainfile, false
35
+ set :apache_docroot, '/usr/local/apache2/htdocs'
36
+ set :apache_vhost_dir, '/usr/local/apache2/conf/apps'
37
+ set :apache_config_file, '/usr/local/apache2/conf/httpd.conf'
38
+
39
+
40
+ SRC_PACKAGES[:apache] = {
41
+ :filename => 'httpd-2.2.9.tar.gz',
42
+ :md5sum => "28470617033b8fb998779f6d76016f82 httpd-2.2.9.tar.gz",
43
+ :dir => 'httpd-2.2.9',
44
+ :url => "http://www.apache.org/dist/httpd/httpd-2.2.9.tar.gz",
45
+ :unpack => "tar zxf httpd-2.2.9.tar.gz;",
46
+ :configure => %w(
47
+ ./configure
48
+ --enable-mods-shared=all
49
+ --enable-proxy
50
+ --enable-proxy-balancer
51
+ --enable-proxy-http
52
+ --enable-rewrite
53
+ --enable-cache
54
+ --enable-headers
55
+ --enable-ssl
56
+ --enable-deflate
57
+ --with-included-apr #_so_this_recipe_doesn't_break_when_rerun
58
+ --enable-dav #_for_subversion_
59
+ --enable-so #_for_subversion_
60
+ ;
61
+ ).reject{|arg| arg.match '#'}.join(' '),
62
+ :make => 'make;',
63
+ :install => '--fstrans=no make install;',
64
+ :post_install => 'install -b support/apachectl /etc/init.d/httpd;',
65
+ :version => 'c2.2.9',
66
+ :release => '1'
67
+ }
68
+
69
+ desc "Install apache"
70
+ task :install do
71
+ install_deps
72
+ sudo "yum remove -y httpd"
73
+ deprec2.download_src(SRC_PACKAGES[:apache], src_dir)
74
+ yum.install_from_src(SRC_PACKAGES[:apache], src_dir)
75
+ setup_vhost_dir
76
+ # install_index_page
77
+ activate
78
+ SYSTEM_CONFIG_FILES[:apache].each do |file|
79
+ deprec2.render_template(:apache, file.merge(:remote => true))
80
+ end
81
+ end
82
+
83
+ # install dependencies for apache
84
+ task :install_deps do
85
+ apt.install( {:base => %w(zlib1g-dev zlib1g openssl openssl-devel)}, :stable )
86
+ end
87
+
88
+ # Create dir for vhost config files
89
+ task :setup_vhost_dir do
90
+ deprec2.mkdir(apache_vhost_dir, :owner => 'root', :group => group, :mode => 0775, :via => :sudo)
91
+ deprec2.append_to_file_if_missing(apache_config_file, 'Include conf/apps/')
92
+ end
93
+
94
+ SYSTEM_CONFIG_FILES[:apache] = [
95
+ # They're generated and put in place during install
96
+ # I may put them in here at some point
97
+ ]
98
+
99
+ PROJECT_CONFIG_FILES[:apache] = [
100
+
101
+ {:template => "httpd-vhost-app.conf.erb",
102
+ :path => 'conf/httpd-vhost-app.conf',
103
+ :mode => 0755,
104
+ :owner => 'root:root'}
105
+ ]
106
+
107
+ desc "Generate configuration file(s) for apache from template(s)"
108
+ task :config_gen do
109
+ config_gen_system
110
+ config_gen_project
111
+ end
112
+
113
+ task :config_gen_system do
114
+ SYSTEM_CONFIG_FILES[:apache].each do |file|
115
+ deprec2.render_template(:apache, file)
116
+ end
117
+ end
118
+
119
+ task :config_gen_project do
120
+ PROJECT_CONFIG_FILES[:apache].each do |file|
121
+ deprec2.render_template(:apache, file)
122
+ end
123
+ end
124
+
125
+ desc "Push apache config files to server"
126
+ task :config, :roles => :web do
127
+ config_system
128
+ config_project
129
+ end
130
+
131
+ task :config_system, :roles => :web do
132
+ deprec2.push_configs(:apache, SYSTEM_CONFIG_FILES[:apache])
133
+ end
134
+
135
+ task :config_project, :roles => :web do
136
+ deprec2.push_configs(:apache, PROJECT_CONFIG_FILES[:apache])
137
+ sudo "ln -sf #{deploy_to}/apache/conf/httpd-vhost-app.conf /usr/local/apache2/conf/apps/#{application}.conf"
138
+ end
139
+
140
+ desc "Start Apache"
141
+ task :start, :roles => :web do
142
+ send(run_method, "#{apache_ctl} start")
143
+ end
144
+
145
+ desc "Stop Apache"
146
+ task :stop, :roles => :web do
147
+ send(run_method, "#{apache_ctl} stop")
148
+ end
149
+
150
+ desc "Restart Apache"
151
+ task :restart, :roles => :web do
152
+ send(run_method, "#{apache_ctl} restart")
153
+ end
154
+
155
+ desc "Reload Apache"
156
+ task :reload, :roles => :web do
157
+ send(run_method, "#{apache_ctl} reload")
158
+ end
159
+
160
+ desc "Set apache to start on boot"
161
+ task :activate do
162
+ send(run_method, "/sbin/chkconfig --add httpd")
163
+ send(run_method, "/sbin/chkconfig --level 345 httpd on")
164
+ end
165
+
166
+ desc "Set apache to not start on boot"
167
+ task :deactivate, :roles => :web do
168
+ send(run_method, "/sbin/chkconfig --del httpd")
169
+ end
170
+
171
+ task :backup, :roles => :web do
172
+ # not yet implemented
173
+ end
174
+
175
+ task :restore, :roles => :web do
176
+ # not yet implemented
177
+ end
178
+
179
+ # Generate an index.html page
180
+ task :install_index_page do
181
+ deprec2.mkdir(apache_docroot, :owner => :root, :group => :deploy, :mode => 0775, :via => :sudo)
182
+ std.su_put deprec2.render_template(:apache, :template => 'index.html.erb'), File.join(apache_docroot, 'index.html')
183
+ std.su_put deprec2.render_template(:apache, :template => 'master.css'), File.join(apache_docroot, 'master.css')
184
+ end
185
+
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,57 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ # canonical.rb
3
+ #
4
+ # Running deprec:web:stop will be the same as running deprec:apache:stop or
5
+ # deprec:nginx:stop depending what you have chosen.
6
+ #
7
+ # generic namespaces are linked up to chosen applications at runtime but these
8
+ # stubs are so they'll be included in the output of "cap -T"
9
+ #
10
+ Capistrano::Configuration.instance(:must_exist).load do
11
+
12
+ %w(web app db).each do |server|
13
+ namespace "deprec:#{server}" do
14
+
15
+ desc "Install #{server} server"
16
+ task :install, :roles => server do
17
+ end
18
+
19
+ desc "Generate config file(s) for #{server} server from template(s)"
20
+ task :config_gen do
21
+ end
22
+
23
+ desc "Deploy configuration files(s) for #{server} server"
24
+ task :config, :roles => server do
25
+ end
26
+
27
+ desc "Start #{server} server"
28
+ task :start, :roles => server do
29
+ end
30
+
31
+ desc "Stop #{server} server"
32
+ task :stop, :roles => server do
33
+ end
34
+
35
+ desc "Stop #{server} server"
36
+ task :restart, :roles => server do
37
+ end
38
+
39
+ desc "Enable startup script for #{server} server"
40
+ task :activate, :roles => server do
41
+ end
42
+
43
+ desc "Disable startup script for #{server} server"
44
+ task :deactivate, :roles => server do
45
+ end
46
+
47
+ desc "Backup data for #{server} server"
48
+ task :backup, :roles => server do
49
+ end
50
+
51
+ desc "Restore data for #{server} server from backup"
52
+ task :restore, :roles => server do
53
+ end
54
+
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,188 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+
4
+ # Set the value if not already set
5
+ # This method is accessible to all recipe files
6
+ def self.default(name, *args, &block)
7
+ unless exists?(name)
8
+ set(name, *args, &block)
9
+ end
10
+ end
11
+
12
+ # Deprec checks here for local versions of config templates before it's own
13
+ set :local_template_dir, File.join('config','templates')
14
+
15
+ # The following two Constants contain details of the configuration
16
+ # files used by each service. They're used when generating config
17
+ # files from templates and when configs files are pushed out to servers.
18
+ #
19
+ # They are populated by the recipe file for each service
20
+ #
21
+ SYSTEM_CONFIG_FILES = {} # e.g. httpd.conf
22
+ PROJECT_CONFIG_FILES = {} # e.g. projectname-httpd-vhost.conf
23
+
24
+ # For each service, the details of the file to download and options
25
+ # to configure, build and install the service
26
+ SRC_PACKAGES = {} unless defined?(SRC_PACKAGES)
27
+
28
+ # Server options
29
+ CHOICES_WEBSERVER = [:nginx, :apache, :none]
30
+ CHOICES_APPSERVER = [:mongrel, :webrick, :none]
31
+ CHOICES_DATABASE = [:mysql, :postgres, :none]
32
+
33
+
34
+ # Server defaults
35
+ default :web_server_type, :apache
36
+ default :app_server_type, :mongrel
37
+ default :db_server_type, :mysql
38
+
39
+ default(:web_server_type) do
40
+ Capistrano::CLI.ui.choose do |menu|
41
+ CHOICES_WEBSERVER.each {|c| menu.choice(c)}
42
+ menu.header = "select webserver type"
43
+ end
44
+ end
45
+
46
+ default(:app_server_type) do
47
+ Capistrano::CLI.ui.choose do |menu|
48
+ CHOICES_APPSERVER.each {|c| menu.choice(c)}
49
+ menu.header = "select application server type"
50
+ end
51
+ end
52
+
53
+ default(:db_server_type) do
54
+ Capistrano::CLI.ui.choose do |menu|
55
+ CHOICES_DATABASE.each {|c| menu.choice(c)}
56
+ menu.header = "select database server type"
57
+ end
58
+ end
59
+
60
+ default(:application) do
61
+ Capistrano::CLI.ui.ask "enter name of project(no spaces)" do |q|
62
+ q.validate = /^[0-9a-z_]*$/
63
+ end
64
+ end
65
+
66
+ default(:domain) do
67
+ Capistrano::CLI.ui.ask "enter domain name for project" do |q|
68
+ q.validate = /^[0-9a-z_\.]*$/
69
+ end
70
+ end
71
+
72
+ default(:repository) do
73
+ Capistrano::CLI.ui.ask "enter repository URL for project" do |q|
74
+ # q.validate = //
75
+ end
76
+ end
77
+
78
+ # some tasks run commands requiring special user privileges on remote servers
79
+ # these tasks will run the commands with:
80
+ # :invoke_command "command", :via => run_method
81
+ # override this value if sudo is not an option
82
+ # in that case, your use will need the correct privileges
83
+ default :run_method, :sudo
84
+
85
+ default(:backup_dir) { '/var/backups'}
86
+
87
+ # XXX rails deploy stuff
88
+ set :apps_root, File.join( %w(/ opt apps) ) # parent dir for apps
89
+ default(:deploy_to) { File.join(apps_root, application) } # dir for current app
90
+ default(:current_path) { File.join(deploy_to, "current") }
91
+ default(:shared_path) { File.join(deploy_to, "shared") }
92
+
93
+ # XXX more rails deploy stuff?
94
+
95
+ default :user, ENV['USER'] # user who is deploying
96
+ default :group, 'deploy' # deployment group
97
+ default(:group_src) { group } # group ownership for src dir
98
+ default :src_dir, '/usr/local/src' # 3rd party src on servers lives here
99
+ default(:web_server_aliases) { domain.match(/^www/) ? [] : ["www.#{domain}"] }
100
+
101
+ # XXX for some reason this is causing "before deprec:rails:install" to be executed twice
102
+ # on :load, 'deprec:connect_canonical_tasks'
103
+
104
+ namespace :centos do
105
+
106
+ task :connect_canonical_tasks, :hosts => 'localhost' do
107
+ # link application specific recipes into canonical task names
108
+ # e.g. deprec:web:restart => deprec:nginx:restart
109
+ metaclass = class << self; self; end
110
+ [:web, :app, :db].each do |server|
111
+ server_type = send("#{server}_server_type")
112
+ if server_type != :none
113
+ metaclass.send(:define_method, server) { namespaces[server] }
114
+ self.namespaces[server] = deprec.send(server_type)
115
+ end
116
+ end
117
+ end
118
+
119
+ task :dump do
120
+ require 'yaml'
121
+ y variables
122
+ end
123
+
124
+ task :setup_src_dir do
125
+ deprec2.groupadd(group_src)
126
+ deprec2.add_user_to_group(user, group_src)
127
+ deprec2.create_src_dir
128
+ end
129
+
130
+ # Download all packages used by deprec to your local host.
131
+ # You can then push them to /usr/local/src on target hosts
132
+ # to save time and bandwidth rather than repeatedly downloading
133
+ # from the distribution sites.
134
+ task :update_src do
135
+ SRC_PACKAGES.each{|key, src_package|
136
+ current_dir = Dir.pwd
137
+ system "cd src/ && test -f #{src_package[:filename]} || wget --quiet --timestamping #{src_package[:url]}"
138
+ system "cd #{current_dir}"
139
+ }
140
+ end
141
+
142
+ # todo
143
+ #
144
+ # Copy files from src/ to /usr/local/src/ on remote hosts
145
+ task :push_src do
146
+ SRC_PACKAGES.each do |key, src_package|
147
+ deprec2.set_package_defaults(src_package)
148
+ file = File.join('src', src_package[:filename])
149
+ if File.exists?(file)
150
+ std.su_put(File.read(file), "#{src_dir}/#{src_package[:filename]}", '/tmp/')
151
+ end
152
+ end
153
+ end
154
+
155
+ task :list_src do
156
+ # XXX ugly line - look away
157
+ max_key_size = SRC_PACKAGES.keys.max{|a,b| a.to_s.size <=> b.to_s.size}.to_s.size
158
+ SRC_PACKAGES.each{|key, src_package|
159
+ deprec2.set_package_defaults(src_package)
160
+ puts "#{key}#{' '*(max_key_size+1-key.to_s.size)}: #{src_package[:url]}"
161
+ }
162
+ end
163
+
164
+ task :find_src do
165
+ # XXX ugly line - look away
166
+ max_key_size = SRC_PACKAGES.keys.max{|a,b| a.to_s.size <=> b.to_s.size}.to_s.size
167
+ SRC_PACKAGES.each{|key, src_package|
168
+ deprec2.set_package_defaults(src_package)
169
+ puts "#{key}#{' '*(max_key_size+1-key.to_s.size)}: #{src_package[:url]}"
170
+ puts `find . -name #{src_package[:filename]}`
171
+ puts
172
+ }
173
+ end
174
+
175
+ task :recover_src do
176
+ # XXX ugly line - look away
177
+ max_key_size = SRC_PACKAGES.keys.max{|a,b| a.to_s.size <=> b.to_s.size}.to_s.size
178
+ SRC_PACKAGES.each{|key, src_package|
179
+ puts "#{key}#{' '*(max_key_size+1-key.to_s.size)}: #{src_package[:url]}"
180
+ file = `find . -name #{src_package[:filename]}`.split[0]
181
+ `cp #{file} src/` if file
182
+ puts
183
+ }
184
+ end
185
+
186
+ end
187
+
188
+ end