stack_master 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -1
- data/lib/stack_master/sparkle_formation/{user_data_file.rb → template_file.rb} +21 -6
- data/lib/stack_master/template_compilers/sparkle_formation.rb +1 -1
- data/lib/stack_master/version.rb +1 -1
- data/spec/stack_master/sparkle_formation/{user_data_file_spec.rb → template_file_spec.rb} +39 -2
- data/stack_master.gemspec +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a85d9f970dc4d0ab565bef1908fee42dfa1e018a
|
4
|
+
data.tar.gz: adc99ec3388382b0c65630b254c5bfd4d1bfb8b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f961b7bf042713969f1cfcff18da0a1fabf9c674a566fd82be1486f0514ef2792efbf4b96a07d01c9f867c1174bc1bb6ad7036691fda4fa31311c54deae979b1
|
7
|
+
data.tar.gz: 07c708405ab34720c7ed62fdaace92fff09c86dc22bb6817008abc202de6626cdf9e1511085cfd890c2a88605a1efbad758934cc0788d3e5dfc3fdd09d519f28
|
data/README.md
CHANGED
@@ -329,7 +329,7 @@ my_parameter:
|
|
329
329
|
- value2
|
330
330
|
```
|
331
331
|
|
332
|
-
##
|
332
|
+
## ERB Template Files in SparkleFormation templates
|
333
333
|
|
334
334
|
An extension to SparkleFormation is the `user_data_file!` method, which evaluates templates in `templates/user_data/[file_name]`. Most of the usual SparkleFormation methods are available in user data templates. Example:
|
335
335
|
|
@@ -346,6 +346,27 @@ And used like this in SparkleFormation templates:
|
|
346
346
|
user_data user_data_file!('app.erb', role: :worker)
|
347
347
|
```
|
348
348
|
|
349
|
+
You can also use the `joined_file!` method which evaluates templates in `templates/config/[file_name]`. It is similar to `user_data_file!` but doesn't do base64 encoding. Example:
|
350
|
+
|
351
|
+
```
|
352
|
+
# templates/config/someconfig.conf.erb
|
353
|
+
my_variable=<%= ref!(:foo) %>
|
354
|
+
my_other_variable=<%= account_id! %>
|
355
|
+
```
|
356
|
+
|
357
|
+
```
|
358
|
+
# templates/ecs_task.rb
|
359
|
+
container_definitions array!(
|
360
|
+
-> {
|
361
|
+
command array!(
|
362
|
+
"-e",
|
363
|
+
joined_file!('someconfig.conf.erb')
|
364
|
+
)
|
365
|
+
...
|
366
|
+
}
|
367
|
+
)
|
368
|
+
```
|
369
|
+
|
349
370
|
## Commands
|
350
371
|
|
351
372
|
```bash
|
@@ -3,7 +3,7 @@ require 'erubis'
|
|
3
3
|
|
4
4
|
module StackMaster
|
5
5
|
module SparkleFormation
|
6
|
-
|
6
|
+
TemplateFileNotFound = ::Class.new(StandardError)
|
7
7
|
|
8
8
|
class SfEruby < Erubis::Eruby
|
9
9
|
include Erubis::ArrayEnhancer
|
@@ -76,15 +76,28 @@ module StackMaster
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
module
|
80
|
-
def
|
81
|
-
file_path = File.join(::SparkleFormation.sparkle_path,
|
79
|
+
module Template
|
80
|
+
def self.render(prefix, file_name, vars)
|
81
|
+
file_path = File.join(::SparkleFormation.sparkle_path, prefix, file_name)
|
82
82
|
template = File.read(file_path)
|
83
83
|
template_context = TemplateContext.build(vars)
|
84
84
|
compiled_template = SfEruby.new(template).evaluate(template_context)
|
85
|
-
|
85
|
+
CloudFormationLineFormatter.format(compiled_template)
|
86
86
|
rescue Errno::ENOENT => e
|
87
|
-
Kernel.raise
|
87
|
+
Kernel.raise TemplateFileNotFound, "Could not find template file at path: #{file_path}"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
module JoinedFile
|
92
|
+
def _joined_file(file_name, vars = {})
|
93
|
+
join!(Template.render('joined_file', file_name, vars))
|
94
|
+
end
|
95
|
+
alias_method :joined_file!, :_joined_file
|
96
|
+
end
|
97
|
+
|
98
|
+
module UserDataFile
|
99
|
+
def _user_data_file(file_name, vars = {})
|
100
|
+
base64!(join!(Template.render('user_data', file_name, vars)))
|
88
101
|
end
|
89
102
|
alias_method :user_data_file!, :_user_data_file
|
90
103
|
end
|
@@ -92,3 +105,5 @@ module StackMaster
|
|
92
105
|
end
|
93
106
|
|
94
107
|
SparkleFormation::SparkleAttribute::Aws.send(:include, StackMaster::SparkleFormation::UserDataFile)
|
108
|
+
SparkleFormation::SparkleAttribute::Aws.send(:include, StackMaster::SparkleFormation::JoinedFile)
|
109
|
+
|
@@ -2,7 +2,7 @@ module StackMaster::TemplateCompilers
|
|
2
2
|
class SparkleFormation
|
3
3
|
def self.require_dependencies
|
4
4
|
require 'sparkle_formation'
|
5
|
-
require 'stack_master/sparkle_formation/
|
5
|
+
require 'stack_master/sparkle_formation/template_file'
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.compile(template_file_path)
|
data/lib/stack_master/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'stack_master/sparkle_formation/
|
1
|
+
require 'stack_master/sparkle_formation/template_file'
|
2
2
|
|
3
3
|
RSpec.describe SparkleFormation::SparkleAttribute::Aws, '#user_data_file!' do
|
4
4
|
let(:user_data) do
|
@@ -66,7 +66,44 @@ echo $REGION
|
|
66
66
|
it 'raises a specific error' do
|
67
67
|
expect {
|
68
68
|
@attr.user_data_file!('test.erb')
|
69
|
-
}.to raise_error(StackMaster::SparkleFormation::
|
69
|
+
}.to raise_error(StackMaster::SparkleFormation::TemplateFileNotFound)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
RSpec.describe SparkleFormation::SparkleAttribute::Aws, '#joined_file!' do
|
75
|
+
let(:config) do
|
76
|
+
<<-EOS
|
77
|
+
variable=<%= ref!(:test) %>
|
78
|
+
EOS
|
79
|
+
end
|
80
|
+
|
81
|
+
let(:expected_hash) do
|
82
|
+
{"Fn::Join"=>["", ["variable=", {"Ref"=>"Test"}, "\n"]]}
|
83
|
+
end
|
84
|
+
|
85
|
+
before do
|
86
|
+
allow(SparkleFormation).to receive(:sparkle_path).and_return('/templates_dir')
|
87
|
+
klass = Class.new(AttributeStruct)
|
88
|
+
klass.include(SparkleFormation::SparkleAttribute)
|
89
|
+
klass.include(SparkleFormation::SparkleAttribute::Aws)
|
90
|
+
klass.include(SparkleFormation::Utils::TypeCheckers)
|
91
|
+
@attr = klass.new
|
92
|
+
@attr._camel_keys = true
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'reads from the config dir in templates' do
|
96
|
+
expect(File).to receive(:read).with('/templates_dir/joined_file/test.erb').and_return(config)
|
97
|
+
@attr.joined_file!('test.erb')
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'when the file exists' do
|
101
|
+
before do
|
102
|
+
allow(File).to receive(:read).and_return(config)
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'compiles the file and returns a joined version' do
|
106
|
+
expect(@attr.joined_file!('test.erb')).to eq expected_hash
|
70
107
|
end
|
71
108
|
end
|
72
109
|
end
|
data/stack_master.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency "timecop"
|
28
28
|
spec.add_dependency "ruby-progressbar"
|
29
29
|
spec.add_dependency "commander"
|
30
|
-
spec.add_dependency "aws-sdk", "~> 2.
|
30
|
+
spec.add_dependency "aws-sdk", "~> 2.6.26"
|
31
31
|
spec.add_dependency "diffy"
|
32
32
|
spec.add_dependency "erubis"
|
33
33
|
spec.add_dependency "colorize"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack_master
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Hodgkiss
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-11-
|
12
|
+
date: 2016-11-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -143,14 +143,14 @@ dependencies:
|
|
143
143
|
requirements:
|
144
144
|
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: 2.
|
146
|
+
version: 2.6.26
|
147
147
|
type: :runtime
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: 2.
|
153
|
+
version: 2.6.26
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
155
|
name: diffy
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
@@ -348,7 +348,7 @@ files:
|
|
348
348
|
- lib/stack_master/resolver_array.rb
|
349
349
|
- lib/stack_master/security_group_finder.rb
|
350
350
|
- lib/stack_master/sns_topic_finder.rb
|
351
|
-
- lib/stack_master/sparkle_formation/
|
351
|
+
- lib/stack_master/sparkle_formation/template_file.rb
|
352
352
|
- lib/stack_master/stack.rb
|
353
353
|
- lib/stack_master/stack_definition.rb
|
354
354
|
- lib/stack_master/stack_differ.rb
|
@@ -405,7 +405,7 @@ files:
|
|
405
405
|
- spec/stack_master/resolver_array_spec.rb
|
406
406
|
- spec/stack_master/security_group_finder_spec.rb
|
407
407
|
- spec/stack_master/sns_topic_finder_spec.rb
|
408
|
-
- spec/stack_master/sparkle_formation/
|
408
|
+
- spec/stack_master/sparkle_formation/template_file_spec.rb
|
409
409
|
- spec/stack_master/stack_definition_spec.rb
|
410
410
|
- spec/stack_master/stack_differ_spec.rb
|
411
411
|
- spec/stack_master/stack_events/fetcher_spec.rb
|
@@ -447,7 +447,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
447
447
|
version: '0'
|
448
448
|
requirements: []
|
449
449
|
rubyforge_project:
|
450
|
-
rubygems_version: 2.
|
450
|
+
rubygems_version: 2.5.1
|
451
451
|
signing_key:
|
452
452
|
specification_version: 4
|
453
453
|
summary: StackMaster is a sure-footed way of creating, updating and keeping track
|
@@ -500,7 +500,7 @@ test_files:
|
|
500
500
|
- spec/stack_master/resolver_array_spec.rb
|
501
501
|
- spec/stack_master/security_group_finder_spec.rb
|
502
502
|
- spec/stack_master/sns_topic_finder_spec.rb
|
503
|
-
- spec/stack_master/sparkle_formation/
|
503
|
+
- spec/stack_master/sparkle_formation/template_file_spec.rb
|
504
504
|
- spec/stack_master/stack_definition_spec.rb
|
505
505
|
- spec/stack_master/stack_differ_spec.rb
|
506
506
|
- spec/stack_master/stack_events/fetcher_spec.rb
|