cfndsl 0.0.16 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/cfndsl.rb +5 -5
- data/lib/cfndsl/CloudFormationTemplate.rb +20 -18
- data/lib/cfndsl/Conditions.rb +19 -0
- data/lib/cfndsl/Errors.rb +6 -8
- data/lib/cfndsl/JSONable.rb +67 -25
- data/lib/cfndsl/Outputs.rb +3 -3
- data/lib/cfndsl/Plurals.rb +4 -1
- data/lib/cfndsl/Resources.rb +5 -4
- data/lib/cfndsl/UpdatePolicy.rb +29 -0
- data/lib/cfndsl/aws_types.yaml +37 -12
- metadata +38 -10
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7b265f1255b48223c012215b895145a7d520249c
|
4
|
+
data.tar.gz: ca61f61cda439daec8d124369f5d5f28f9b31c80
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f0df157ea4421e9b3d8426f65d7f30fa57ae27ebf372bcda3699507001b36429b4cfb752096ce95c0add85055f357338478a230a5028ecdcadd4361c5717432e
|
7
|
+
data.tar.gz: 48e9633475ed557c62380ff07c0277fb904ad3f63743daaeaeaf2e333b47335e2070e72c472ed782a692a2fd78cc00b313704bb59ed1626f78e2576dc705c7d7
|
data/lib/cfndsl.rb
CHANGED
@@ -6,25 +6,25 @@ require 'cfndsl/RefCheck'
|
|
6
6
|
require 'cfndsl/JSONable'
|
7
7
|
require 'cfndsl/Types'
|
8
8
|
require 'cfndsl/Properties'
|
9
|
+
require 'cfndsl/UpdatePolicy'
|
10
|
+
require 'cfndsl/Conditions'
|
9
11
|
require 'cfndsl/Mappings'
|
10
12
|
require 'cfndsl/Resources'
|
11
13
|
require 'cfndsl/Metadata'
|
12
14
|
require 'cfndsl/Parameters'
|
13
15
|
require 'cfndsl/Outputs'
|
14
|
-
require 'cfndsl/CloudFormationTemplate'
|
16
|
+
require 'cfndsl/CloudFormationTemplate'
|
15
17
|
|
16
18
|
def CloudFormation(&block)
|
17
19
|
x = CfnDsl::CloudFormationTemplate.new
|
18
20
|
x.declare(&block)
|
19
21
|
invalid_references = x.checkRefs()
|
20
22
|
if( invalid_references ) then
|
21
|
-
|
22
|
-
exit(-1)
|
23
|
+
abort invalid_references.join("\n")
|
23
24
|
elsif( CfnDsl::Errors.errors? ) then
|
24
|
-
CfnDsl::Errors.
|
25
|
+
abort CfnDsl::Errors.errors.join("\n")
|
25
26
|
else
|
26
27
|
x.generateOutput
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
|
-
|
@@ -1,26 +1,28 @@
|
|
1
1
|
require 'cfndsl/JSONable'
|
2
2
|
require 'cfndsl/names'
|
3
3
|
|
4
|
-
module CfnDsl
|
5
|
-
class CloudFormationTemplate < JSONable
|
4
|
+
module CfnDsl
|
5
|
+
class CloudFormationTemplate < JSONable
|
6
6
|
##
|
7
7
|
# Handles the overall template object
|
8
8
|
dsl_attr_setter :AWSTemplateFormatVersion, :Description
|
9
|
-
dsl_content_object :Parameter, :Output, :Resource, :Mapping
|
10
|
-
|
9
|
+
dsl_content_object :Condition, :Parameter, :Output, :Resource, :Mapping
|
10
|
+
|
11
11
|
def initialize
|
12
12
|
@AWSTemplateFormatVersion = "2010-09-09"
|
13
13
|
end
|
14
|
-
|
15
|
-
def generateOutput()
|
14
|
+
|
15
|
+
def generateOutput()
|
16
16
|
puts self.to_json # uncomment for pretty printing # {:space => ' ', :indent => ' ', :object_nl => "\n", :array_nl => "\n" }
|
17
17
|
end
|
18
18
|
|
19
|
-
@@globalRefs = {
|
20
|
-
"AWS::NotificationARNs" => 1,
|
19
|
+
@@globalRefs = {
|
20
|
+
"AWS::NotificationARNs" => 1,
|
21
21
|
"AWS::Region" => 1,
|
22
22
|
"AWS::StackId" => 1,
|
23
|
-
"AWS::StackName" => 1
|
23
|
+
"AWS::StackName" => 1,
|
24
|
+
"AWS::AccountId" => 1,
|
25
|
+
"AWS::NoValue" => 1
|
24
26
|
}
|
25
27
|
|
26
28
|
def isValidRef( ref, origin=nil)
|
@@ -30,15 +32,15 @@ module CfnDsl
|
|
30
32
|
return true if @@globalRefs.has_key?( ref )
|
31
33
|
|
32
34
|
return true if @Parameters && @Parameters.has_key?( ref )
|
33
|
-
|
35
|
+
|
34
36
|
if( @Resources.has_key?( ref ) ) then
|
35
|
-
return !origin || !@_ResourceRefs || !@_ResourceRefs[ref] || !@_ResourceRefs[ref].has_key?(origin)
|
37
|
+
return !origin || !@_ResourceRefs || !@_ResourceRefs[ref] || !@_ResourceRefs[ref].has_key?(origin)
|
36
38
|
end
|
37
39
|
|
38
40
|
return false
|
39
41
|
end
|
40
42
|
|
41
|
-
def checkRefs()
|
43
|
+
def checkRefs()
|
42
44
|
invalids = []
|
43
45
|
@_ResourceRefs = {}
|
44
46
|
if(@Resources) then
|
@@ -62,10 +64,10 @@ module CfnDsl
|
|
62
64
|
end
|
63
65
|
end
|
64
66
|
end
|
65
|
-
return invalids.length>0 ? invalids : nil
|
67
|
+
return invalids.length>0 ? invalids : nil
|
66
68
|
end
|
67
69
|
|
68
|
-
|
70
|
+
|
69
71
|
names = {}
|
70
72
|
nametypes = {}
|
71
73
|
CfnDsl::Types::AWS_Types["Resources"].each_pair do |name, type|
|
@@ -77,11 +79,11 @@ module CfnDsl
|
|
77
79
|
if( ptype.instance_of? String )
|
78
80
|
create_klass = CfnDsl::Types.const_get( ptype );
|
79
81
|
|
80
|
-
klass.class_eval do
|
82
|
+
klass.class_eval do
|
81
83
|
CfnDsl::methodNames(pname) do |method|
|
82
84
|
define_method(method) do |*values, &block|
|
83
85
|
if( values.length <1 ) then
|
84
|
-
values.push create_klass.new
|
86
|
+
values.push create_klass.new
|
85
87
|
end
|
86
88
|
@Properties ||= {}
|
87
89
|
@Properties[pname] ||= CfnDsl::PropertyDefinition.new( *values )
|
@@ -124,7 +126,7 @@ module CfnDsl
|
|
124
126
|
|
125
127
|
end
|
126
128
|
parts = name.split "::"
|
127
|
-
while( parts.length > 0)
|
129
|
+
while( parts.length > 0)
|
128
130
|
abreve_name = parts.join "_"
|
129
131
|
if( names.has_key? abreve_name ) then
|
130
132
|
# this only happens if there is an ambiguity
|
@@ -138,7 +140,7 @@ module CfnDsl
|
|
138
140
|
|
139
141
|
|
140
142
|
end
|
141
|
-
|
143
|
+
|
142
144
|
#Define property setter methods for each of the unambiguous type names
|
143
145
|
names.each_pair do |typename,type|
|
144
146
|
if(type) then
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'cfndsl/JSONable'
|
2
|
+
|
3
|
+
module CfnDsl
|
4
|
+
class ConditionDefinition < JSONable
|
5
|
+
#
|
6
|
+
# Handles condition objects
|
7
|
+
#
|
8
|
+
# Usage:
|
9
|
+
# Condition :ConditionName, FnEqual(Ref(:ParameterName), 'helloworld')
|
10
|
+
|
11
|
+
def initialize(value)
|
12
|
+
@value = value
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_json(*a)
|
16
|
+
@value.to_json(*a)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/cfndsl/Errors.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module CfnDsl
|
2
2
|
module Errors
|
3
3
|
@@errors = []
|
4
|
-
|
5
|
-
def self.error( err, idx=nil )
|
4
|
+
|
5
|
+
def self.error( err, idx=nil )
|
6
6
|
if(idx.nil?) then
|
7
7
|
@@errors.push ( err + "\n" + caller.join("\n") + "\n" )
|
8
8
|
else
|
@@ -11,19 +11,17 @@ module CfnDsl
|
|
11
11
|
else
|
12
12
|
err_loc = caller[idx]
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
@@errors.push ( err_loc + " " + err + "\n" )
|
16
16
|
end
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def self.clear()
|
20
20
|
@@errors = []
|
21
21
|
end
|
22
22
|
|
23
|
-
def self.
|
24
|
-
@@errors
|
25
|
-
puts err
|
26
|
-
end
|
23
|
+
def self.errors()
|
24
|
+
@@errors
|
27
25
|
end
|
28
26
|
|
29
27
|
def self.errors?()
|
data/lib/cfndsl/JSONable.rb
CHANGED
@@ -6,64 +6,106 @@ module CfnDsl
|
|
6
6
|
##
|
7
7
|
# These functions are available anywhere inside
|
8
8
|
# a block for a JSONable object.
|
9
|
-
def Ref(value)
|
9
|
+
def Ref(value)
|
10
10
|
##
|
11
11
|
# Equivalent to the CloudFormation template built in function Ref
|
12
12
|
RefDefinition.new(value)
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def FnBase64( value )
|
16
16
|
##
|
17
17
|
# Equivalent to the CloudFormation template built in function Fn::Base64
|
18
18
|
Fn.new("Base64", value);
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def FnFindInMap( map, key, value)
|
22
22
|
##
|
23
23
|
# Equivalent to the CloudFormation template built in function Fn::FindInMap
|
24
24
|
Fn.new("FindInMap", [map,key,value] )
|
25
|
-
end
|
26
|
-
|
25
|
+
end
|
26
|
+
|
27
27
|
def FnGetAtt(logicalResource, attribute)
|
28
28
|
##
|
29
29
|
# Equivalent to the CloudFormation template built in function Fn::GetAtt
|
30
|
-
Fn.new( "GetAtt", [logicalResource, attribute]
|
30
|
+
Fn.new( "GetAtt", [logicalResource, attribute] )
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def FnGetAZs(region)
|
34
34
|
##
|
35
35
|
# Equivalent to the CloudFormation template built in function Fn::GetAZs
|
36
36
|
Fn.new("GetAZs", region)
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
def FnJoin(string, array)
|
40
40
|
##
|
41
41
|
# Equivalent to the CloudFormation template built in function Fn::Join
|
42
42
|
Fn.new("Join", [ string, array] )
|
43
43
|
end
|
44
44
|
|
45
|
+
def FnAnd(array)
|
46
|
+
##
|
47
|
+
# Equivalent to the CloudFormation template built in function Fn::And
|
48
|
+
if !array || array.count < 2 || array.count > 10
|
49
|
+
raise 'The array passed to Fn::And must have at least 2 elements and no more than 10'
|
50
|
+
end
|
51
|
+
Fn.new("And", array)
|
52
|
+
end
|
53
|
+
|
54
|
+
def FnEquals(value1, value2)
|
55
|
+
##
|
56
|
+
# Equivalent to the Cloudformation template built in function Fn::Equals
|
57
|
+
Fn.new("Equals", [value1, value2])
|
58
|
+
end
|
59
|
+
|
60
|
+
def FnIf(conditionName, trueValue, falseValue)
|
61
|
+
##
|
62
|
+
# Equivalent to the Cloudformation template built in function Fn::If
|
63
|
+
Fn.new("If", [conditionName, trueValue, falseValue])
|
64
|
+
end
|
65
|
+
|
66
|
+
def FnNot(value)
|
67
|
+
##
|
68
|
+
# Equivalent to the Cloudformation template built in function Fn::Not
|
69
|
+
Fn.new("Not", value)
|
70
|
+
end
|
71
|
+
|
72
|
+
def FnOr(array)
|
73
|
+
##
|
74
|
+
# Equivalent to the CloudFormation template built in function Fn::Or
|
75
|
+
if !array || array.count < 2 || array.count > 10
|
76
|
+
raise 'The array passed to Fn::Or must have at least 2 elements and no more than 10'
|
77
|
+
end
|
78
|
+
Fn.new("Or", array)
|
79
|
+
end
|
80
|
+
|
81
|
+
def FnSelect(index, array)
|
82
|
+
##
|
83
|
+
# Equivalent to the CloudFormation template built in function Fn::Select
|
84
|
+
Fn.new("Select", [ index, array] )
|
85
|
+
end
|
86
|
+
|
45
87
|
def FnFormat(string, *arguments)
|
46
88
|
##
|
47
89
|
# Usage
|
48
90
|
# FnFormat( "This is a %0. It is 100%% %1","test", "effective")
|
49
91
|
# or
|
50
|
-
# FnFormat( "This is a %{test}. It is 100%% %{effective},
|
51
|
-
# :test=>"test",
|
92
|
+
# FnFormat( "This is a %{test}. It is 100%% %{effective},
|
93
|
+
# :test=>"test",
|
52
94
|
# :effective=>"effective")
|
53
95
|
#
|
54
96
|
# These will each generate a call to Fn::Join that when
|
55
97
|
# evaluated will produce the string "This is a test. It is 100%
|
56
98
|
# effective."
|
57
99
|
#
|
58
|
-
# Think of this as %0,%1, etc in the format string being replaced by the
|
100
|
+
# Think of this as %0,%1, etc in the format string being replaced by the
|
59
101
|
# corresponding arguments given after the format string. '%%' is replaced
|
60
|
-
# by the '%' character.
|
61
|
-
#
|
102
|
+
# by the '%' character.
|
103
|
+
#
|
62
104
|
# The actual Fn::Join call corresponding to the above FnFormat call would be
|
63
105
|
# {"Fn::Join": ["",["This is a ","test",". It is 100","%"," ","effective"]]}
|
64
106
|
#
|
65
107
|
# If no arguments are given, or if a hash is given and the format
|
66
|
-
# variable name does not exist in the hash, it is used as a Ref
|
108
|
+
# variable name does not exist in the hash, it is used as a Ref
|
67
109
|
# to an existing resource or parameter.
|
68
110
|
#
|
69
111
|
array = [];
|
@@ -77,7 +119,7 @@ module CfnDsl
|
|
77
119
|
elsif( $3 ) then
|
78
120
|
array.push hash[ $4 ] || hash[ $4.to_sym ] || Ref( $4 )
|
79
121
|
end
|
80
|
-
end
|
122
|
+
end
|
81
123
|
else
|
82
124
|
string.scan( /(.*?)(%(%|\d+)|\z)/m ) do |x,y|
|
83
125
|
array.push $1 if $1 && $1 != ""
|
@@ -86,7 +128,7 @@ module CfnDsl
|
|
86
128
|
elsif( $3 ) then
|
87
129
|
array.push arguments[ $3.to_i ]
|
88
130
|
end
|
89
|
-
end
|
131
|
+
end
|
90
132
|
end
|
91
133
|
Fn.new("Join", ["", array])
|
92
134
|
end
|
@@ -94,7 +136,7 @@ module CfnDsl
|
|
94
136
|
|
95
137
|
class JSONable
|
96
138
|
##
|
97
|
-
# This is the base class for just about everything useful in the
|
139
|
+
# This is the base class for just about everything useful in the
|
98
140
|
# DSL. It knows how to turn DSL Objects into the corresponding
|
99
141
|
# json, and it lets you create new built in function objects
|
100
142
|
# from inside the context of a dsl object.
|
@@ -112,7 +154,7 @@ module CfnDsl
|
|
112
154
|
hash = {}
|
113
155
|
self.instance_variables.each do |var|
|
114
156
|
name = var[1..-1]
|
115
|
-
|
157
|
+
|
116
158
|
if( name =~ /^__/ ) then
|
117
159
|
# if a variable starts with double underscore, strip one off
|
118
160
|
name = name[1..-1]
|
@@ -120,7 +162,7 @@ module CfnDsl
|
|
120
162
|
# Hide variables that start with single underscore
|
121
163
|
name = nil
|
122
164
|
end
|
123
|
-
|
165
|
+
|
124
166
|
hash[name] = self.instance_variable_get var if name
|
125
167
|
end
|
126
168
|
hash.to_json(*a)
|
@@ -134,17 +176,17 @@ module CfnDsl
|
|
134
176
|
self.instance_eval &block if block_given?
|
135
177
|
end
|
136
178
|
|
137
|
-
def method_missing(meth,*args,&block)
|
179
|
+
def method_missing(meth,*args,&block)
|
138
180
|
if(args) then
|
139
181
|
arg = "(" + args.inspect[1..-2] + ")"
|
140
|
-
else
|
182
|
+
else
|
141
183
|
arg = ""
|
142
184
|
end
|
143
185
|
CfnDsl::Errors.error( "Undefined symbol: #{meth}#{arg}", 1 )
|
144
186
|
end
|
145
187
|
end
|
146
188
|
|
147
|
-
|
189
|
+
|
148
190
|
class Fn < JSONable
|
149
191
|
##
|
150
192
|
# Handles all of the Fn:: objects
|
@@ -153,7 +195,7 @@ module CfnDsl
|
|
153
195
|
@argument = argument
|
154
196
|
@_refs = refs
|
155
197
|
end
|
156
|
-
|
198
|
+
|
157
199
|
def to_json(*a)
|
158
200
|
hash = {}
|
159
201
|
hash["Fn::#{@function}"] = @argument
|
@@ -172,7 +214,7 @@ module CfnDsl
|
|
172
214
|
class RefDefinition < JSONable
|
173
215
|
##
|
174
216
|
# Handles the Ref objects
|
175
|
-
def initialize( value )
|
217
|
+
def initialize( value )
|
176
218
|
@Ref = value
|
177
219
|
end
|
178
220
|
|
@@ -180,5 +222,5 @@ module CfnDsl
|
|
180
222
|
[@Ref]
|
181
223
|
end
|
182
224
|
end
|
183
|
-
|
225
|
+
|
184
226
|
end
|
data/lib/cfndsl/Outputs.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'cfndsl/JSONable'
|
2
2
|
|
3
|
-
module CfnDsl
|
3
|
+
module CfnDsl
|
4
4
|
class OutputDefinition < JSONable
|
5
5
|
##
|
6
6
|
# Handles Output objects
|
7
|
-
dsl_attr_setter :Value, :Description
|
8
|
-
|
7
|
+
dsl_attr_setter :Value, :Description, :Condition
|
8
|
+
|
9
9
|
def initialize( value=nil)
|
10
10
|
@Value = value if value
|
11
11
|
end
|
data/lib/cfndsl/Plurals.rb
CHANGED
@@ -8,9 +8,12 @@ module CfnDsl
|
|
8
8
|
"Metadata" => "Metadata",
|
9
9
|
"Property" => "Properties",
|
10
10
|
"Policy" => "Policies",
|
11
|
+
"PolicyDocument" => "PolicyDocument",
|
12
|
+
"AssumeRolePolicyDocument" => "AssumeRolePolicyDocument",
|
11
13
|
"SecurityGroupIngress" => "SecurityGroupIngress",
|
12
14
|
"SecurityGroupEgress" => "SecurityGroupEgress",
|
13
|
-
"DBSecurityGroupIngress" => "DBSecurityGroupIngress"
|
15
|
+
"DBSecurityGroupIngress" => "DBSecurityGroupIngress",
|
16
|
+
"UpdatePolicy" => "UpdatePolicy"
|
14
17
|
}
|
15
18
|
|
16
19
|
@@singles = {}
|
data/lib/cfndsl/Resources.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'cfndsl/JSONable'
|
2
2
|
require 'cfndsl/Metadata'
|
3
3
|
require 'cfndsl/Properties'
|
4
|
+
require 'cfndsl/UpdatePolicy'
|
4
5
|
|
5
|
-
module CfnDsl
|
6
|
+
module CfnDsl
|
6
7
|
class ResourceDefinition < JSONable
|
7
8
|
##
|
8
9
|
# Handles Resource objects
|
9
|
-
dsl_attr_setter :Type, :DependsOn, :DeletionPolicy
|
10
|
-
dsl_content_object :Property, :Metadata
|
10
|
+
dsl_attr_setter :Type, :DependsOn, :DeletionPolicy, :Condition
|
11
|
+
dsl_content_object :Property, :Metadata, :UpdatePolicy
|
11
12
|
|
12
13
|
def addTag(name, value, propagate=nil)
|
13
14
|
self.send(:Tag) {
|
@@ -27,7 +28,7 @@ module CfnDsl
|
|
27
28
|
end
|
28
29
|
|
29
30
|
if( @DependsOn.instance_of?(String) ) then
|
30
|
-
refs.push @DependsOn
|
31
|
+
refs.push @DependsOn
|
31
32
|
end
|
32
33
|
end
|
33
34
|
refs
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'cfndsl/JSONable'
|
2
|
+
|
3
|
+
module CfnDsl
|
4
|
+
class UpdatePolicyDefinition < JSONable
|
5
|
+
##
|
6
|
+
# Handles autoscaling group update policy objects for Resources
|
7
|
+
#
|
8
|
+
# Usage
|
9
|
+
# Resource("aaa") {
|
10
|
+
# UpdatePolicy("AutoScalingRollingUpdate", {
|
11
|
+
# "MinInstancesInService" => "1",
|
12
|
+
# "MaxBatchSize" => "1",
|
13
|
+
# "PauseTime" => "PT12M5S"
|
14
|
+
# })
|
15
|
+
# }
|
16
|
+
#
|
17
|
+
def initialize(value)
|
18
|
+
@value = value;
|
19
|
+
end
|
20
|
+
|
21
|
+
def value
|
22
|
+
return @value
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_json(*a)
|
26
|
+
@value.to_json(*a)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/cfndsl/aws_types.yaml
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
Resources:
|
2
2
|
"AWS::AutoScaling::AutoScalingGroup" :
|
3
|
+
UpdatePolicy:
|
4
|
+
AutoScalingRollingUpdate: JSON
|
3
5
|
Properties:
|
4
6
|
AvailabilityZones: [ String ]
|
5
7
|
Cooldown: String
|
@@ -7,7 +9,7 @@ Resources:
|
|
7
9
|
HealthCheckGracePeriod: Integer
|
8
10
|
HealthCheckType: String
|
9
11
|
LaunchConfigurationName: String
|
10
|
-
|
12
|
+
LoadBalancerNames: [ String ]
|
11
13
|
MaxSize: Integer
|
12
14
|
MinSize: Integer
|
13
15
|
NotificationConfiguration: String
|
@@ -15,21 +17,32 @@ Resources:
|
|
15
17
|
VPCZoneIdentifier: [ String ]
|
16
18
|
"AWS::AutoScaling::LaunchConfiguration" :
|
17
19
|
Properties:
|
20
|
+
AssociatePublicIpAddress: Boolean
|
18
21
|
BlockDeviceMappings: [ BlockDeviceMapping ]
|
19
22
|
ImageId: String
|
23
|
+
InstanceMonitoring: Boolean
|
20
24
|
InstanceType: String
|
21
25
|
KernelId: String
|
22
26
|
KeyName: String
|
23
27
|
RamDiskId: String
|
24
28
|
SecurityGroups: [ String ]
|
25
29
|
UserData: String
|
26
|
-
"AWS::
|
30
|
+
"AWS::AutoScaling::ScalingPolicy" :
|
27
31
|
Properties:
|
28
32
|
AdjustmentType: String
|
29
33
|
AutoScalingGroupName: String
|
30
34
|
Cooldown: String
|
31
35
|
ScalingAdjustment: String
|
32
|
-
"AWS::
|
36
|
+
"AWS::AutoScaling::ScheduledAction" :
|
37
|
+
Properties:
|
38
|
+
AutoScalingGroupName: String
|
39
|
+
DesiredCapacity: Integer
|
40
|
+
EndTime: String
|
41
|
+
MaxSize: Integer
|
42
|
+
MinSize: Integer
|
43
|
+
Recurrence: String
|
44
|
+
StartTime: String
|
45
|
+
"AWS::AutoScaling::Trigger" :
|
33
46
|
Properties:
|
34
47
|
Dimensions: [ MetricDimension ]
|
35
48
|
MetricName: String
|
@@ -93,11 +106,13 @@ Resources:
|
|
93
106
|
Properties:
|
94
107
|
AvailabilityZone: String
|
95
108
|
DisableApiTermination: String
|
109
|
+
IamInstanceProfile: String
|
96
110
|
ImageId: String
|
97
111
|
InstanceType: String
|
98
112
|
KernelId: String
|
99
113
|
KeyName: String
|
100
114
|
Monitoring: String
|
115
|
+
NetworkInterfaces: JSON
|
101
116
|
PlacementGroupName: String
|
102
117
|
PrivateIpAddress: String
|
103
118
|
RamDiskId: String
|
@@ -143,7 +158,7 @@ Resources:
|
|
143
158
|
DestinationSecurityGroupId: String
|
144
159
|
FromPort: Number
|
145
160
|
ToPort: Number
|
146
|
-
"AWS::EC2::SecurityGroupIngress":
|
161
|
+
"AWS::EC2::SecurityGroupIngress" :
|
147
162
|
Properties:
|
148
163
|
GroupName: String
|
149
164
|
GroupId: String
|
@@ -206,7 +221,7 @@ Resources:
|
|
206
221
|
"AWS::ElastiCache::SecurityGroup" :
|
207
222
|
Properties:
|
208
223
|
Decription: String
|
209
|
-
"AWS::ElastiCache::
|
224
|
+
"AWS::ElastiCache::SecurityGroupIngress" :
|
210
225
|
Properties:
|
211
226
|
CacheSecurityGroupName: String
|
212
227
|
EC2SecurityGroupName: String
|
@@ -227,11 +242,13 @@ Resources:
|
|
227
242
|
"AWS::ElasticLoadBalancing::LoadBalancer" :
|
228
243
|
Properties:
|
229
244
|
AvailabilityZones: [String]
|
245
|
+
CrossZone: Boolean
|
230
246
|
HealthCheck: HealthCheck
|
231
247
|
Instances: [String]
|
232
248
|
Listeners: [ Listener ]
|
233
249
|
AppCookieStickinessPolicy: AppCookieStickinessPolicy
|
234
250
|
LBCookieStickinessPolicy: LBCookieStickinessPolicy
|
251
|
+
Scheme: String
|
235
252
|
SecurityGroups: [ String ]
|
236
253
|
Subnets: [ String ]
|
237
254
|
Attributes:
|
@@ -253,15 +270,28 @@ Resources:
|
|
253
270
|
Policies: [ IAMEmbeddedPolicy ]
|
254
271
|
Attributes:
|
255
272
|
Arn : String
|
273
|
+
"AWS::IAM::InstanceProfile" :
|
274
|
+
Properties:
|
275
|
+
Path: String
|
276
|
+
Roles: [ String ]
|
277
|
+
Attributes:
|
278
|
+
Arn : String
|
256
279
|
"AWS::IAM::Policy" :
|
257
280
|
Properties:
|
258
281
|
PolicyName: String
|
259
|
-
|
282
|
+
PolicyDocument: JSON
|
260
283
|
Groups: [ String ]
|
261
284
|
Users: [ String ]
|
285
|
+
"AWS::IAM::Role" :
|
286
|
+
Properties:
|
287
|
+
AssumeRolePolicyDocument: JSON
|
288
|
+
Path: String
|
289
|
+
Policies: [ IAMEmbeddedPolicy ]
|
290
|
+
Attributes:
|
291
|
+
Arn : String
|
262
292
|
"AWS::IAM::UserToGroupAddition" :
|
263
293
|
Properties:
|
264
|
-
|
294
|
+
GroupName: String
|
265
295
|
Users: [String]
|
266
296
|
"AWS::IAM::User" :
|
267
297
|
Properties:
|
@@ -475,8 +505,3 @@ Types:
|
|
475
505
|
IAMEmbeddedPolicy:
|
476
506
|
PolicyDocument: JSON
|
477
507
|
PolicyName: String
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfndsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Chris Howe
|
@@ -10,7 +9,35 @@ autorequire:
|
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
11
|
date: 2013-05-16 00:00:00.000000000 Z
|
13
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: test-unit
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
14
41
|
description: DSL for creating AWS Cloudformation templates
|
15
42
|
email: chris@howeville.com
|
16
43
|
executables:
|
@@ -25,6 +52,7 @@ files:
|
|
25
52
|
- lib/cfndsl/RefCheck.rb
|
26
53
|
- lib/cfndsl/Types.rb
|
27
54
|
- lib/cfndsl/Properties.rb
|
55
|
+
- lib/cfndsl/Conditions.rb
|
28
56
|
- lib/cfndsl/Mappings.rb
|
29
57
|
- lib/cfndsl/Resources.rb
|
30
58
|
- lib/cfndsl/Metadata.rb
|
@@ -34,29 +62,29 @@ files:
|
|
34
62
|
- lib/cfndsl/Plurals.rb
|
35
63
|
- lib/cfndsl/names.rb
|
36
64
|
- lib/cfndsl/CloudFormationTemplate.rb
|
65
|
+
- lib/cfndsl/UpdatePolicy.rb
|
37
66
|
- bin/cfndsl
|
38
|
-
homepage: https://github.com/
|
67
|
+
homepage: https://github.com/stevenjack/cfndsl
|
39
68
|
licenses: []
|
69
|
+
metadata: {}
|
40
70
|
post_install_message:
|
41
71
|
rdoc_options: []
|
42
72
|
require_paths:
|
43
73
|
- lib
|
44
74
|
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
-
none: false
|
46
75
|
requirements:
|
47
|
-
- -
|
76
|
+
- - '>='
|
48
77
|
- !ruby/object:Gem::Version
|
49
78
|
version: '0'
|
50
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
80
|
requirements:
|
53
|
-
- -
|
81
|
+
- - '>='
|
54
82
|
- !ruby/object:Gem::Version
|
55
83
|
version: '0'
|
56
84
|
requirements: []
|
57
85
|
rubyforge_project:
|
58
|
-
rubygems_version:
|
86
|
+
rubygems_version: 2.0.3
|
59
87
|
signing_key:
|
60
|
-
specification_version:
|
88
|
+
specification_version: 4
|
61
89
|
summary: AWS Cloudformation DSL
|
62
90
|
test_files: []
|