convection 0.2.14 → 0.2.15

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f6ce04b3301441c8a25277d9b0c05c3633dbb25a
4
- data.tar.gz: a96ecb3a1dd62ecaee0bce721f5254daeb4ff49f
3
+ metadata.gz: d4e1a5604f949a9fe05e8889deb5f0b00aa52307
4
+ data.tar.gz: 1bbc1d882ac5bc4780e274b8f8b6dcbaf1b9d834
5
5
  SHA512:
6
- metadata.gz: 2dd60878873c033ed0e91fb667b824d2cc7df021e4fc0283a64f24a01e5357d4c7015266674c45be13a0ed969e347bfe5327c59fa3dcf5a6c736805e19477ea6
7
- data.tar.gz: 95152de7d87ff586342818cb451d4b13f7b81b37af4d12d6b950b755a3451a99ac93082999cc70ee53539f16f649d815d0db64c22a2525045ca0d26300bbf22d
6
+ metadata.gz: fbee68d7503bf6def7ce8a689404d19fefba9dcdaea255ac5abaeb418f66f94b690b1257f98d7eff1387220a085e32fde6f7a6cca65337bb2b2822b0e3815320
7
+ data.tar.gz: 019a281498278e5fdb0489f9489aab52ec957c986cca0be41f82b9873296d3af27c58ae07a0daabdfb2f35d601a78a0e32983d377b91c5c78f9b0c5d164d1ed1
data/convection.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Convection::VERSION
9
9
  spec.authors = ['John Manero']
10
10
  spec.email = ['jmanero@rapid7.com']
11
- spec.summary = Convection::SUMMARY
12
- spec.description = Convection::DESCRIPTION
11
+ spec.summary = %q{A fully generic, modular DSL for AWS CloudFormation}
12
+ spec.description = %q{This gem aims to provide a reusable model for AWS CloudFormation in Ruby. It exposes a DSL for template definition, and a simple, decoupled abstraction of a CloudFormation Stack to compile and apply templates.}
13
13
  spec.homepage = 'https://github.com/rapid7/convection'
14
14
  spec.license = 'MIT'
15
15
 
@@ -1,6 +1,4 @@
1
1
  # nodoc
2
2
  module Convection
3
3
  VERSION = IO.read(File.expand_path('../../../VERSION', __FILE__)) rescue '0.0.1'
4
- SUMMARY = 'A fully generic, modular DSL for AWS CloudFormation'.freeze
5
- DESCRIPTION = IO.read(File.expand_path('../../../README.md', __FILE__)) rescue ''
6
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: convection
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.14
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Manero
@@ -66,256 +66,9 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.19'
69
- description: |
70
- # Convection [![Build Status](https://travis-ci.org/rapid7/convection.svg)](https://travis-ci.org/rapid7/convection)
71
- _A fully generic, modular DSL for AWS CloudFormation_
72
-
73
- This gem aims to provide a reusable model for AWS CloudFormation in Ruby. It exposes a DSL for template definition, and a simple, decoupled abstraction of a CloudFormation Stack to compile and apply templates.
74
-
75
- ## Version 0.0.1
76
- This is an Alpha release. It is still lacking functionality and testing. We plan to develop/improve features as we begin to use it for our own deployments in the coming months. PRs welcome.
77
-
78
- ## Installation
79
- Add this line to your application's Gemfile:
80
-
81
- ```ruby
82
- gem 'convection'
83
- ```
84
-
85
- And then execute:
86
-
87
- $ bundle
88
-
89
- Or install it yourself as:
90
-
91
- $ gem install convection
92
-
93
- ## Template DSL
94
- The core DSL provides all of the available JSON primatives of CloudFormation in the form of ruby methods. These primatives are used to compose higher-order methods for commonly used definitions:
95
-
96
- ```ruby
97
- require 'convection'
98
-
99
- ## Create a new instance of Convection::Model::Template
100
- Convection.template do
101
- description 'An example template'
102
-
103
- parameter 'InstanceSize' do
104
- type 'String'
105
- description 'Instance Size'
106
- default 'm3.medium'
107
-
108
- allow 'm3.medium'
109
- allow 'm3.large'
110
- allow 'm3.xlarge'
111
- end
112
-
113
- ## The `resource` method can be used to define any resource
114
- ## supported by CloudFormation: See http://docs.aws.amazon.com/\
115
- ## AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html
116
- resource 'AnEC2Instance' do
117
- type 'AWS::EC2::Instance'
118
- property 'AvailabilityZone', 'us-east-1a'
119
- property 'ImageId', 'ami-76e27e1e' ## Ubuntu 14.04 hvm:ebs
120
- property 'KeyName', 'test'
121
- property 'SecurityGroupIds', ['sg-dd733c41', 'sg-dd738df3']
122
- property 'Tags', [{
123
- 'Key' => 'Name',
124
- 'Value' => 'test-1'
125
- }]
126
-
127
- property 'DisableApiTermination', false
128
- end
129
-
130
- ## `ec2_instnce` extends `resource`. The following results in JSON
131
- ## identical to that of Resource[AnEC2Instance]
132
- ec2_instance 'AnOtherInstance' do
133
- availability_zone 'us-east-1a'
134
- image_id 'ami-76e27e1e'
135
- key_name 'test'
136
-
137
- security_group 'sg-dd733c41'
138
- security_group 'sg-dd738df3'
139
-
140
- tag 'Name', 'test-2'
141
-
142
- ## All of the methods of the `resource` primative are available in
143
- ## its children:
144
- property 'DisableApiTermination', false
145
- end
146
- end.to_json
147
- ```
148
-
149
- ### Parameters
150
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html
151
-
152
- ```ruby
153
- parameter 'InstanceType' do
154
- type 'String'
155
- description 'Set the thing\'s instance flavor'
156
- default 'm3.medium'
157
-
158
- allow 'm3.medium'
159
- allow 'm3.large'
160
- allow 'm3.xlarge'
161
- end
162
- ```
163
-
164
- ### Mappings
165
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html
166
-
167
- ```ruby
168
- mapping 'RegionalAMIs' do
169
- item 'us-east-1', 'hvm', 'ami-76e27e1e'
170
- item 'us-west-1', 'hvm', 'ami-d5180890'
171
- item 'us-east-1', 'pv', 'ami-64e27e0c'
172
- item 'us-west-1', 'pv', 'ami-c5180880'
173
- end
174
- ```
175
-
176
- ### Conditions
177
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html
178
-
179
- ```ruby
180
- condition 'ThisCondition' do
181
- fn_equals( fn_ref('SomeParameter'), 'value_x' )
182
- end
183
-
184
- condition 'ThatCondition' do
185
- fn_or(
186
- fn_equals( fn_ref('SomeParameter'), 'value_y' ),
187
- fn_equals( fn_ref('SomeParameter'), 'value_z' )
188
- )
189
- end
190
- ```
191
-
192
- ### Resources
193
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html
194
-
195
- ```ruby
196
- resource 'AnInstance' do
197
- type 'AWS::EC2::Instance'
198
-
199
- ## Optional condition reference
200
- condition 'SomeCondition'
201
-
202
- ## Add Resource Properties
203
- property 'AvailabilityZone', 'us-east-1a'
204
- property 'ImageId', 'ami-76e27e1e' ## Ubuntu 14.04 hvm:ebs
205
- property 'KeyName', 'test'
206
- ...
207
- end
208
- ```
209
-
210
- Using a condition to set a resource property:
211
-
212
- ```ruby
213
- resource 'MySQL' do
214
- type 'AWS::RDS::DBInstance'
215
- ...
216
- property 'Iops', fn_if('ThisCondition', '1000', fn_ref('AWS::NoValue'))
217
- ...
218
- end
219
- ```
220
-
221
- ### Outputs
222
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html
223
-
224
- ```ruby
225
- output 'SomeName' do
226
- description 'An Important Attribute'
227
- value get_att('Resource', 'Attribute')
228
-
229
- ## Optional condition reference
230
- condition 'SomeCondition'
231
- end
232
- ```
233
-
234
- ### Intrinsic Functions
235
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html
236
-
237
- All intrinsic functions are available as helper methods:
238
-
239
- * base64(content)
240
- * fn_and(conditions...)
241
- * fn_equals(value_1, value_2)
242
- * fn_if(condition, value_true, value_false)
243
- * fn_not(condition)
244
- * fn_or(conditions...)
245
- * find_in_map(map_name, key_1, key_2)
246
- * get_att(resource, attr_name)
247
- * get_azs(region)
248
- * join(delimiter, values...)
249
- * select(index, objects...)
250
- * fn_ref(resource)
251
-
252
- ```ruby
253
- ec2_instance "TestInstanceFoo#{ i }" do
254
- image_id find_in_map('RegionalAMIs', fn_ref('AWS::Region'), 'hvm')
255
- instance_type 'm3.medium'
256
- key_name find_in_map('RegionalKeys', fn_ref('AWS::Region'), 'test')
257
- security_group fn_ref('LousySecurityGroup')
258
- subnet fn_ref("TestSubnet")
259
- end
260
- ```
261
-
262
- ## Stack Control
263
- The `Stack` class provides a state wrapper for CloudFormation Stacks. It tracks the state of the managed stack, and creates/updates accordingly. `Stack` is also region-aware, and can be used within a template to define resources that depend upon availability-zones or other region-specific neuances that cannot be represented as maps or require iteration.
264
-
265
- ### Class `Convection::Control::Stack`
266
- * `.new(name, template, options = {})`
267
- * _name_ CloudFormation Stack name
268
- * _template_ Instance of Convection::Model::Template
269
- * _options_ - Hash
270
- * _region_ - AWS region, format `us-east-1`. Default us-east-1
271
- * _credentials_ - Optional instance of AWS::Credentials. See the [AWS-SDK Documentation](http://docs.aws.amazon.com/sdkforruby/api/frames.html)
272
- * _parameters_ - Stack parameters, as a `Hash` of `{ key => value }`
273
- * _tags_ - Stack tags, as a `Hash` of `{ key => value }`
274
- * _on_failure_ - Create failure action. Default `DELETE`
275
- * _capabilities_ - See the [AWS-SDK Documentation](http://docs.aws.amazon.com/sdkforruby/api/Aws/CloudFormation/Client.html#create_stack-instance_method)
276
- * Additional options will be passed directly to `create_stack` and `update_stack`
277
-
278
- * `#status` - Returns the stack status
279
- * `#exist?` - Returns true if the stack exists and is not in a DELETED state
280
- * `#complete?`
281
- * `#rollback?`
282
- * `#fail?`
283
- * `#render` - Populates the provided template with any environment data included in the stack (e.g. availability zones). Returns a `Hash`
284
- * `#to_json` - Render template and transofrm to a pretty-generated JSON `String`
285
- * `#apply` - Renter template and create/update CloudFormation Stack
286
- * `#delete` - Delete CloudFormation Stack
287
- * `#availability_zones(&block)` - Return an array of strings representing the region's availability zones. Provided codeblock will be called for each AZ.
288
-
289
- ## Futures
290
- *
291
-
292
- ## License
293
- _Copyright (c) 2015 John Manero, Rapid7 LLC._
294
-
295
- ```
296
- MIT License
297
- ===========
298
-
299
- Permission is hereby granted, free of charge, to any person obtaining
300
- a copy of this software and associated documentation files (the
301
- "Software"), to deal in the Software without restriction, including
302
- without limitation the rights to use, copy, modify, merge, publish,
303
- distribute, sublicense, and/or sell copies of the Software, and to
304
- permit persons to whom the Software is furnished to do so, subject to
305
- the following conditions:
306
-
307
- The above copyright notice and this permission notice shall be
308
- included in all copies or substantial portions of the Software.
309
-
310
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
311
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
312
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
313
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
314
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
315
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
316
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
317
-
318
- ```
69
+ description: This gem aims to provide a reusable model for AWS CloudFormation in Ruby.
70
+ It exposes a DSL for template definition, and a simple, decoupled abstraction of
71
+ a CloudFormation Stack to compile and apply templates.
319
72
  email:
320
73
  - jmanero@rapid7.com
321
74
  executables: