dploy 0.0.2 → 0.0.4
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/lib/dploy/deployer.rb +24 -32
- data/lib/dploy/logger.rb +9 -10
- data/lib/dploy/version.rb +1 -1
- data/ubuntu@dploy.internal.stylesaint.com +0 -0
- metadata +6 -5
data/lib/dploy/deployer.rb
CHANGED
@@ -5,64 +5,56 @@ require 'dploy/logger'
|
|
5
5
|
require 'dploy/shell_command'
|
6
6
|
|
7
7
|
module Dploy
|
8
|
-
|
9
8
|
class Deployer
|
10
|
-
|
11
|
-
attr_accessor :deploy_data
|
12
|
-
|
9
|
+
|
13
10
|
def initialize(deploy_data)
|
14
|
-
|
15
|
-
@deploy_data = deploy_data
|
16
|
-
|
11
|
+
@deploy_data = deploy_data
|
17
12
|
@ec2 = EC2Client.new(
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
DPLOY_CONFIG['ec2_access_key_id'],
|
14
|
+
DPLOY_CONFIG['ec2_access_key'],
|
15
|
+
DPLOY_CONFIG['ec2_endpoint'])
|
22
16
|
@chef = ChefClient.new(
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
17
|
+
DPLOY_CONFIG['chef_api_url'],
|
18
|
+
DPLOY_CONFIG['chef_api_user'],
|
19
|
+
DPLOY_CONFIG['chef_api_key'])
|
20
|
+
|
28
21
|
#TODO validate deploy data
|
29
|
-
|
22
|
+
|
30
23
|
@deploy_data[:id] = "#{@deploy_data[:project]}-#{@deploy_data[:environment]}-#{@deploy_data[:version].gsub('.','-')}-#{Time.now.to_i}"
|
31
|
-
|
24
|
+
@log = Dploy::Logger.new(DPLOY_CONFIG['mongo_server'], @deploy_data[:id])
|
32
25
|
end
|
33
|
-
|
26
|
+
|
34
27
|
def deploy()
|
35
28
|
begin
|
36
29
|
#Get Instances
|
37
30
|
search_tags = { 'project' => @deploy_data[:project], 'environment' => @deploy_data[:environment] }
|
38
|
-
|
39
|
-
|
31
|
+
@log.debug("Searching For EC2 Instances")
|
32
|
+
@log.debug("Search tags: #{search_tags}")
|
40
33
|
instances = @ec2.get_instances_by_tags(search_tags)
|
41
34
|
@log.debug("#{instances.count} matching instances found")
|
42
|
-
|
35
|
+
|
43
36
|
instances.each do |instance|
|
44
|
-
|
37
|
+
|
45
38
|
@log.debug("Starting deploy for instance: #{instance.id}")
|
46
39
|
#TODO Remove from LB
|
47
|
-
|
40
|
+
|
48
41
|
#update chef node
|
49
42
|
node_name = "#{@deploy_data[:environment]}-#{@deploy_data[:project]}-#{instance.id}"
|
50
43
|
@log.debug("Updating chef node: #{node_name}")
|
51
44
|
attributes = { :dploy => { :target_version => @deploy_data[:version], :status => 'deploying' } }
|
52
45
|
@chef.update_node_attributes(node_name, attributes)
|
53
|
-
|
46
|
+
|
54
47
|
#Run Chef client
|
55
48
|
@log.debug("Running Chef Client for #{node_name} (#{instance.dns_name})")
|
56
49
|
ShellCmd.run("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i #{DPLOY_CONFIG['ec2_ssh_key_path']} ubuntu@#{instance.dns_name} sudo chef-client", @deploy_data[:id])
|
57
|
-
|
50
|
+
|
58
51
|
#TODO Test
|
52
|
+
|
53
|
+
end
|
59
54
|
rescue Exception
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
55
|
+
@log.error($!)
|
56
|
+
end
|
57
|
+
end
|
65
58
|
end
|
66
|
-
|
67
59
|
end
|
68
60
|
|
data/lib/dploy/logger.rb
CHANGED
@@ -3,35 +3,34 @@ require 'mongo'
|
|
3
3
|
module Dploy
|
4
4
|
|
5
5
|
class Logger
|
6
|
-
|
7
|
-
def
|
8
|
-
|
6
|
+
|
7
|
+
def initialize(mongo_host, deploy_id)
|
8
|
+
@log = Mongo::Connection.new(mongo_host).db('log')[deploy_id]
|
9
9
|
end
|
10
|
-
|
11
10
|
private :log
|
12
|
-
def log(message, meta_data )
|
11
|
+
def log(message, meta_data = {} )
|
13
12
|
@log.insert({:meta_data => meta_data, :message => message})
|
14
13
|
end
|
15
|
-
|
14
|
+
|
16
15
|
def debug(message, meta_data = {})
|
17
16
|
meta_data.merge({:log_type => 'debug' })
|
18
17
|
log(message, metadata)
|
19
18
|
end
|
20
|
-
|
19
|
+
|
21
20
|
def error(message, meta_data = {})
|
22
21
|
meta_data.merge({:log_type => 'debug' })
|
23
22
|
log(message, metadata)
|
24
23
|
end
|
25
|
-
|
24
|
+
|
26
25
|
def completion(message, meta_data = {})
|
27
26
|
meta_data.merge({:log_type => 'debug' })
|
28
27
|
log(message, metadata)
|
29
28
|
end
|
30
29
|
|
31
30
|
def get_messages(collection, start_id = "000000000000000000000000")
|
32
|
-
|
31
|
+
@log.find(:_id => {"$gt" => BSON::ObjectId(start_id)}).map {|row| row}
|
33
32
|
end
|
34
|
-
|
33
|
+
|
35
34
|
end
|
36
35
|
|
37
36
|
end
|
data/lib/dploy/version.rb
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-11-04 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk
|
16
|
-
requirement: &
|
16
|
+
requirement: &9448920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *9448920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: chef
|
27
|
-
requirement: &
|
27
|
+
requirement: &9448500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *9448500
|
36
36
|
description: deploymoent module for chef and aws
|
37
37
|
email:
|
38
38
|
- james@stylesaint.com
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- lib/dploy/logger.rb
|
55
55
|
- lib/dploy/shell_command.rb
|
56
56
|
- lib/dploy/version.rb
|
57
|
+
- ubuntu@dploy.internal.stylesaint.com
|
57
58
|
homepage: ''
|
58
59
|
licenses: []
|
59
60
|
post_install_message:
|