itrigga-cap_deploy 0.1.7 → 0.2.2

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.7
1
+ 0.2.2
@@ -4,14 +4,23 @@ configuration = Capistrano::Configuration.respond_to?(:instance) ?
4
4
 
5
5
  configuration.load do
6
6
  def with_role(role, &block)
7
- original, ENV['HOSTS'] = ENV['HOSTS'], find_servers(:roles =>role).map{|d| d.host}.join(",")
8
- begin
9
- yield
10
- ensure
11
- ENV['HOSTS'] = original
7
+ if role_defined?(role)
8
+ original, ENV['HOSTS'] = ENV['HOSTS'], find_servers(:roles =>role).map{|d| d.host}.join(",")
9
+ begin
10
+ yield
11
+ ensure
12
+ ENV['HOSTS'] = original
13
+ end
12
14
  end
13
15
  end
14
16
 
17
+ #
18
+ # Returns true if at least 1 server has been assigned to the role
19
+ #
20
+ def role_defined?(role)
21
+ find_servers(:roles => role).count > 0
22
+ end
23
+
15
24
  task :symlink_init_d_script do
16
25
  puts "ensuring init_d script is symlinked"
17
26
  run "test -L /etc/init.d/#{application_stub} || #{sudo} ln -s #{script_path}/init_d /etc/init.d/#{application_stub}"
@@ -73,22 +82,28 @@ configuration.load do
73
82
  symlink_dir("#{shared_dir}/cache","#{web_dir}/tmp/cache")
74
83
 
75
84
  end
76
-
85
+
77
86
  task :regenerate_monit do
78
87
  puts "regenerating monit config file(s)"
79
- remove_dir_if_exists("#{web_dir}/config/monit")
80
- run "mkdir -p #{web_dir}/config/monit"
81
- run "cd #{web_dir} && ruby script/generate monit"
88
+ run "test -d #{shared_dir}/templates || mkdir -p #{shared_dir}/templates"
89
+
90
+ run "cd #{web_dir} && #{sudo} rake itrigga:generator PATTERN=monit TEMPLATE_DIR=#{web_dir}/script/templates OUTPUT_DIR=#{shared_dir}/templates CONFIG_FILE=`readlink /etc/#{config_file_name}` BASE_DIR=#{shared_dir}"
82
91
  puts "setting permissions & ownership on monit config files"
83
- set_permissions_on_files_in_dir( :dir=>"#{web_dir}/config/monit", :ownership=>"root", :permissions=>"0700")
92
+ set_permissions_on_files_in_dir( :dir=>"#{shared_dir}/templates", :ownership=>"root", :permissions=>"0700")
93
+
84
94
  end
85
95
 
86
- task :resymlink_monit do
87
- monit_file = "#{web_dir}/config/monit/monit.`readlink /etc/itrigga_config_file`.config"
88
- std_monit_file = "/etc/monit/conf.d/#{application_stub}"
89
- puts "re-symlinking monit config"
90
- run "(test -L #{std_monit_file} && #{sudo} rm #{std_monit_file}) || echo 'no existing link'"
91
- run "#{sudo} ln -s #{monit_file} #{std_monit_file} "
96
+ task :resymlink_monit do
97
+ remove_dir_if_exists("/etc/monit/conf.d/#{application_stub}")
98
+ sudo "mkdir /etc/monit/conf.d/#{application_stub}"
99
+ puts "re-symlinking monit config files"
100
+ symlink_files_in_dir_by_regex("#{shared_dir}/templates","/etc/monit/conf.d/#{application_stub}",".*monit$")
101
+
102
+ # overwrite the default monit monitrc file to just have the includes for the conf.d dir
103
+ run "(test -f /etc/monit/monitrc && #{sudo} rm -f /etc/monit/monitrc) || echo no existing monitrc file"
104
+ sudo "echo \"echo 'include /etc/monit/conf.d/**/*' > /etc/monit/monitrc\" | #{sudo} bash"
105
+ run "#{sudo} chown root:root /etc/monit/monitrc && #{sudo} chmod 0700 /etc/monit/monitrc"
106
+
92
107
  end
93
108
 
94
109
  task :reload_monit do
@@ -97,14 +112,15 @@ configuration.load do
97
112
 
98
113
  task :regenerate_logrotate do
99
114
  puts "regenerating logrotate config file"
100
- remove_dir_if_exists( "#{web_dir}/config/log_rotate" )
101
- run "cd #{web_dir} && ruby script/generate logrotate"
115
+ run "test -d #{shared_dir}/templates || mkdir -p #{shared_dir}/templates"
116
+
117
+ run "cd #{web_dir} && #{sudo} rake itrigga:generator PATTERN=logrotate TEMPLATE_DIR=#{web_dir}/script/templates OUTPUT_DIR=#{shared_dir}/templates CONFIG_FILE=false BASE_DIR=#{shared_dir}"
102
118
  puts "setting permissions & ownership on logrotate config files"
103
- set_permissions_on_files_in_dir( :dir=>"#{web_dir}/config/log_rotate", :ownership=>"root", :permissions=>"0700" )
119
+ set_permissions_on_files_in_dir( :dir=>"#{shared_dir}/templates", :ownership=>"root", :permissions=>"0700" )
104
120
  end
105
121
 
106
122
  task :resymlink_logrotate do
107
- logrotate_config_file = "#{web_dir}/config/log_rotate/log_rotate.`readlink /etc/itrigga_config_file`.config"
123
+ logrotate_config_file = "#{shared_dir}/templates/logrotate"
108
124
  std_logrotate_file = "/etc/logrotate.d/#{application_stub}"
109
125
  puts "re-symlinking logrotate config"
110
126
  run "(test -L #{std_logrotate_file} && #{sudo} rm #{std_logrotate_file}) || echo nothing to remove"
@@ -118,39 +134,47 @@ configuration.load do
118
134
 
119
135
  task :regenerate_db_scripts do
120
136
  puts "regenerating db scripts"
121
-
122
- remove_dir_if_exists( "#{web_dir}/script/db" )
123
- run "cd #{web_dir} && ruby script/generate db"
124
-
125
- puts "setting permissions & ownership on cron and db scripts"
126
- set_permissions_on_files_in_dir( :dir=>"#{web_dir}/script/db", :ownership=>"root", :permissions=>"0700" )
127
137
  end
128
138
 
129
139
  task :regenerate_cron_scripts do
130
140
  puts "regenerating cron scripts"
141
+ run "test -d #{shared_dir}/templates || mkdir -p #{shared_dir}/templates"
131
142
 
132
- remove_dir_if_exists( "#{web_dir}/script/cron" )
133
- run "cd #{web_dir} && ruby script/generate cron"
143
+ with_role :solr do
144
+ solr_lockfile_script_path = File.join(shared_dir,"templates","solr_lockfile_check.script")
145
+ run "cd #{web_dir} && #{sudo} rake itrigga:generator PATTERN=solr_lockfile_check.cron TEMPLATE_DIR=#{web_dir}/script/templates OUTPUT_DIR=#{shared_dir}/templates CONFIG_FILE=false SOLR_LOCKFILE_SCRIPT_PATH=#{solr_lockfile_script_path}"
146
+ end
134
147
 
135
148
  puts "setting permissions & ownership on cron scripts"
136
- run "test -d #{web_dir}/script/cron && #{sudo} find #{web_dir}/script/cron -type f -print | xargs -I{} #{sudo} chown root {} "
149
+ set_permissions_on_files_in_dir( :dir=>"#{shared_dir}/templates", :ownership=>"root", :permissions=>"0700" )
137
150
  end
138
151
 
139
- task :regenerate_monitoring_scripts do
140
- puts "regenerating monitoring scripts"
141
- run "cd #{web_dir} && ruby script/generate scripting -f"
152
+ task :symlink_cron_scripts do
153
+ puts "symlinking any cron scripts in scripts/cron into /etc/cron.d/"
142
154
 
143
- puts "setting permissions and ownership for solr_lockfile check script"
144
- run "#{sudo} chmod 0700 #{web_dir}/script/monitoring/solr_lockfile_check && #{sudo} chown root #{web_dir}/script/monitoring/solr_lockfile_check"
155
+ sudo "rm -f /etc/cron.d/solr_lockfile_check"
156
+ symlink_files_in_dir_by_regex("#{shared_dir}/templates","/etc/cron.d",".*cron$")
157
+
158
+ # because cron is stupid any symlinks in /etc/cron.d/ that end in .cron will *not* be run. Not at all. So lets fix those up
159
+ # removes the .cron from the end of any symlinks on /etc/cron.d/
160
+ run "echo 'for f in `find /etc/cron.d/ -type l -name '*.cron'`;do ln -s `readlink $f` ${f/.cron/} && rm $f; done' | #{sudo} bash"
145
161
 
162
+ # give cron a kick to pick up the new changes
163
+ sudo "service cron reload"
146
164
  end
147
165
 
148
- task :symlink_cron_scripts do
149
- puts "symlinking any cron scripts in scripts/cron into /etc/cron.d/"
166
+ task :regenerate_monitoring_scripts do
167
+ puts "regenerating monitoring scripts"
168
+ run "test -d #{shared_dir}/templates || mkdir -p #{shared_dir}/templates"
150
169
 
151
- symlink_files_in_dir("#{web_dir}/script/cron","/etc/cron.d")
152
-
153
- # give cron a kick to pick up the new changes
154
- run "#{sudo} service cron reload"
170
+ with_role :solr do
171
+ solr_lockfile_path = File.join(shared_dir,"solr","data","index","*.lock")
172
+ run "cd #{web_dir} && #{sudo} rake itrigga:generator PATTERN=solr_lockfile_check.script TEMPLATE_DIR=#{web_dir}/script/templates OUTPUT_DIR=#{shared_dir}/templates CONFIG_FILE=false SOLR_LOCKFILE_PATH=#{solr_lockfile_path} SOLR_TIMEOUT=900"
173
+ end
174
+
175
+ puts "setting permissions and ownership for solr_lockfile check script"
176
+ set_permissions_on_files_in_dir( :dir=>"#{shared_dir}/templates", :ownership=>"root", :permissions=>"0700" )
155
177
  end
178
+
179
+
156
180
  end
@@ -12,6 +12,15 @@
12
12
 
13
13
  run "(#{sudo} test -d #{from_dir} && ( find #{from_dir}/ -mindepth 1 -print | xargs --verbose #{sudo} ln -s -f -t #{to_dir} ) ) || echo 'nothing to link'"
14
14
  end
15
+
16
+ #
17
+ # Symlinks the files in from_dir matching the regex into the to_dir
18
+ #
19
+ def symlink_files_in_dir_by_regex(from_dir,to_dir,regex)
20
+ delete_files_from_dir1_which_exist_in_dir2(to_dir, from_dir)
21
+
22
+ run "(#{sudo} test -d #{from_dir} && ( find #{from_dir}/ -mindepth 1 -regex '#{regex}' -print | xargs --verbose #{sudo} ln -s -f -t #{to_dir} ) ) || echo 'nothing to link'"
23
+ end
15
24
 
16
25
  def mkdir_unless_exists( dir )
17
26
  run "test -d #{dir} || #{sudo} mkdir -p #{dir}"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itrigga-cap_deploy
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 7
10
- version: 0.1.7
8
+ - 2
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Al Davidson
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-29 00:00:00 +01:00
18
+ date: 2011-10-05 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency