composer 0.0.3 → 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/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.0.4:
2
+
3
+ * Encrypt chef-repo and app by default
4
+ * Passes in key to simple_deploy
5
+
1
6
  ## 0.0.3:
2
7
 
3
8
  * Re-releasing after bunk build
data/lib/composer/cli.rb CHANGED
@@ -17,7 +17,8 @@ module Composer
17
17
  compose = Compose.new :config => @config,
18
18
  :name => @opts[:name],
19
19
  :key => @opts[:key],
20
- :directory => @opts[:directory] ||= '.'
20
+ :directory => @opts[:directory] ||= '.',
21
+ :secret => @opts[:secret]
21
22
  begin
22
23
  compose.check
23
24
  compose.run
@@ -69,15 +70,19 @@ module Composer
69
70
  options[:name] = n
70
71
  end
71
72
 
73
+ opts.on("-s", "--secret [SECRET]", "Encryption secret.") do |s|
74
+ options[:secret] = s
75
+ end
76
+
72
77
  opts.on("-r", "--region [REGION]", "Deployment Region.") do |r|
73
78
  options[:region] = r
74
79
  end
75
80
 
76
- opts.on("-a", "--aws-access-key [AWS_ACCESS_KEY]", "AWS Access Key.") do |a|
81
+ opts.on("--aws-access-key [AWS_ACCESS_KEY]", "AWS Access Key.") do |a|
77
82
  options[:aws_access_key] = a
78
83
  end
79
84
 
80
- opts.on("-s", "--aws-secret-key [AWS_SECRET_KEY]", "AWS Secret Key.") do |s|
85
+ opts.on("--aws-secret-key [AWS_SECRET_KEY]", "AWS Secret Key.") do |s|
81
86
  options[:aws_secret_key] = s
82
87
  end
83
88
  end.parse!
@@ -6,6 +6,7 @@ module Composer
6
6
  @key = args[:key]
7
7
  @directory = args[:directory]
8
8
  @config = args[:config]
9
+ @secret = args[:secret]
9
10
  end
10
11
 
11
12
  def check
@@ -13,6 +14,7 @@ module Composer
13
14
  verify_config.verify_simple_deploy
14
15
  verify_config.verify_heirloom
15
16
  verify_name.verify :name => @name
17
+ verify_secret.verify :secret => @secret
16
18
  verify_key.verify :key => @key
17
19
  verify_directory.verify :directory => @directory
18
20
  verify_region.verify
@@ -22,10 +24,12 @@ module Composer
22
24
  setup_heirloom.setup :name => @name
23
25
  setup_simple_deploy.setup
24
26
  deploy_heirloom.upload :directory => @directory,
25
- :name => @name
27
+ :name => @name,
28
+ :secret => @secret
26
29
  deploy_stack.create :key => @key,
27
30
  :name => @name,
28
- :directory => @directory
31
+ :directory => @directory,
32
+ :secret => @secret
29
33
  end
30
34
 
31
35
  private
@@ -42,6 +46,10 @@ module Composer
42
46
  @verify_name ||= Verify::Name.new :config => @config
43
47
  end
44
48
 
49
+ def verify_secret
50
+ @verify_secret ||= Verify::Secret.new :config => @config
51
+ end
52
+
45
53
  def verify_key
46
54
  @verify_key ||= Verify::Key.new :config => @config
47
55
  end
@@ -8,8 +8,9 @@ module Composer
8
8
 
9
9
  def upload(args)
10
10
  @directory = args[:directory]
11
- @name = args[:name]
12
11
  @force = args[:force]
12
+ @name = args[:name]
13
+ @secret = args[:secret]
13
14
 
14
15
  ["chef-repo", "app"].each do |heirloom|
15
16
  upload_heirloom heirloom
@@ -21,6 +22,7 @@ module Composer
21
22
  def upload_heirloom(heirloom)
22
23
  directory_to_upload = "#{@directory}/#{heirloom}"
23
24
  command = "heirloom upload -d #{directory_to_upload} -n #{@name}-#{heirloom} -i v1.0.0"
25
+ command << " -s #{@secret}" if @secret
24
26
  @logger.info "Uploading Heirloom: '#{@name}-#{heirloom}'"
25
27
  @logger.debug "Executing: `#{command}`"
26
28
  output = `#{command}`
@@ -9,17 +9,18 @@ module Composer
9
9
  directory = args[:directory]
10
10
  key = args[:key]
11
11
  name = args[:name]
12
+ secret = args[:secret]
12
13
 
13
14
  app_version = 'v1.0.0'
14
15
  chef_version = 'v1.0.0'
15
16
  environment_secret = 'password'
16
17
  environment = 'default'
17
- template = "#{directory}/cloud-formation-templates/examples/classic/asg_with_cpu_scaling_policies.json"
18
+ template = "#{directory}/cloud-formation-templates/examples/classic/asg.json"
18
19
 
19
20
  puts ""
20
21
  puts "Deploy Example Stack:"
21
22
  puts ""
22
- puts "simple_deploy create -e #{environment} -n #{name} -t #{template} -a AppName=#{name} -a EnvironmentSecret=#{environment_secret} -a KeyName=#{key} -a app=#{app_version} -a chef_repo=#{chef_version} -a app_domain=#{name}-app -a chef_repo_domain=#{name}-chef-repo -a app_bucket_prefix=#{name} -a chef_repo_bucket_prefix=#{name}"
23
+ puts "simple_deploy create -e #{environment} -n #{name} -t #{template} -a AppName=#{name} -a EnvironmentSecret=#{environment_secret} -a KeyName=#{key} -a AppSecret=#{secret} -a ChefRepoSecret=#{secret} -a app=#{app_version} -a chef_repo=#{chef_version} -a app_domain=#{name}-app -a chef_repo_domain=#{name}-chef-repo -a app_bucket_prefix=#{name} -a chef_repo_bucket_prefix=#{name} -a chef_repo_encrypted=true -a app_encrypted=true"
23
24
  end
24
25
  end
25
26
  end
@@ -19,6 +19,9 @@ module Composer
19
19
  class InvalidRegion < ComposerException
20
20
  end
21
21
 
22
+ class InvalidSecret < ComposerException
23
+ end
24
+
22
25
  class UnsupportedRubyVersion < ComposerException
23
26
  end
24
27
 
@@ -3,6 +3,7 @@ require 'composer/verify/directory'
3
3
  require 'composer/verify/key'
4
4
  require 'composer/verify/config'
5
5
  require 'composer/verify/name'
6
+ require 'composer/verify/secret'
6
7
  require 'composer/verify/region'
7
8
 
8
9
  module Composer
@@ -0,0 +1,22 @@
1
+ module Composer
2
+ module Verify
3
+ class Secret
4
+
5
+ def initialize(args)
6
+ @config = args[:config]
7
+ @logger = @config.logger
8
+ end
9
+
10
+ def verify(args)
11
+ secret = args[:secret]
12
+
13
+ if secret.length < 8
14
+ raise InvalidSecret.new "'#{secret}' must be at least 8 characters"
15
+ end
16
+
17
+ @logger.info "Application secret '#{secret}' is valid."
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Composer
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/spec/compose_spec.rb CHANGED
@@ -2,11 +2,12 @@ require 'spec_helper.rb'
2
2
 
3
3
  describe Composer::Compose do
4
4
  before do
5
- @logger_stub = stub 'logger'
5
+ @logger_stub = stub 'logger', :debug => true, :info => true
6
6
  @config_stub = stub 'config', :logger => @logger_stub
7
7
 
8
8
  @compose = Composer::Compose.new :name => 'name',
9
9
  :key => 'key',
10
+ :secret => 'test1234',
10
11
  :directory => '/tmp/dir',
11
12
  :config => @config_stub
12
13
  end
@@ -51,7 +52,8 @@ describe Composer::Compose do
51
52
  Composer::Deploy::Heirloom.stub :new => @deploy_heirloom_mock
52
53
  @deploy_heirloom_mock.should_receive(:upload).
53
54
  with(:directory => '/tmp/dir',
54
- :name => 'name')
55
+ :name => 'name',
56
+ :secret => 'test1234')
55
57
 
56
58
  @deploy_stack_mock = mock 'deploy_stack'
57
59
  Composer::Deploy::Stack.stub :new => @deploy_stack_mock
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: composer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
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-12-12 00:00:00.000000000 Z
12
+ date: 2012-12-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70126851371460 !ruby/object:Gem::Requirement
16
+ requirement: &70179448305860 !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: *70126851371460
24
+ version_requirements: *70179448305860
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70126851370780 !ruby/object:Gem::Requirement
27
+ requirement: &70179448305180 !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: :development
34
34
  prerelease: false
35
- version_requirements: *70126851370780
35
+ version_requirements: *70179448305180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: aws-sdk
38
- requirement: &70126851369700 !ruby/object:Gem::Requirement
38
+ requirement: &70179448304120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 1.7.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70126851369700
46
+ version_requirements: *70179448304120
47
47
  description: I deploy and manage AWS resources.
48
48
  email:
49
49
  - brett@weav.net
@@ -82,6 +82,7 @@ files:
82
82
  - lib/composer/verify/name.rb
83
83
  - lib/composer/verify/region.rb
84
84
  - lib/composer/verify/ruby.rb
85
+ - lib/composer/verify/secret.rb
85
86
  - lib/composer/version.rb
86
87
  - spec/compose_spec.rb
87
88
  - spec/spec_helper.rb
@@ -99,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
99
100
  version: '0'
100
101
  segments:
101
102
  - 0
102
- hash: -2198825478262304062
103
+ hash: -3287206967553428281
103
104
  required_rubygems_version: !ruby/object:Gem::Requirement
104
105
  none: false
105
106
  requirements:
@@ -108,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
109
  version: '0'
109
110
  segments:
110
111
  - 0
111
- hash: -2198825478262304062
112
+ hash: -3287206967553428281
112
113
  requirements: []
113
114
  rubyforge_project:
114
115
  rubygems_version: 1.8.16