mondupe 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/mondupe +3 -2
- data/lib/mondupe.rb +8 -11
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7d703857e8d7c12215b8cbb9bb707777fc7c6d7
|
4
|
+
data.tar.gz: f1c44d57c2d7d8acc440cd67d2da43efd6214b73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a1bd390cece32936cc9dc0f8f5f7305b3933f143ab92184b99928c428d8634910260633155a82fb4fe869d618721402d9322507a0c4a4d5c1865e88a6f59d20
|
7
|
+
data.tar.gz: 9008e32d33169ac451c15d97b0b976dc6df9cf015cfa6f138b7b9c0d8262e59f47546a155bf8a77809f58e1d491407af8ba944768452c2ffb6316c50e89d9bd0
|
data/bin/mondupe
CHANGED
@@ -113,6 +113,7 @@ key_pair_name = ENV['MONDUPE_KEY_PAIR_NAME'] || nil
|
|
113
113
|
security_group = ENV['MONDUPE_SECURITY_GROUP'] || nil
|
114
114
|
s3_bucket_name = ENV['MONDUPE_S3_BUCKET_NAME'] || nil
|
115
115
|
dump_file_name = ENV['MONDUPE_DUMP_FILE_NAME'] || 'mongodb.dump.tgz'
|
116
|
+
knife_exec = ENV['MONDUPE_KNIFE_EXEC'] || 'knife'
|
116
117
|
instance_volume_size = 60
|
117
118
|
|
118
119
|
case ARGV[0]
|
@@ -122,7 +123,7 @@ when "create"
|
|
122
123
|
puts "Creating AWS EC2 Instance with MongoDB and restoring from latest production backup"
|
123
124
|
instance = Mondupe.new.create_instance(instance_name, instance_image_id, instance_type, instance_count, security_group, key_pair_name, expire_days, instance_owner, instance_volume_size)
|
124
125
|
Mondupe.new.create_dns(instance_fqdn, route53_domain, instance)
|
125
|
-
Mondupe.new.bootstrap(instance_name, instance_fqdn, instance.ip_address, chef_environment, chef_identity_file, chef_run_list, ssh_user)
|
126
|
+
Mondupe.new.bootstrap(instance_name, instance_fqdn, instance.ip_address, chef_environment, chef_identity_file, chef_run_list, ssh_user, knife_exec)
|
126
127
|
Mondupe.new.get_db_dump_from_s3(instance.ip_address, s3_bucket_name, dump_tmp_path, ssh_user, dump_file_name)
|
127
128
|
Mondupe.new.restore_db(instance.ip_address, dump_tmp_path, ssh_key, ssh_user, dump_file_name)
|
128
129
|
puts " - - - Total Run Time: #{((total_seconds % 3600) / 60).to_i}m #{((total_seconds % 3600) % 60).to_i}s - - -"
|
@@ -131,7 +132,7 @@ when "delete"
|
|
131
132
|
when "bootstrap"
|
132
133
|
puts "bootstrapping node"
|
133
134
|
# Find the instance and create the instance object here
|
134
|
-
Mondupe.new.bootstrap(instance_name, instance_fqdn, instance_ipaddress, chef_environment, chef_identity_file, chef_run_list, ssh_user)
|
135
|
+
Mondupe.new.bootstrap(instance_name, instance_fqdn, instance_ipaddress, chef_environment, chef_identity_file, chef_run_list, ssh_user, knife_exec)
|
135
136
|
when "dumps3"
|
136
137
|
puts "getting dump"
|
137
138
|
Mondupe.new.get_db_dump_from_s3(instance_ipaddress, s3_bucket_name, dump_tmp_path, ssh_user, dump_file_name)
|
data/lib/mondupe.rb
CHANGED
@@ -4,12 +4,9 @@ require 'aws-sdk'
|
|
4
4
|
|
5
5
|
class Mondupe
|
6
6
|
def create_instance(instance_name, instance_image_id, instance_type, instance_count, security_group, key_pair_name, expire_days, instance_owner, instance_volume_size)
|
7
|
-
AWS.config(:access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], region: 'us-east-1')
|
7
|
+
#AWS.config(:access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], region: 'us-east-1')
|
8
8
|
|
9
9
|
ec2 = AWS::EC2.new(:access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'])
|
10
|
-
|
11
|
-
puts "Creating with - Security Group: #{security_group} Instance Owner: #{instance_owner}"
|
12
|
-
|
13
10
|
key_pair = ec2.key_pairs[key_pair_name]
|
14
11
|
|
15
12
|
# Use this to create a new security group - Can have preset options
|
@@ -27,7 +24,7 @@ class Mondupe
|
|
27
24
|
}],
|
28
25
|
:instance_type => instance_type,
|
29
26
|
:count => instance_count,
|
30
|
-
:security_groups => security_group,
|
27
|
+
:security_groups => [ security_group ],
|
31
28
|
:key_pair => key_pair
|
32
29
|
)
|
33
30
|
|
@@ -90,13 +87,13 @@ class Mondupe
|
|
90
87
|
end
|
91
88
|
|
92
89
|
|
93
|
-
def bootstrap(instance_name, instance_fqdn, instance_ipaddress, chef_environment, chef_identity_file, chef_run_list, ssh_user)
|
90
|
+
def bootstrap(instance_name, instance_fqdn, instance_ipaddress, chef_environment, chef_identity_file, chef_run_list, ssh_user, knife_exec)
|
94
91
|
# Bootstrap the new instance with chef
|
95
92
|
puts "Bootstraping node with Chef..."
|
96
93
|
puts "Running..."
|
97
|
-
puts "
|
94
|
+
#puts "#{knife_exec} bootstrap #{instance_ipaddress} -N #{instance_fqdn[0...-1]} -E #{chef_environment} -i #{chef_identity_file} -r #{chef_run_list} -x #{ssh_user} --sudo"
|
98
95
|
sleep 30
|
99
|
-
system("
|
96
|
+
system("#{knife_exec} bootstrap #{instance_ipaddress} -N #{instance_fqdn[0...-1]} -E #{chef_environment} -i #{chef_identity_file} -r #{chef_run_list} -x #{ssh_user} --sudo")
|
100
97
|
end
|
101
98
|
|
102
99
|
def get_db_dump_from_s3(instance_ip, s3_bucket_name, dump_tmp_path, ssh_user, dump_file_name)
|
@@ -117,11 +114,11 @@ class Mondupe
|
|
117
114
|
# TODO - Fail the process if any step fails
|
118
115
|
puts "#{Time.now.to_s} - Dropping existing database"
|
119
116
|
`ssh -i #{ssh_key} #{ssh_user}@#{instance_ip} "echo 'db.dropDatabase()' | mongo cde_production"`
|
120
|
-
puts "#{Time.now.to_s} - Database drop complete"
|
117
|
+
if $?.success? then puts "#{Time.now.to_s} - Database drop complete" else die("Error dropping database") end
|
121
118
|
puts "Restoring Mongo Database from extracted dump: #{File.join(dump_tmp_path, "cde_production")}"
|
122
|
-
`ssh -i #{ssh_key} #{ssh_user}@#{instance_ip} "cd
|
119
|
+
`ssh -i #{ssh_key} #{ssh_user}@#{instance_ip} "cd #{dump_tmp_path}; tar xf #{dump_file_name}; time mongorestore /tmp/cde_production"`
|
123
120
|
puts "Removing database archive file"
|
124
|
-
`ssh -i #{ssh_key} #{ssh_user}@#{instance_ip} "rm -rf
|
121
|
+
`ssh -i #{ssh_key} #{ssh_user}@#{instance_ip} "rm -rf #{File.join(dump_tmp_path, dump_file_name)}"`
|
125
122
|
puts "#{Time.now.to_s} - Removing saved searches"
|
126
123
|
`ssh -i #{ssh_key} #{ssh_user}@#{instance_ip} "mongo cde_production --eval \\"db.users.update({save_searches: {$ne: null}}, {$unset: {save_searches: ''}}, {multi: true})\\""`
|
127
124
|
puts "#{Time.now.to_s} - Cleaning up our mess..."
|