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 +5 -0
- data/lib/composer/cli.rb +8 -3
- data/lib/composer/compose.rb +10 -2
- data/lib/composer/deploy/heirloom.rb +3 -1
- data/lib/composer/deploy/stack.rb +3 -2
- data/lib/composer/exceptions.rb +3 -0
- data/lib/composer/verify.rb +1 -0
- data/lib/composer/verify/secret.rb +22 -0
- data/lib/composer/version.rb +1 -1
- data/spec/compose_spec.rb +4 -2
- metadata +11 -10
data/CHANGELOG
CHANGED
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("
|
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("
|
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!
|
data/lib/composer/compose.rb
CHANGED
@@ -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/
|
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
|
data/lib/composer/exceptions.rb
CHANGED
data/lib/composer/verify.rb
CHANGED
@@ -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
|
data/lib/composer/version.rb
CHANGED
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.
|
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
|
+
date: 2012-12-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
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: *
|
24
|
+
version_requirements: *70179448305860
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
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: *
|
35
|
+
version_requirements: *70179448305180
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: aws-sdk
|
38
|
-
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: *
|
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: -
|
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: -
|
112
|
+
hash: -3287206967553428281
|
112
113
|
requirements: []
|
113
114
|
rubyforge_project:
|
114
115
|
rubygems_version: 1.8.16
|