formatron 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +12 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +3 -0
  6. data/.simplecov +7 -0
  7. data/.travis.yml +17 -0
  8. data/CODE_OF_CONDUCT.md +13 -0
  9. data/Gemfile +6 -0
  10. data/Guardfile +16 -0
  11. data/LICENSE.txt +21 -0
  12. data/README.md +93 -0
  13. data/Rakefile +16 -0
  14. data/bin/console +14 -0
  15. data/bin/setup +7 -0
  16. data/exe/formatron +20 -0
  17. data/formatron.gemspec +52 -0
  18. data/lib/formatron.rb +357 -0
  19. data/lib/formatron/aws.rb +197 -0
  20. data/lib/formatron/chef.rb +156 -0
  21. data/lib/formatron/chef/berkshelf.rb +55 -0
  22. data/lib/formatron/chef/keys.rb +48 -0
  23. data/lib/formatron/chef/knife.rb +169 -0
  24. data/lib/formatron/chef_clients.rb +73 -0
  25. data/lib/formatron/cli.rb +33 -0
  26. data/lib/formatron/cli/completion.rb +26 -0
  27. data/lib/formatron/cli/deploy.rb +57 -0
  28. data/lib/formatron/cli/destroy.rb +57 -0
  29. data/lib/formatron/cli/generators/bootstrap.rb +250 -0
  30. data/lib/formatron/cli/generators/credentials.rb +100 -0
  31. data/lib/formatron/cli/generators/instance.rb +118 -0
  32. data/lib/formatron/cli/provision.rb +59 -0
  33. data/lib/formatron/cloud_formation.rb +54 -0
  34. data/lib/formatron/cloud_formation/resources/cloud_formation.rb +27 -0
  35. data/lib/formatron/cloud_formation/resources/ec2.rb +336 -0
  36. data/lib/formatron/cloud_formation/resources/iam.rb +94 -0
  37. data/lib/formatron/cloud_formation/resources/route53.rb +54 -0
  38. data/lib/formatron/cloud_formation/scripts.rb +128 -0
  39. data/lib/formatron/cloud_formation/template.rb +114 -0
  40. data/lib/formatron/cloud_formation/template/parameters.rb +20 -0
  41. data/lib/formatron/cloud_formation/template/vpc.rb +181 -0
  42. data/lib/formatron/cloud_formation/template/vpc/subnet.rb +187 -0
  43. data/lib/formatron/cloud_formation/template/vpc/subnet/acl.rb +147 -0
  44. data/lib/formatron/cloud_formation/template/vpc/subnet/bastion.rb +66 -0
  45. data/lib/formatron/cloud_formation/template/vpc/subnet/chef_server.rb +205 -0
  46. data/lib/formatron/cloud_formation/template/vpc/subnet/instance.rb +162 -0
  47. data/lib/formatron/cloud_formation/template/vpc/subnet/instance/policy.rb +74 -0
  48. data/lib/formatron/cloud_formation/template/vpc/subnet/instance/security_group.rb +117 -0
  49. data/lib/formatron/cloud_formation/template/vpc/subnet/instance/setup.rb +68 -0
  50. data/lib/formatron/cloud_formation/template/vpc/subnet/nat.rb +94 -0
  51. data/lib/formatron/completion.rb +26 -0
  52. data/lib/formatron/completion/completion.sh.erb +35 -0
  53. data/lib/formatron/config.rb +31 -0
  54. data/lib/formatron/config/reader.rb +29 -0
  55. data/lib/formatron/dsl.rb +15 -0
  56. data/lib/formatron/dsl/formatron.rb +25 -0
  57. data/lib/formatron/dsl/formatron/global.rb +19 -0
  58. data/lib/formatron/dsl/formatron/global/ec2.rb +17 -0
  59. data/lib/formatron/dsl/formatron/vpc.rb +17 -0
  60. data/lib/formatron/dsl/formatron/vpc/subnet.rb +27 -0
  61. data/lib/formatron/dsl/formatron/vpc/subnet/acl.rb +18 -0
  62. data/lib/formatron/dsl/formatron/vpc/subnet/chef_server.rb +32 -0
  63. data/lib/formatron/dsl/formatron/vpc/subnet/chef_server/organization.rb +22 -0
  64. data/lib/formatron/dsl/formatron/vpc/subnet/instance.rb +29 -0
  65. data/lib/formatron/dsl/formatron/vpc/subnet/instance/chef.rb +22 -0
  66. data/lib/formatron/dsl/formatron/vpc/subnet/instance/policy.rb +21 -0
  67. data/lib/formatron/dsl/formatron/vpc/subnet/instance/policy/statement.rb +23 -0
  68. data/lib/formatron/dsl/formatron/vpc/subnet/instance/security_group.rb +21 -0
  69. data/lib/formatron/dsl/formatron/vpc/subnet/instance/setup.rb +22 -0
  70. data/lib/formatron/dsl/formatron/vpc/subnet/instance/setup/variable.rb +23 -0
  71. data/lib/formatron/external.rb +61 -0
  72. data/lib/formatron/external/dsl.rb +171 -0
  73. data/lib/formatron/external/outputs.rb +25 -0
  74. data/lib/formatron/generators/bootstrap.rb +90 -0
  75. data/lib/formatron/generators/bootstrap/config.rb +62 -0
  76. data/lib/formatron/generators/bootstrap/ec2.rb +17 -0
  77. data/lib/formatron/generators/bootstrap/formatronfile.rb +52 -0
  78. data/lib/formatron/generators/bootstrap/formatronfile/Formatronfile.erb +79 -0
  79. data/lib/formatron/generators/bootstrap/ssl.rb +35 -0
  80. data/lib/formatron/generators/credentials.rb +17 -0
  81. data/lib/formatron/generators/instance.rb +64 -0
  82. data/lib/formatron/generators/instance/config.rb +47 -0
  83. data/lib/formatron/generators/instance/formatronfile.rb +47 -0
  84. data/lib/formatron/generators/instance/formatronfile/Formatronfile.erb +16 -0
  85. data/lib/formatron/generators/util.rb +14 -0
  86. data/lib/formatron/generators/util/cookbook.rb +65 -0
  87. data/lib/formatron/generators/util/gitignore.rb +16 -0
  88. data/lib/formatron/generators/util/readme.rb +18 -0
  89. data/lib/formatron/logger.rb +8 -0
  90. data/lib/formatron/s3/chef_server_cert.rb +85 -0
  91. data/lib/formatron/s3/chef_server_keys.rb +103 -0
  92. data/lib/formatron/s3/cloud_formation_template.rb +61 -0
  93. data/lib/formatron/s3/configuration.rb +58 -0
  94. data/lib/formatron/s3/path.rb +30 -0
  95. data/lib/formatron/util/dsl.rb +107 -0
  96. data/lib/formatron/util/shell.rb +20 -0
  97. data/lib/formatron/util/vpc.rb +15 -0
  98. data/lib/formatron/version.rb +4 -0
  99. data/support/cloudformation_describe_stacks_response.rb +36 -0
  100. data/support/dsl_test.rb +123 -0
  101. data/support/route53_get_hosted_zone_response.rb +21 -0
  102. data/support/s3_get_object_response.rb +21 -0
  103. data/support/template_test.rb +41 -0
  104. metadata +414 -0
@@ -0,0 +1,20 @@
1
+ require 'formatron/logger'
2
+ require 'open3'
3
+
4
+ class Formatron
5
+ module Util
6
+ # wrapper for shelling out calls so that we can still test
7
+ module Shell
8
+ def self.exec(command)
9
+ Open3.popen2e command do |_stdin, stdout_err, wait_thr|
10
+ # rubocop:disable Lint/AssignmentInCondition
11
+ while line = stdout_err.gets
12
+ # rubocop:enable Lint/AssignmentInCondition
13
+ Formatron::LOG.info line.chomp
14
+ end
15
+ return wait_thr.value.success?
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ class Formatron
2
+ module Util
3
+ # utility methods for VPCs
4
+ module VPC
5
+ def self.instances(symbol, *vpcs)
6
+ subnets = vpcs.each_with_object([]) do |v, a|
7
+ a.concat v.subnet.values
8
+ end
9
+ subnets.each_with_object({}) do |s, o|
10
+ o.merge!(s.send(symbol))
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,4 @@
1
+ # add version to class
2
+ class Formatron
3
+ VERSION = '0.1.0'
4
+ end
@@ -0,0 +1,36 @@
1
+ class Formatron
2
+ module Support
3
+ # Stub CloudFormation describe_stacks response class
4
+ class CloudformationDescribeStacksResponse
5
+ attr_reader :stacks
6
+
7
+ # Stub CloudFormation describe_stacks response.stacks class
8
+ class Stack
9
+ attr_reader :outputs, :stack_status
10
+
11
+ # Stub CloudFormation describe_stacks response.stacks[N].outputs class
12
+ class Output
13
+ attr_reader :output_key, :output_value
14
+
15
+ def initialize(output_key, output_value)
16
+ @output_key = output_key
17
+ @output_value = output_value
18
+ end
19
+ end
20
+
21
+ def initialize(outputs, stack_status)
22
+ @stack_status = stack_status
23
+ @outputs = outputs.map do |key, value|
24
+ Output.new key, value
25
+ end unless outputs.nil?
26
+ end
27
+ end
28
+
29
+ def initialize(outputs, stack_status = 'CREATE_COMPLETE')
30
+ @stacks = [
31
+ Stack.new(outputs, stack_status)
32
+ ]
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,123 @@
1
+ class Formatron
2
+ module Support
3
+ # utilities for testing generated DSL classes
4
+ module DSLTest
5
+ def dsl_before_block(&block)
6
+ before :each do
7
+ params = {}
8
+ params = instance_eval(&block) if block_given?
9
+ @dsl_instance = described_class.new(**params)
10
+ end
11
+ end
12
+
13
+ def dsl_before_hash(&block)
14
+ before :each do
15
+ params = {}
16
+ params = instance_exec(&block) if block_given?
17
+ @dsl_instance = described_class.new(
18
+ 'dsl_key', **params
19
+ )
20
+ end
21
+ end
22
+
23
+ def dsl_property(symbol)
24
+ describe "##{symbol}" do
25
+ it "should set the #{symbol}" do
26
+ expect(@dsl_instance.send(symbol)).to be_nil
27
+ @dsl_instance.send symbol, 'value'
28
+ expect(@dsl_instance.send(symbol)).to eql 'value'
29
+ end
30
+ end
31
+ end
32
+
33
+ # rubocop:disable Metrics/MethodLength
34
+ # rubocop:disable Metrics/AbcSize
35
+ def dsl_block(symbol, cls, &block)
36
+ describe "##{symbol}" do
37
+ it "should set the #{symbol} and yield to the given block" do
38
+ sub = double
39
+ cls = class_double(
40
+ described_class.const_get(cls).name
41
+ ).as_stubbed_const
42
+ expect(sub).to receive(:test).with no_args
43
+ params = {}
44
+ params = instance_exec(&block) if block_given?
45
+ expect(cls).to receive(:new).with(
46
+ **params
47
+ ) { sub }
48
+ @dsl_instance.send symbol, &:test
49
+ expect(@dsl_instance.send(symbol)).to eql(sub)
50
+ end
51
+ end
52
+ end
53
+ # rubocop:enable Metrics/AbcSize
54
+ # rubocop:enable Metrics/MethodLength
55
+
56
+ # rubocop:disable Metrics/MethodLength
57
+ # rubocop:disable Metrics/AbcSize
58
+ def dsl_hash(symbol, cls, keys = %w(sub1 sub2), &block)
59
+ describe "##{symbol}" do
60
+ it "should add an entry to the #{symbol} hash " \
61
+ 'and yield to the given block' do
62
+ subs = keys.each_with_object({}) { |k, o| o[k] = double }
63
+ cls = class_double(
64
+ described_class.const_get(cls).name
65
+ ).as_stubbed_const
66
+ expect(@dsl_instance.send(symbol)).to eql({})
67
+ subs.each do |dsl_key, sub|
68
+ expect(sub).to receive(:test).with no_args
69
+ params = {}
70
+ params = instance_exec(dsl_key, &block) if block_given?
71
+ expect(cls).to receive(:new).with(
72
+ dsl_key,
73
+ **params
74
+ ) { sub }
75
+ @dsl_instance.send symbol, dsl_key, &:test
76
+ end
77
+ expect(@dsl_instance.send(symbol)).to eql(subs)
78
+ end
79
+ end
80
+ end
81
+ # rubocop:enable Metrics/AbcSize
82
+ # rubocop:enable Metrics/MethodLength
83
+
84
+ def dsl_array(symbol)
85
+ describe "##{symbol}" do
86
+ it "should add an entry to the #{symbol} array" do
87
+ subs = %w(sub1 sub2)
88
+ expect(@dsl_instance.send(symbol)).to eql([])
89
+ subs.each do |value|
90
+ @dsl_instance.send symbol, value
91
+ end
92
+ expect(@dsl_instance.send(symbol)).to eql(subs)
93
+ end
94
+ end
95
+ end
96
+
97
+ # rubocop:disable Metrics/AbcSize
98
+ # rubocop:disable Metrics/MethodLength
99
+ def dsl_block_array(symbol, cls)
100
+ describe "##{symbol}" do
101
+ it "should add an entry to the #{symbol} array " \
102
+ 'and yield to the given block' do
103
+ subs = [double, double]
104
+ cls = class_double(
105
+ described_class.const_get(cls).name
106
+ ).as_stubbed_const
107
+ expect(@dsl_instance.send(symbol)).to eql([])
108
+ subs.each do |sub|
109
+ expect(sub).to receive(:test).with no_args
110
+ expect(cls).to receive(:new).with(
111
+ no_args
112
+ ) { sub }
113
+ @dsl_instance.send symbol, &:test
114
+ end
115
+ expect(@dsl_instance.send(symbol)).to eql(subs)
116
+ end
117
+ end
118
+ end
119
+ # rubocop:enable Metrics/AbcSize
120
+ # rubocop:enable Metrics/MethodLength
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,21 @@
1
+ class Formatron
2
+ module Support
3
+ # Stub Route53 get_hosted_zone response class
4
+ class Route53GetHostedZoneResponse
5
+ attr_reader :hosted_zone
6
+
7
+ # Stub Route53 get_hosted_zone response.hosted_zone class
8
+ class HostedZone
9
+ attr_reader :name
10
+
11
+ def initialize(name)
12
+ @name = name
13
+ end
14
+ end
15
+
16
+ def initialize(name)
17
+ @hosted_zone = HostedZone.new name
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class Formatron
2
+ module Support
3
+ # Stub S3 get_object response class
4
+ class S3GetObjectResponse
5
+ attr_reader :body
6
+
7
+ # Stub S3 get_object response.body class
8
+ class Body
9
+ attr_reader :read
10
+
11
+ def initialize(content)
12
+ @read = content
13
+ end
14
+ end
15
+
16
+ def initialize(content)
17
+ @body = Body.new content
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,41 @@
1
+ class Formatron
2
+ module Support
3
+ # utilities for testing CloudFormation template classes
4
+ module TemplateTest
5
+ # rubocop:disable Metrics/MethodLength
6
+ # rubocop:disable Metrics/AbcSize
7
+ def test_instances(
8
+ tag:,
9
+ args:,
10
+ template_cls:,
11
+ dsl_cls:
12
+ )
13
+ @results[tag] = []
14
+ @dsl_instances[tag] = {}
15
+ template_class = class_double(template_cls).as_stubbed_const(
16
+ transfer_nested_constants: true
17
+ )
18
+ (0..9).each do |index|
19
+ value = "#{tag}#{index}"
20
+ @results[tag][index] = value
21
+ template_instance = instance_double template_cls
22
+ dsl_instance = instance_double dsl_cls
23
+ allow(template_class).to receive(:new).with(
24
+ tag => dsl_instance,
25
+ **args.call(value)
26
+ ) { template_instance }
27
+ allow(template_instance).to receive(:merge) do |resources:, outputs:|
28
+ resources[tag] ||= []
29
+ resources[tag][index] = value
30
+ outputs[tag] ||= []
31
+ outputs[tag][index] = value
32
+ end
33
+ @dsl_instances[tag][value] =
34
+ dsl_instance
35
+ end
36
+ end
37
+ # rubocop:enable Metrics/AbcSize
38
+ # rubocop:enable Metrics/MethodLength
39
+ end
40
+ end
41
+ end
metadata ADDED
@@ -0,0 +1,414 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: formatron
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Peter Halliday
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-11-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-nc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.13'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.13'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.10'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.10'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-remote
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-nav
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.2'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: coveralls
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.8'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.8'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
145
+ version: '0.33'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: '0.33'
153
+ - !ruby/object:Gem::Dependency
154
+ name: guard-livereload
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '2.4'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '2.4'
167
+ - !ruby/object:Gem::Dependency
168
+ name: guard-rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: fakefs
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.6'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '0.6'
195
+ - !ruby/object:Gem::Dependency
196
+ name: aws-sdk
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '2.1'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '2.1'
209
+ - !ruby/object:Gem::Dependency
210
+ name: commander
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '4.3'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '4.3'
223
+ - !ruby/object:Gem::Dependency
224
+ name: curb
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '0.8'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '0.8'
237
+ - !ruby/object:Gem::Dependency
238
+ name: deep_merge
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '1.0'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '1.0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: berkshelf
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '4.0'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '4.0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: chef
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: '12.5'
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: '12.5'
279
+ description: |
280
+ AWS/Chef deployment tool based around Chef Server and AWS CloudFormation
281
+ email:
282
+ - pghalliday@gmail.com
283
+ executables:
284
+ - formatron
285
+ extensions: []
286
+ extra_rdoc_files: []
287
+ files:
288
+ - ".coveralls.yml"
289
+ - ".gitignore"
290
+ - ".rspec"
291
+ - ".rubocop.yml"
292
+ - ".simplecov"
293
+ - ".travis.yml"
294
+ - CODE_OF_CONDUCT.md
295
+ - Gemfile
296
+ - Guardfile
297
+ - LICENSE.txt
298
+ - README.md
299
+ - Rakefile
300
+ - bin/console
301
+ - bin/setup
302
+ - exe/formatron
303
+ - formatron.gemspec
304
+ - lib/formatron.rb
305
+ - lib/formatron/aws.rb
306
+ - lib/formatron/chef.rb
307
+ - lib/formatron/chef/berkshelf.rb
308
+ - lib/formatron/chef/keys.rb
309
+ - lib/formatron/chef/knife.rb
310
+ - lib/formatron/chef_clients.rb
311
+ - lib/formatron/cli.rb
312
+ - lib/formatron/cli/completion.rb
313
+ - lib/formatron/cli/deploy.rb
314
+ - lib/formatron/cli/destroy.rb
315
+ - lib/formatron/cli/generators/bootstrap.rb
316
+ - lib/formatron/cli/generators/credentials.rb
317
+ - lib/formatron/cli/generators/instance.rb
318
+ - lib/formatron/cli/provision.rb
319
+ - lib/formatron/cloud_formation.rb
320
+ - lib/formatron/cloud_formation/resources/cloud_formation.rb
321
+ - lib/formatron/cloud_formation/resources/ec2.rb
322
+ - lib/formatron/cloud_formation/resources/iam.rb
323
+ - lib/formatron/cloud_formation/resources/route53.rb
324
+ - lib/formatron/cloud_formation/scripts.rb
325
+ - lib/formatron/cloud_formation/template.rb
326
+ - lib/formatron/cloud_formation/template/parameters.rb
327
+ - lib/formatron/cloud_formation/template/vpc.rb
328
+ - lib/formatron/cloud_formation/template/vpc/subnet.rb
329
+ - lib/formatron/cloud_formation/template/vpc/subnet/acl.rb
330
+ - lib/formatron/cloud_formation/template/vpc/subnet/bastion.rb
331
+ - lib/formatron/cloud_formation/template/vpc/subnet/chef_server.rb
332
+ - lib/formatron/cloud_formation/template/vpc/subnet/instance.rb
333
+ - lib/formatron/cloud_formation/template/vpc/subnet/instance/policy.rb
334
+ - lib/formatron/cloud_formation/template/vpc/subnet/instance/security_group.rb
335
+ - lib/formatron/cloud_formation/template/vpc/subnet/instance/setup.rb
336
+ - lib/formatron/cloud_formation/template/vpc/subnet/nat.rb
337
+ - lib/formatron/completion.rb
338
+ - lib/formatron/completion/completion.sh.erb
339
+ - lib/formatron/config.rb
340
+ - lib/formatron/config/reader.rb
341
+ - lib/formatron/dsl.rb
342
+ - lib/formatron/dsl/formatron.rb
343
+ - lib/formatron/dsl/formatron/global.rb
344
+ - lib/formatron/dsl/formatron/global/ec2.rb
345
+ - lib/formatron/dsl/formatron/vpc.rb
346
+ - lib/formatron/dsl/formatron/vpc/subnet.rb
347
+ - lib/formatron/dsl/formatron/vpc/subnet/acl.rb
348
+ - lib/formatron/dsl/formatron/vpc/subnet/chef_server.rb
349
+ - lib/formatron/dsl/formatron/vpc/subnet/chef_server/organization.rb
350
+ - lib/formatron/dsl/formatron/vpc/subnet/instance.rb
351
+ - lib/formatron/dsl/formatron/vpc/subnet/instance/chef.rb
352
+ - lib/formatron/dsl/formatron/vpc/subnet/instance/policy.rb
353
+ - lib/formatron/dsl/formatron/vpc/subnet/instance/policy/statement.rb
354
+ - lib/formatron/dsl/formatron/vpc/subnet/instance/security_group.rb
355
+ - lib/formatron/dsl/formatron/vpc/subnet/instance/setup.rb
356
+ - lib/formatron/dsl/formatron/vpc/subnet/instance/setup/variable.rb
357
+ - lib/formatron/external.rb
358
+ - lib/formatron/external/dsl.rb
359
+ - lib/formatron/external/outputs.rb
360
+ - lib/formatron/generators/bootstrap.rb
361
+ - lib/formatron/generators/bootstrap/config.rb
362
+ - lib/formatron/generators/bootstrap/ec2.rb
363
+ - lib/formatron/generators/bootstrap/formatronfile.rb
364
+ - lib/formatron/generators/bootstrap/formatronfile/Formatronfile.erb
365
+ - lib/formatron/generators/bootstrap/ssl.rb
366
+ - lib/formatron/generators/credentials.rb
367
+ - lib/formatron/generators/instance.rb
368
+ - lib/formatron/generators/instance/config.rb
369
+ - lib/formatron/generators/instance/formatronfile.rb
370
+ - lib/formatron/generators/instance/formatronfile/Formatronfile.erb
371
+ - lib/formatron/generators/util.rb
372
+ - lib/formatron/generators/util/cookbook.rb
373
+ - lib/formatron/generators/util/gitignore.rb
374
+ - lib/formatron/generators/util/readme.rb
375
+ - lib/formatron/logger.rb
376
+ - lib/formatron/s3/chef_server_cert.rb
377
+ - lib/formatron/s3/chef_server_keys.rb
378
+ - lib/formatron/s3/cloud_formation_template.rb
379
+ - lib/formatron/s3/configuration.rb
380
+ - lib/formatron/s3/path.rb
381
+ - lib/formatron/util/dsl.rb
382
+ - lib/formatron/util/shell.rb
383
+ - lib/formatron/util/vpc.rb
384
+ - lib/formatron/version.rb
385
+ - support/cloudformation_describe_stacks_response.rb
386
+ - support/dsl_test.rb
387
+ - support/route53_get_hosted_zone_response.rb
388
+ - support/s3_get_object_response.rb
389
+ - support/template_test.rb
390
+ homepage: https://github.com/pghalliday/formatron
391
+ licenses:
392
+ - MIT
393
+ metadata: {}
394
+ post_install_message:
395
+ rdoc_options: []
396
+ require_paths:
397
+ - lib
398
+ required_ruby_version: !ruby/object:Gem::Requirement
399
+ requirements:
400
+ - - ">="
401
+ - !ruby/object:Gem::Version
402
+ version: '0'
403
+ required_rubygems_version: !ruby/object:Gem::Requirement
404
+ requirements:
405
+ - - ">="
406
+ - !ruby/object:Gem::Version
407
+ version: '0'
408
+ requirements: []
409
+ rubyforge_project:
410
+ rubygems_version: 2.2.2
411
+ signing_key:
412
+ specification_version: 4
413
+ summary: AWS/Chef Deployment Tool
414
+ test_files: []