autostacker24 1.0.63 → 1.0.64
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/lib/autostacker24/stacker.rb +10 -8
- data/lib/autostacker24/template_preprocessor.rb +2 -35
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e43bad33022b4b88bde94e2146b4b8693e2485d
|
4
|
+
data.tar.gz: c6f9b80bc2be1784270ae765f49f37c1b99c58e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 204b3139bf2bad11c5b70367a28849443bc914ce461026287c4f1bc533e94865ff8bf7db1a3a7fb44284e4a4162dbfdf264a97abde9fc7ed2ad16da60dadd753
|
7
|
+
data.tar.gz: 1ce541e41f33c5fc822a58a2a52ac265113cd36099220ce8fe7f6860b64562850a4e18d2a9c48cf319304c4aae3c2de27dbbffdff4335f402c82258750474e13
|
@@ -33,10 +33,11 @@ module Stacker
|
|
33
33
|
def create_stack(stack_name, template, parameters, parent_stack_name = nil, tags = nil)
|
34
34
|
merge_and_validate(template, parameters, parent_stack_name)
|
35
35
|
cloud_formation.create_stack(stack_name: stack_name,
|
36
|
-
template_body: template_body(template
|
36
|
+
template_body: template_body(template),
|
37
37
|
on_failure: 'DELETE',
|
38
38
|
parameters: transform_input(parameters),
|
39
|
-
capabilities: ['CAPABILITY_IAM']
|
39
|
+
capabilities: ['CAPABILITY_IAM'],
|
40
|
+
tags: tags)
|
40
41
|
wait_for_stack(stack_name, :create)
|
41
42
|
end
|
42
43
|
|
@@ -45,9 +46,10 @@ module Stacker
|
|
45
46
|
begin
|
46
47
|
merge_and_validate(template, parameters, parent_stack_name)
|
47
48
|
cloud_formation.update_stack(stack_name: stack_name,
|
48
|
-
template_body: template_body(template
|
49
|
+
template_body: template_body(template),
|
49
50
|
parameters: transform_input(parameters),
|
50
|
-
capabilities: ['CAPABILITY_IAM']
|
51
|
+
capabilities: ['CAPABILITY_IAM'],
|
52
|
+
tags: tags)
|
51
53
|
rescue Aws::CloudFormation::Errors::ValidationError => error
|
52
54
|
raise error unless error.message =~ /No updates are to be performed/i # may be flaky, do more research in API
|
53
55
|
find_stack(stack_name)
|
@@ -74,8 +76,8 @@ module Stacker
|
|
74
76
|
end
|
75
77
|
private :merge_and_validate
|
76
78
|
|
77
|
-
def validate_template(template
|
78
|
-
cloud_formation.validate_template(template_body: template_body(template
|
79
|
+
def validate_template(template)
|
80
|
+
cloud_formation.validate_template(template_body: template_body(template))
|
79
81
|
end
|
80
82
|
|
81
83
|
def delete_stack(stack_name)
|
@@ -173,9 +175,9 @@ module Stacker
|
|
173
175
|
@lazy_cloud_formation
|
174
176
|
end
|
175
177
|
|
176
|
-
def template_body(template
|
178
|
+
def template_body(template)
|
177
179
|
template = File.read(template) if File.exists?(template)
|
178
|
-
AutoStacker24::Preprocessor.preprocess(template
|
180
|
+
AutoStacker24::Preprocessor.preprocess(template)
|
179
181
|
end
|
180
182
|
|
181
183
|
extend self
|
@@ -6,16 +6,13 @@ module AutoStacker24
|
|
6
6
|
|
7
7
|
module Preprocessor
|
8
8
|
|
9
|
-
def self.preprocess(template
|
9
|
+
def self.preprocess(template)
|
10
10
|
if template =~ /^\s*\/{2}\s*/i
|
11
|
-
|
12
|
-
template = preprocess_tags(processed, tags).to_json
|
11
|
+
template = preprocess_json(parse_json(template)).to_json
|
13
12
|
end
|
14
13
|
template
|
15
14
|
end
|
16
15
|
|
17
|
-
SUPPORTED_TYPES = Set[%w(AWS::AutoScaling::AutoScalingGroup AWS::CloudTrail::Trail AWS::EC2::CustomerGateway AWS::EC2::DHCPOptions AWS::EC2::Instance AWS::EC2::InternetGateway AWS::EC2::NetworkAcl AWS::EC2::NetworkInterface AWS::EC2::RouteTable AWS::EC2::SecurityGroup AWS::EC2::Subnet AWS::EC2::Volume AWS::EC2::VPC AWS::EC2::VPCPeeringConnection AWS::EC2::VPNConnection AWS::EC2::VPNGateway AWS::ElasticBeanstalk::Environment AWS::ElasticLoadBalancing::LoadBalancer AWS::RDS::DBCluster AWS::RDS::DBClusterParameterGroup AWS::RDS::DBInstance AWS::RDS::DBParameterGroup AWS::RDS::DBSecurityGroup AWS::RDS::DBSubnetGroup AWS::RDS::OptionGroup AWS::S3::Bucket)]
|
18
|
-
|
19
16
|
def self.parse_json(template)
|
20
17
|
template = template.gsub(/(\s*\/\/.*$)|(".*")/) {|m| m[0] == '"' ? m : ''} # replace comments
|
21
18
|
JSON(template)
|
@@ -25,36 +22,6 @@ module AutoStacker24
|
|
25
22
|
raise e
|
26
23
|
end
|
27
24
|
|
28
|
-
def self.preprocess_tags(template, tags = nil)
|
29
|
-
|
30
|
-
unless tags.nil?
|
31
|
-
|
32
|
-
tags_for_asg = adjust_tags_for_asg(tags)
|
33
|
-
|
34
|
-
template['Resources'].each {|(key, value)|
|
35
|
-
|
36
|
-
tags_to_apply = tags
|
37
|
-
if value['Type'] == 'AWS::AutoScaling::AutoScalingGroup'
|
38
|
-
tags_to_apply = tags_for_asg
|
39
|
-
end
|
40
|
-
|
41
|
-
if SUPPORTED_TYPES.include? value['Type']
|
42
|
-
if value['Properties']['Tags'].nil?
|
43
|
-
value['Properties']['Tags'] = tags_to_apply
|
44
|
-
else
|
45
|
-
value['Properties']['Tags'] = (tags_to_apply + value['Properties']['Tags']).uniq { |s| s.first }
|
46
|
-
end
|
47
|
-
end
|
48
|
-
}
|
49
|
-
end
|
50
|
-
|
51
|
-
template
|
52
|
-
end
|
53
|
-
|
54
|
-
def self.adjust_tags_for_asg(tags)
|
55
|
-
tags.map {|element| element.merge('PropagateAtLaunch' => 'true') }
|
56
|
-
end
|
57
|
-
|
58
25
|
def self.preprocess_json(json)
|
59
26
|
if json.is_a?(Hash)
|
60
27
|
json.inject({}) do |m, (k, v)|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autostacker24
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.64
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johannes Mueller
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-02-
|
12
|
+
date: 2016-02-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk-core
|