composer 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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