simple_deploy 0.2.1 → 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/README.md CHANGED
@@ -13,32 +13,27 @@ Create a file **~/.simple_deploy.yml** and include within it:
13
13
 
14
14
  ```
15
15
  deploy:
16
- keys: PATH_TO_PRIVATE_KEY
17
- user: ec2-user
16
+ gateway: GATEWAY_TO_YOUR_VPC
18
17
  artifacts:
18
+ - name: live_community_chef_repo
19
+ bucket_prefix: intu-lc
20
+ variable: CHEF_REPO_URL
21
+ cloud_formation_url: ChefRepoURL
22
+ - name: live_community
23
+ bucket_prefix: intu-lc
24
+ variable: APP_URL
25
+ cloud_formation_url: AppArtifactURL
19
26
  - name: cookbooks
20
- bucket_prefix: artifacts
21
- endpoint: http
27
+ bucket_prefix: intu-artifacts
22
28
  variable: COOKBOOKS_URL
23
- script: /opt/admin/bin/deploy.sh
29
+ cloud_formation_url: CookbooksURL
30
+ script: /opt/intu/admin/bin/configure.sh
24
31
 
25
32
  environments:
26
- preprod_us_west_1:
33
+ preprod_shared_us_west_1:
27
34
  access_key: XXX
28
- secret_key: XXX
35
+ secret_key: yyy
29
36
  region: us-west-1
30
- prod_us_west_1:
31
- access_key: YYY
32
- secret_key: YYY
33
- region: us-west-1
34
- preprod_us_east_1:
35
- access_key: XXX
36
- secret_key: XXX
37
- region: us-east-1
38
- prod_us_east_1:
39
- access_key: YYY
40
- secret_key: YYY
41
- region: us-east-1
42
37
  ```
43
38
 
44
39
  Commands
@@ -2,9 +2,12 @@ module SimpleDeploy
2
2
  module CLI
3
3
  def self.attributes
4
4
  attrs = []
5
+ puts "Read the following attributes:"
5
6
  read_attributes.each do |attribs|
6
- a = attribs.split('=')
7
- attrs << { a.first.gsub(/\s+/, "") => a.last }
7
+ key = attribs.split('=').first.gsub(/\s+/, "")
8
+ value = attribs.gsub(/^.+?=/, '')
9
+ puts "#{key} : #{value}"
10
+ attrs << { key => value }
8
11
  end
9
12
  attrs
10
13
  end
@@ -1,7 +1,7 @@
1
1
  module SimpleDeploy
2
2
  class Config
3
3
 
4
- attr_accessor :config
4
+ attr_accessor :config, :logger
5
5
 
6
6
  def initialize
7
7
  load_config_file
@@ -17,11 +17,15 @@ module SimpleDeploy
17
17
  end
18
18
 
19
19
  def keys
20
- config['deploy']['keys']
20
+ config['deploy']['keys'] ||= "#{env_home}/.ssh/id_rsa"
21
+ end
22
+
23
+ def gateway
24
+ config['deploy']['gateway']
21
25
  end
22
26
 
23
27
  def user
24
- config['deploy']['user']
28
+ config['deploy']['user'] ||= "#{env_user}"
25
29
  end
26
30
 
27
31
  def deploy_script
@@ -44,5 +48,15 @@ module SimpleDeploy
44
48
  config['artifact_repository']
45
49
  end
46
50
 
51
+ private
52
+
53
+ def env_home
54
+ ENV['HOME']
55
+ end
56
+
57
+ def env_user
58
+ ENV['USER']
59
+ end
60
+
47
61
  end
48
62
  end
@@ -8,6 +8,7 @@ module SimpleDeploy
8
8
  @instances = args[:instances]
9
9
  @environment = args[:environment]
10
10
  @attributes = args[:attributes]
11
+ @logger = @config.logger
11
12
 
12
13
  @region = @config.region(@environment)
13
14
  @deploy_script = @config.deploy_script
@@ -17,6 +18,7 @@ module SimpleDeploy
17
18
  end
18
19
 
19
20
  def execute
21
+ @logger.info 'Starting Deployment.'
20
22
  @deployment.simpledeploy
21
23
  end
22
24
 
@@ -29,6 +31,7 @@ module SimpleDeploy
29
31
  end
30
32
  cmd += @deploy_script
31
33
 
34
+ @logger.info "Executing '#{cmd}.'"
32
35
  @deployment.load :string => "task :simpledeploy do
33
36
  sudo '#{cmd}'
34
37
  end"
@@ -38,7 +41,7 @@ module SimpleDeploy
38
41
  h = {}
39
42
  @config.artifacts.each do |a|
40
43
  name = a['name']
41
- endpoint = a['endpoint']
44
+ endpoint = a['endpoint'] ||= 's3'
42
45
  variable = a['variable']
43
46
  bucket_prefix = a['bucket_prefix']
44
47
 
@@ -53,6 +56,7 @@ module SimpleDeploy
53
56
  end
54
57
 
55
58
  def ssh_options
59
+ @logger.info "Setting key to #{@config.keys}." if @config.keys
56
60
  {
57
61
  :keys => @config.keys,
58
62
  :paranoid => false
@@ -61,9 +65,18 @@ module SimpleDeploy
61
65
 
62
66
  def create_deployment
63
67
  @deployment = Capistrano::Configuration.new
64
- @deployment.set :user, @config.user
68
+ if @config.user
69
+ @logger.info "Setting user to #{@config.user}."
70
+ @deployment.set :user, @config.user
71
+ end
72
+ @deployment.set :gateway, @config.gateway if @config.gateway
65
73
  @deployment.variables[:ssh_options] = ssh_options
66
- @instances.each { |i| @deployment.server i, :instances }
74
+ @logger.info "Proxying via gateway #{@config.gateway}."
75
+
76
+ @instances.each do |i|
77
+ @logger.info "Adding instance #{i}."
78
+ @deployment.server i, :instances
79
+ end
67
80
  end
68
81
  end
69
82
  end
@@ -0,0 +1,21 @@
1
+ module SimpleDeploy
2
+ class SimpleDeployLogger
3
+
4
+ def initialize(args = {})
5
+ @logger = args[:logger] ||= Logger.new(STDOUT)
6
+
7
+ unless args[:logger]
8
+ @logger.datetime_format = "%Y-%m-%d %H:%M:%S"
9
+ @logger.formatter = proc do |severity, datetime, progname, msg|
10
+ "#{datetime}: #{msg}\n"
11
+ end
12
+ end
13
+
14
+ @logger
15
+ end
16
+
17
+ def info(msg)
18
+ @logger.info msg
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,48 @@
1
+ module SimpleDeploy
2
+ class StackAttributeFormater
3
+
4
+ def initialize(args)
5
+ @attributes = args[:attributes]
6
+ @config = args[:config]
7
+ @environment = args[:environment]
8
+ @region = @config.region @environment
9
+ @logger = @config.logger
10
+ end
11
+
12
+ def updated_attributes
13
+ updates = []
14
+ @attributes.each do |attribute|
15
+ key = attribute.keys.first
16
+ if artifact_names.include? key
17
+ updates << cloud_formation_url(attribute)
18
+ @logger.info "Adding artifact attribute: #{cloud_formation_url(attribute)}"
19
+ end
20
+ end
21
+ @attributes + updates
22
+ end
23
+
24
+ def artifact_names
25
+ @config.artifacts.map {|i| i['name']}
26
+ end
27
+
28
+ def cloud_formation_url attribute
29
+ name = attribute.keys.first
30
+ id = attribute[name]
31
+ a = @config.artifacts.select { |a| a['name'] == name }.first
32
+
33
+ endpoint = a['endpoint'] ||= 's3'
34
+ variable = a['variable']
35
+ bucket_prefix = a['bucket_prefix']
36
+ cloud_formation_url = a['cloud_formation_url']
37
+
38
+ artifact = Artifact.new :name => name,
39
+ :id => id,
40
+ :region => @region,
41
+ :config => @config,
42
+ :bucket_prefix => bucket_prefix
43
+
44
+ { cloud_formation_url => artifact.endpoints[endpoint] }
45
+ end
46
+
47
+ end
48
+ end
@@ -1,6 +1,7 @@
1
1
  require 'stackster'
2
2
  require 'simple_deploy/stack/stack_reader'
3
3
  require 'simple_deploy/stack/stack_lister'
4
+ require 'simple_deploy/stack/stack_attribute_formater'
4
5
 
5
6
  module SimpleDeploy
6
7
  class Stack
@@ -9,6 +10,7 @@ module SimpleDeploy
9
10
  @environment = args[:environment]
10
11
  @name = args[:name]
11
12
  @config = Config.new
13
+ @config.logger = SimpleDeployLogger.new
12
14
  end
13
15
 
14
16
  def self.list(args)
@@ -16,12 +18,18 @@ module SimpleDeploy
16
18
  end
17
19
 
18
20
  def create(args)
19
- stack.create :attributes => args[:attributes],
21
+ saf = StackAttributeFormater.new(:attributes => args[:attributes],
22
+ :config => @config,
23
+ :environment => @environment)
24
+ stack.create :attributes => saf.updated_attributes,
20
25
  :template => args[:template]
21
26
  end
22
27
 
23
28
  def update(args)
24
- stack.update :attributes => args[:attributes]
29
+ saf = StackAttributeFormater.new(:attributes => args[:attributes],
30
+ :config => @config,
31
+ :environment => @environment)
32
+ stack.update :attributes => saf.updated_attributes
25
33
  end
26
34
 
27
35
  def deploy
@@ -49,7 +57,7 @@ module SimpleDeploy
49
57
  end
50
58
 
51
59
  def instances
52
- stack.instances_public_ip_addresses
60
+ stack.instances_private_ip_addresses
53
61
  end
54
62
 
55
63
  def status
@@ -1,3 +1,3 @@
1
1
  module SimpleDeploy
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/lib/simple_deploy.rb CHANGED
@@ -2,4 +2,5 @@ require 'simple_deploy/config'
2
2
  require 'simple_deploy/artifact'
3
3
  require 'simple_deploy/stack'
4
4
  require 'simple_deploy/deployment'
5
+ require 'simple_deploy/logger'
5
6
  require 'simple_deploy/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-21 00:00:00.000000000 Z
12
+ date: 2012-06-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70224683751920 !ruby/object:Gem::Requirement
16
+ requirement: &70197676003120 !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: :development
23
23
  prerelease: false
24
- version_requirements: *70224683751920
24
+ version_requirements: *70197676003120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capistrano
27
- requirement: &70224683751260 !ruby/object:Gem::Requirement
27
+ requirement: &70197676002640 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70224683751260
35
+ version_requirements: *70197676002640
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: stackster
38
- requirement: &70224683750140 !ruby/object:Gem::Requirement
38
+ requirement: &70197676002080 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.1.2
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70224683750140
46
+ version_requirements: *70197676002080
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: trollop
49
- requirement: &70224683749380 !ruby/object:Gem::Requirement
49
+ requirement: &70197676001540 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70224683749380
57
+ version_requirements: *70197676001540
58
58
  description: I am designed to deploy artifacts uploaded by Heirloom
59
59
  email:
60
60
  - brett@weav.net
@@ -76,7 +76,9 @@ files:
76
76
  - lib/simple_deploy/cli/variables.rb
77
77
  - lib/simple_deploy/config.rb
78
78
  - lib/simple_deploy/deployment.rb
79
+ - lib/simple_deploy/logger.rb
79
80
  - lib/simple_deploy/stack.rb
81
+ - lib/simple_deploy/stack/stack_attribute_formater.rb
80
82
  - lib/simple_deploy/stack/stack_lister.rb
81
83
  - lib/simple_deploy/stack/stack_reader.rb
82
84
  - lib/simple_deploy/version.rb
@@ -98,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
100
  version: '0'
99
101
  segments:
100
102
  - 0
101
- hash: -3725953430508665187
103
+ hash: 3779767158902072775
102
104
  required_rubygems_version: !ruby/object:Gem::Requirement
103
105
  none: false
104
106
  requirements:
@@ -107,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
109
  version: '0'
108
110
  segments:
109
111
  - 0
110
- hash: -3725953430508665187
112
+ hash: 3779767158902072775
111
113
  requirements: []
112
114
  rubyforge_project: simple_deploy
113
115
  rubygems_version: 1.8.16