VladTheEnterprising 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of VladTheEnterprising might be problematic. Click here for more details.
- data.tar.gz.sig +0 -0
- data/Rakefile +0 -4
- data/lib/vlad/dba/mysql.rb +23 -19
- data/lib/vlad/enterprising.rb +2 -2
- data/lib/vlad/environmentalist.rb +19 -15
- metadata +1 -1
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/Rakefile
CHANGED
@@ -5,10 +5,6 @@ require 'hoe'
|
|
5
5
|
require 'vlad'
|
6
6
|
require 'highline/import'
|
7
7
|
require './lib/vlad/enterprising.rb'
|
8
|
-
require './lib/vlad/translator.rb'
|
9
|
-
require './lib/vlad/environmentalist.rb'
|
10
|
-
require './lib/vlad/dba/mysql.rb'
|
11
|
-
require './lib/vlad/xen_master.rb'
|
12
8
|
require './lib/nytd/builder'
|
13
9
|
Hoe.new('VladTheEnterprising', VLAD_ENTERPRISING_VERSION) do |p|
|
14
10
|
p.rubyforge_name = 'vlad_the_enterprising'
|
data/lib/vlad/dba/mysql.rb
CHANGED
@@ -3,8 +3,6 @@ require 'time'
|
|
3
3
|
require 'highline/import'
|
4
4
|
require 'monitor'
|
5
5
|
require 'resolv'
|
6
|
-
require 'vlad/translator'
|
7
|
-
require 'vlad/environmentalist'
|
8
6
|
require 'digest/md5'
|
9
7
|
|
10
8
|
|
@@ -21,11 +19,11 @@ namespace :vlad do
|
|
21
19
|
:install_profile,
|
22
20
|
:revoke_replication,
|
23
21
|
:grant_replication,
|
24
|
-
:
|
22
|
+
:pre_bootstrap_slave,
|
25
23
|
:install_mysql,
|
26
24
|
:configure_slaves,
|
27
25
|
:dump_master,
|
28
|
-
:
|
26
|
+
:slave_sync,
|
29
27
|
:start_new_slaves,
|
30
28
|
:check_slaves,]
|
31
29
|
|
@@ -70,8 +68,8 @@ namespace :vlad do
|
|
70
68
|
task :assert_new_slaves do
|
71
69
|
if ENV['BOOTSTRAP']
|
72
70
|
host = ENV['BOOTSTRAP']
|
73
|
-
unless Rake::RemoteTask::hosts_for(:
|
74
|
-
raise "Error: '#{host}' not a :
|
71
|
+
unless Rake::RemoteTask::hosts_for(:new_slave).include?(host)
|
72
|
+
raise "Error: '#{host}' not a :new_slave in target subset '#{target_environment}:#{target_subset}'"
|
75
73
|
end
|
76
74
|
role :new_slave, ENV['BOOTSTRAP']
|
77
75
|
end
|
@@ -86,7 +84,7 @@ namespace :vlad do
|
|
86
84
|
end
|
87
85
|
end
|
88
86
|
|
89
|
-
remote_task :install_profile, :roles => [:db_master, :db_slave, :config_holder, :new_slave,
|
87
|
+
remote_task :install_profile, :roles => [:db_master, :db_slave, :config_holder, :new_slave, ] do
|
90
88
|
if File.exist?("files/mysql/bash_profile")
|
91
89
|
`cat files/mysql/bash_profile | ssh #{target_host} "cat > .bash_profile"`
|
92
90
|
run "if [ -e .bashrc ]; then rm .bashrc; fi; ln -s .bash_profile .bashrc"
|
@@ -122,7 +120,7 @@ namespace :vlad do
|
|
122
120
|
slaves = Rake::RemoteTask.hosts_for(:new_slave)
|
123
121
|
slaves.each do |slave|
|
124
122
|
name = slave.gsub(/\..*$/,"").gsub(/-/, "")
|
125
|
-
mysql_query "REVOKE
|
123
|
+
mysql_query "REVOKE replication slave, super, reload FROM #{name}_repl", "", :u => "root", :p => mysql_root_password, :force => true
|
126
124
|
mysql_query "drop user #{name}_repl", "", :u => "root", :p => mysql_root_password, :force => true
|
127
125
|
end
|
128
126
|
end
|
@@ -168,9 +166,14 @@ namespace :vlad do
|
|
168
166
|
slaves.each do |hostname|
|
169
167
|
name = hostname.gsub(/\..*$/,"").gsub(/-/, "")
|
170
168
|
destfile = "files/mysql/configs/#{name}.cnf"
|
171
|
-
|
172
|
-
|
173
|
-
|
169
|
+
template_dir = "files/mysql/templates/"
|
170
|
+
template_file = ""
|
171
|
+
["db_slave.cnf.tmpl",
|
172
|
+
"db_slave_#{os}.cnf.tmpl",
|
173
|
+
"#{name}.cnf.tmpl",
|
174
|
+
].each do |t|
|
175
|
+
tt = "files/mysql/templates/#{t}"
|
176
|
+
template_file = tt if File.exist?(tt)
|
174
177
|
end
|
175
178
|
template = File.read(template_file)
|
176
179
|
server_id = Resolv.getaddress(hostname) + "-" + hostname
|
@@ -190,7 +193,7 @@ namespace :vlad do
|
|
190
193
|
end
|
191
194
|
end
|
192
195
|
|
193
|
-
remote_task :
|
196
|
+
remote_task :pre_bootstrap_slave, :roles => [:new_slave] do
|
194
197
|
mysql_slave_pre_bootstrap
|
195
198
|
end
|
196
199
|
|
@@ -249,12 +252,13 @@ namespace :vlad do
|
|
249
252
|
end
|
250
253
|
end
|
251
254
|
|
252
|
-
remote_task :
|
255
|
+
remote_task :slave_sync, :roles => :new_slave do
|
253
256
|
mysql_dumpfile = ENV["DUMPFILE"] if ENV["DUMPFILE"]
|
254
257
|
run "#{mysql_path_bin}/mysql -vvf -u root -e \"slave stop\;\"; exit 0"
|
255
258
|
run "#{mysql_path_bin}/mysql -vvf -u root -e \"change master to master_host='#{mysql_master_host}', master_user='#{shortname}_repl', master_password='#{mysql_replication_password}';\""
|
256
259
|
run "mkdir -p `dirname #{mysql_dumpfile}`"
|
257
|
-
|
260
|
+
#puts "#{target_host}"
|
261
|
+
scp mysql_dumpfile, mysql_dumpfile
|
258
262
|
run "cat #{mysql_dumpfile} | gunzip - | #{mysql_path_bin}/mysql -uroot"
|
259
263
|
run "rm #{mysql_dumpfile}"
|
260
264
|
end
|
@@ -276,7 +280,7 @@ namespace :vlad do
|
|
276
280
|
end
|
277
281
|
|
278
282
|
desc "shows sync status of all slaves"
|
279
|
-
remote_task :check_slaves, :roles => :db_slave do
|
283
|
+
remote_task :check_slaves, :roles => [:db_slave, :new_slave] do
|
280
284
|
begin
|
281
285
|
assert_slave_running
|
282
286
|
rescue Exception => e
|
@@ -310,12 +314,12 @@ namespace :vlad do
|
|
310
314
|
end
|
311
315
|
|
312
316
|
desc "stops replication on all slaves"
|
313
|
-
remote_task :stop_slaves, :roles => :db_slave do
|
317
|
+
remote_task :stop_slaves, :roles => [:db_slave, :new_slave] do
|
314
318
|
mysql_query "slave stop;", "", :u => "root", :p => mysql_root_password
|
315
319
|
end
|
316
320
|
|
317
321
|
desc "starts replication on all slaves"
|
318
|
-
remote_task :start_slaves, :roles => :db_slave do
|
322
|
+
remote_task :start_slaves, :roles => [:db_slave, :new_slave] do
|
319
323
|
mysql_query "flush privileges; slave start;", "", :u => "root", :p => mysql_root_password
|
320
324
|
end
|
321
325
|
desc "shows available databases"
|
@@ -325,7 +329,7 @@ namespace :vlad do
|
|
325
329
|
end
|
326
330
|
task :show_all_databases => [:ask_root_password]
|
327
331
|
|
328
|
-
remote_task :install_dot_my_cnf, :roles => :
|
332
|
+
remote_task :install_dot_my_cnf, :roles => :new_slave do
|
329
333
|
cnf = "[client]\n"
|
330
334
|
cnf << "host = localhost\n"
|
331
335
|
cnf << "user = root\n"
|
@@ -336,7 +340,7 @@ namespace :vlad do
|
|
336
340
|
scp "/tmp/my.cnf.#{target_host}", ".my.cnf"
|
337
341
|
end
|
338
342
|
|
339
|
-
remote_task :remove_dot_my_cnf, :roles => :
|
343
|
+
remote_task :remove_dot_my_cnf, :roles => :new_slave do
|
340
344
|
`rm /tmp/my.cnf.#{target_host}; exit 0`
|
341
345
|
run "rm -f .my.cnf; exit 0"
|
342
346
|
end
|
data/lib/vlad/enterprising.rb
CHANGED
@@ -2,9 +2,9 @@ require 'vlad'
|
|
2
2
|
require 'vlad/translator'
|
3
3
|
require 'vlad/environmentalist'
|
4
4
|
require 'vlad/xen_master'
|
5
|
-
require 'vlad/dba
|
5
|
+
require 'vlad/dba'
|
6
6
|
require 'vlad/webmaster/apache'
|
7
|
-
VLAD_ENTERPRISING_VERSION = '0.1.
|
7
|
+
VLAD_ENTERPRISING_VERSION = '0.1.6' unless defined? VLAD_ENTERPRISING_VERSION
|
8
8
|
|
9
9
|
|
10
10
|
# rsync the given files to <tt>target_host</tt>.
|
@@ -10,23 +10,27 @@ namespace :vlad do
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
if target
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
13
|
+
unless defined? TARGET_PARSED
|
14
|
+
if target
|
15
|
+
if target.to_s.match(/([a-z0-9_-]+):([a-z0-9_-]+)/i)
|
16
|
+
f = File.join( 'config', 'environments', "#{$1}.rb")
|
17
|
+
set(:target_environment, "#{$1}".to_sym)
|
18
|
+
Kernel.load f if File.exists? f
|
19
|
+
f = File.join('config', 'environments', "#{$1}", "#{$2}.rb")
|
20
|
+
set(:target_subset, "#{$2}".to_sym)
|
21
|
+
Kernel.load f if File.exists? f
|
22
|
+
elsif target.to_s.match(/([a-z0-9_-]+)/i)
|
23
|
+
f = File.join('config', 'environments', "#{$1}.rb")
|
24
|
+
set(:target_environment, $1.to_sym)
|
25
|
+
Kernel.load f if File.exists? f
|
26
|
+
all_files = Dir.glob( File.join( "config", "environments", $1, "*.rb") )
|
27
|
+
all_files.each do |f|
|
28
|
+
Kernel.load f
|
29
|
+
end
|
28
30
|
end
|
29
31
|
end
|
32
|
+
TARGET_PARSED = true
|
30
33
|
end
|
31
34
|
|
32
35
|
|
36
|
+
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|