formatron 0.1.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.
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: []