stack_master 0.9.0 → 0.10.0
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.
- 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
|