terraforming 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +10 -0
  5. data/CODE_OF_CONDUCT.md +13 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +12 -0
  8. data/LICENSE +22 -0
  9. data/README.md +132 -0
  10. data/Rakefile +7 -0
  11. data/bin/terraforming +5 -0
  12. data/lib/terraforming.rb +22 -0
  13. data/lib/terraforming/cli.rb +69 -0
  14. data/lib/terraforming/resource/db_parameter_group.rb +58 -0
  15. data/lib/terraforming/resource/db_security_group.rb +53 -0
  16. data/lib/terraforming/resource/db_subnet_group.rb +52 -0
  17. data/lib/terraforming/resource/ec2.rb +69 -0
  18. data/lib/terraforming/resource/elb.rb +56 -0
  19. data/lib/terraforming/resource/rds.rb +74 -0
  20. data/lib/terraforming/resource/s3.rb +51 -0
  21. data/lib/terraforming/resource/security_group.rb +56 -0
  22. data/lib/terraforming/resource/subnet.rb +55 -0
  23. data/lib/terraforming/resource/vpc.rb +67 -0
  24. data/lib/terraforming/template/tf/db_parameter_group.erb +17 -0
  25. data/lib/terraforming/template/tf/db_security_group.erb +26 -0
  26. data/lib/terraforming/template/tf/db_subnet_group.erb +8 -0
  27. data/lib/terraforming/template/tf/ec2.erb +27 -0
  28. data/lib/terraforming/template/tf/elb.erb +28 -0
  29. data/lib/terraforming/template/tf/rds.erb +25 -0
  30. data/lib/terraforming/template/tf/s3.erb +7 -0
  31. data/lib/terraforming/template/tf/security_group.erb +46 -0
  32. data/lib/terraforming/template/tf/subnet.erb +15 -0
  33. data/lib/terraforming/template/tf/vpc.erb +15 -0
  34. data/lib/terraforming/util.rb +34 -0
  35. data/lib/terraforming/version.rb +3 -0
  36. data/scripts/console +14 -0
  37. data/scripts/setup +7 -0
  38. data/terraforming.gemspec +34 -0
  39. metadata +242 -0
@@ -0,0 +1,17 @@
1
+ <% db_parameter_groups.each do |parameter_group| -%>
2
+ resource "aws_db_parameter_group" "<%= module_name_of(parameter_group) %>" {
3
+ name = "<%= parameter_group.db_parameter_group_name %>"
4
+ family = "<%= parameter_group.db_parameter_group_family %>"
5
+ description = "<%= parameter_group.description %>"
6
+
7
+ <% db_parameters_in(parameter_group).each do |parameter| -%>
8
+ parameter {
9
+ name = "<%= parameter.parameter_name %>"
10
+ value = "<%= parameter.parameter_value || '' %>"
11
+ apply_method = "<%= parameter.apply_method || 'immediate' %>"
12
+ }
13
+
14
+ <% end -%>
15
+ }
16
+
17
+ <% end -%>
@@ -0,0 +1,26 @@
1
+ <% db_security_groups.each do |security_group| -%>
2
+ resource "aws_db_security_group" "<%= module_name_of(security_group) %>" {
3
+ name = "<%= security_group.db_security_group_name %>"
4
+ description = "<%= security_group.db_security_group_description %>"
5
+
6
+ <% security_group.ip_ranges.each do |cidr| -%>
7
+ ingress {
8
+ cidr = "<%= cidr.cidrip %>"
9
+ security_group_name = ""
10
+ security_group_id = ""
11
+ security_group_owner_id = ""
12
+ }
13
+
14
+ <% end -%>
15
+ <% security_group.ec2_security_groups.each do |ec2_sg| -%>
16
+ ingress {
17
+ cidr = ""
18
+ security_group_name = "<%= ec2_sg.ec2_security_group_name %>"
19
+ security_group_id = "<%= ec2_sg.ec2_security_group_id %>"
20
+ security_group_owner_id = "<%= ec2_sg.ec2_security_group_owner_id %>"
21
+ }
22
+
23
+ <% end -%>
24
+ }
25
+
26
+ <% end -%>
@@ -0,0 +1,8 @@
1
+ <% db_subnet_groups.each do |subnet_group| -%>
2
+ resource "aws_db_subnet_group" "<%= module_name_of(subnet_group) %>" {
3
+ name = "<%= subnet_group.db_subnet_group_name %>"
4
+ description = "<%= subnet_group.db_subnet_group_description %>"
5
+ subnet_ids = <%= subnet_group.subnets.map { |subnet| subnet.subnet_identifier }.inspect %>
6
+ }
7
+
8
+ <% end -%>
@@ -0,0 +1,27 @@
1
+ <% instances.each do |instance| -%>
2
+ resource "aws_instance" "<%= module_name_of(instance) %>" {
3
+ ami = "<%= instance.image_id %>"
4
+ availability_zone = "<%= instance.placement.availability_zone %>"
5
+ ebs_optimized = <%= instance.ebs_optimized %>
6
+ instance_type = "<%= instance.instance_type %>"
7
+ key_name = "<%= instance.key_name %>"
8
+ security_groups = <%= instance.security_groups.map { |sg| sg.group_id }.inspect %>
9
+ subnet_id = "<%= instance.subnet_id %>"
10
+ associate_public_ip_address = true
11
+ private_ip = "<%= instance.private_ip_address %>"
12
+ source_dest_check = <%= instance.source_dest_check %>
13
+
14
+ <% instance.block_device_mappings.each do |block_device| -%>
15
+ ebs_block_device {
16
+ device_name = "<%= block_device.device_name %>"
17
+ }
18
+
19
+ <% end -%>
20
+ tags {
21
+ <% instance.tags.each do |tag| -%>
22
+ <%= tag.key %> = "<%= tag.value %>"
23
+ <% end -%>
24
+ }
25
+ }
26
+
27
+ <% end -%>
@@ -0,0 +1,28 @@
1
+ <% load_balancers.each do |load_balancer| -%>
2
+ resource "aws_elb" "<%= module_name_of(load_balancer) %>" {
3
+ name = "<%= load_balancer.load_balancer_name %>"
4
+ availability_zones = <%= load_balancer.availability_zones.inspect %>
5
+ subnets = <%= load_balancer.subnets.inspect %>
6
+ security_groups = <%= load_balancer.security_groups.inspect %>
7
+ instances = <%= load_balancer.instances.map { |instance| instance.instance_id }.inspect %>
8
+
9
+ <% load_balancer.listener_descriptions.map { |ld| ld.listener }.map do |listener| -%>
10
+ listener {
11
+ instance_port = <%= listener.instance_port %>
12
+ instance_protocol = "<%= listener.instance_protocol.downcase %>"
13
+ lb_port = <%= listener.load_balancer_port %>
14
+ lb_protocol = "<%= listener.protocol.downcase %>"
15
+ ssl_certificate_id = "<%= listener.ssl_certificate_id %>"
16
+ }
17
+
18
+ <% end -%>
19
+ health_check {
20
+ healthy_threshold = <%= load_balancer.health_check.healthy_threshold %>
21
+ unhealthy_threshold = <%= load_balancer.health_check.unhealthy_threshold %>
22
+ interval = <%= load_balancer.health_check.interval %>
23
+ target = "<%= load_balancer.health_check.target %>"
24
+ timeout = <%= load_balancer.health_check.timeout %>
25
+ }
26
+ }
27
+
28
+ <% end -%>
@@ -0,0 +1,25 @@
1
+ <% db_instances.each do |instance| -%>
2
+ resource "aws_db_instance" "<%= instance.db_instance_identifier %>" {
3
+ identifier = "<%= module_name_of(instance) %>"
4
+ allocated_storage = <%= instance.allocated_storage %>
5
+ storage_type = "<%= instance.storage_type %>"
6
+ engine = "<%= instance.engine %>"
7
+ engine_version = "<%= instance.engine_version %>"
8
+ instance_class = "<%= instance.db_instance_class %>"
9
+ name = "<%= instance.db_name %>"
10
+ username = "<%= instance.master_username %>"
11
+ password = "xxxxxxxx"
12
+ port = <%= instance.endpoint.port %>
13
+ publicly_accessible = <%= instance.publicly_accessible %>
14
+ availability_zone = "<%= instance.availability_zone %>"
15
+ security_group_names = <%= instance.db_security_groups.map { |sg| sg.db_security_group_name }.inspect %>
16
+ vpc_security_group_ids = <%= instance.vpc_security_groups.map { |sg| sg.vpc_security_group_id }.inspect %>
17
+ db_subnet_group_name = "<%= instance.db_subnet_group ? instance.db_subnet_group.db_subnet_group_name : "" %>"
18
+ parameter_group_name = "<%= instance.db_parameter_groups[0].db_parameter_group_name %>"
19
+ multi_az = <%= instance.multi_az %>
20
+ backup_retention_period = <%= instance.backup_retention_period %>
21
+ backup_window = "<%= instance.preferred_backup_window %>"
22
+ maintenance_window = "<%= instance.preferred_maintenance_window %>"
23
+ final_snapshot_identifier = "<%= instance.db_instance_identifier %>-final"
24
+ }
25
+ <% end -%>
@@ -0,0 +1,7 @@
1
+ <% buckets.each do |bucket| -%>
2
+ resource "aws_s3_bucket" "<%= module_name_of(bucket) %>" {
3
+ bucket = "<%= bucket.name %>"
4
+ acl = "private"
5
+ }
6
+
7
+ <% end -%>
@@ -0,0 +1,46 @@
1
+ <% security_groups.each do |security_group| -%>
2
+ resource "aws_security_group" "<%= module_name_of(security_group) %>" {
3
+ name = "<%= security_group.group_name %>"
4
+ description = "<%= security_group.description %>"
5
+ owner_id = "<%= security_group.owner_id %>"
6
+ vpc_id = "<%= security_group.vpc_id || '' %>"
7
+
8
+ <% security_group.ip_permissions.each do |permission| -%>
9
+ ingress {
10
+ from_port = <%= permission.from_port || 0 %>
11
+ to_port = <%= permission.to_port || 0 %>
12
+ protocol = "<%= permission.ip_protocol %>"
13
+ <%- if permission.ip_ranges.length > 0 -%>
14
+ cidr_blocks = <%= permission.ip_ranges.map { |range| range.cidr_ip }.inspect %>
15
+ <%- end -%>
16
+ <%- if permission.user_id_group_pairs.length > 0 -%>
17
+ security_groups = <%= permission.user_id_group_pairs.map { |range| range.group_id }.inspect %>
18
+ <%- end -%>
19
+ }
20
+
21
+ <% end -%>
22
+
23
+ <% security_group.ip_permissions_egress.each do |permission| -%>
24
+ egress {
25
+ from_port = <%= permission.from_port || 0 %>
26
+ to_port = <%= permission.to_port || 0 %>
27
+ protocol = "<%= permission.ip_protocol %>"
28
+ <%- if permission.ip_ranges.length > 0 -%>
29
+ cidr_blocks = <%= permission.ip_ranges.map { |range| range.cidr_ip }.inspect %>
30
+ <%- end -%>
31
+ <%- if permission.user_id_group_pairs.length > 0 -%>
32
+ security_groups = <%= permission.user_id_group_pairs.map { |range| range.group_id }.inspect %>
33
+ <%- end -%>
34
+ }
35
+
36
+ <% end -%>
37
+ <% if security_group.tags.length > 0 -%>
38
+ tags {
39
+ <% security_group.tags.each do |tag| -%>
40
+ <%= tag.key %> = "<%= tag.value %>"
41
+ <% end -%>
42
+ }
43
+ <% end -%>
44
+ }
45
+
46
+ <% end -%>
@@ -0,0 +1,15 @@
1
+ <% subnets.each do |subnet| -%>
2
+ resource "aws_subnet" "<%= module_name_of(subnet) %>" {
3
+ vpc_id = "<%= subnet.vpc_id %>"
4
+ cidr_block = "<%= subnet.cidr_block %>"
5
+ availability_zone = "<%= subnet.availability_zone %>"
6
+ map_public_ip_on_launch = <%= subnet.map_public_ip_on_launch %>
7
+
8
+ tags {
9
+ <% subnet.tags.each do |tag| -%>
10
+ <%= tag.key %> = "<%= tag.value %>"
11
+ <% end -%>
12
+ }
13
+ }
14
+
15
+ <% end -%>
@@ -0,0 +1,15 @@
1
+ <% vpcs.each do |vpc| -%>
2
+ resource "aws_vpc" "<%= module_name_of(vpc) %>" {
3
+ cidr_block = "<%= vpc.cidr_block %>"
4
+ enable_dns_hostnames = <%= enable_dns_hostnames?(vpc) %>
5
+ enable_dns_support = <%= enable_dns_support?(vpc) %>
6
+ instance_tenancy = "<%= vpc.instance_tenancy %>"
7
+
8
+ tags {
9
+ <% vpc.tags.each do |tag| -%>
10
+ <%= tag.key %> = "<%= tag.value %>"
11
+ <% end -%>
12
+ }
13
+ }
14
+
15
+ <% end -%>
@@ -0,0 +1,34 @@
1
+ module Terraforming::Util
2
+ def apply_template(client, erb)
3
+ ERB.new(open(template_path(erb)).read, nil, "-").result(binding)
4
+ end
5
+
6
+ def name_from_tag(resource, default_name)
7
+ name_tag = resource.tags.find { |tag| tag.key == "Name" }
8
+ name_tag ? name_tag.value : default_name
9
+ end
10
+
11
+ def normalize_module_name(name)
12
+ name.gsub(/[^a-zA-Z0-9_-]/, "-")
13
+ end
14
+
15
+ def template_path(template_name)
16
+ File.join(File.expand_path(File.dirname(__FILE__)), "template", template_name) << ".erb"
17
+ end
18
+
19
+ def generate_tfstate(resources)
20
+ tfstate = {
21
+ "version" => 1,
22
+ "serial" => 1,
23
+ "modules" => {
24
+ "path" => [
25
+ "root"
26
+ ],
27
+ "outputs" => {},
28
+ "resources" => resources
29
+ }
30
+ }
31
+
32
+ JSON.pretty_generate(tfstate)
33
+ end
34
+ end
@@ -0,0 +1,3 @@
1
+ module Terraforming
2
+ VERSION = "0.0.1"
3
+ end
data/scripts/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "terraforming"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/scripts/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'terraforming/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "terraforming"
8
+ spec.version = Terraforming::VERSION
9
+ spec.authors = ["Daisuke Fujita"]
10
+ spec.email = ["dtanshi45@gmail.com"]
11
+
12
+ spec.summary = %q{Export existing AWS resources to Terraform style (tf, tfstate)}
13
+ spec.description = %q{Export existing AWS resources to Terraform style (tf, tfstate)}
14
+ spec.homepage = "https://github.com/dtan4/terraforming"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "bin"
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency "aws-sdk", "~> 2.0", ">= 2.0.36"
23
+ spec.add_dependency "oj"
24
+ spec.add_dependency "ox"
25
+ spec.add_dependency "thor"
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.7"
28
+ spec.add_development_dependency "codeclimate-test-reporter"
29
+ spec.add_development_dependency "guard"
30
+ spec.add_development_dependency "guard-rspec"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "rspec", "~> 3.2"
33
+ spec.add_development_dependency "terminal-notifier-guard"
34
+ end
metadata ADDED
@@ -0,0 +1,242 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: terraforming
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Daisuke Fujita
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.36
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.0.36
33
+ - !ruby/object:Gem::Dependency
34
+ name: oj
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: ox
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: thor
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: bundler
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.7'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.7'
89
+ - !ruby/object:Gem::Dependency
90
+ name: codeclimate-test-reporter
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: guard
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: guard-rspec
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rake
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '10.0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '10.0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rspec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.2'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '3.2'
159
+ - !ruby/object:Gem::Dependency
160
+ name: terminal-notifier-guard
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ description: Export existing AWS resources to Terraform style (tf, tfstate)
174
+ email:
175
+ - dtanshi45@gmail.com
176
+ executables:
177
+ - terraforming
178
+ extensions: []
179
+ extra_rdoc_files: []
180
+ files:
181
+ - ".gitignore"
182
+ - ".rspec"
183
+ - ".travis.yml"
184
+ - CODE_OF_CONDUCT.md
185
+ - Gemfile
186
+ - Guardfile
187
+ - LICENSE
188
+ - README.md
189
+ - Rakefile
190
+ - bin/terraforming
191
+ - lib/terraforming.rb
192
+ - lib/terraforming/cli.rb
193
+ - lib/terraforming/resource/db_parameter_group.rb
194
+ - lib/terraforming/resource/db_security_group.rb
195
+ - lib/terraforming/resource/db_subnet_group.rb
196
+ - lib/terraforming/resource/ec2.rb
197
+ - lib/terraforming/resource/elb.rb
198
+ - lib/terraforming/resource/rds.rb
199
+ - lib/terraforming/resource/s3.rb
200
+ - lib/terraforming/resource/security_group.rb
201
+ - lib/terraforming/resource/subnet.rb
202
+ - lib/terraforming/resource/vpc.rb
203
+ - lib/terraforming/template/tf/db_parameter_group.erb
204
+ - lib/terraforming/template/tf/db_security_group.erb
205
+ - lib/terraforming/template/tf/db_subnet_group.erb
206
+ - lib/terraforming/template/tf/ec2.erb
207
+ - lib/terraforming/template/tf/elb.erb
208
+ - lib/terraforming/template/tf/rds.erb
209
+ - lib/terraforming/template/tf/s3.erb
210
+ - lib/terraforming/template/tf/security_group.erb
211
+ - lib/terraforming/template/tf/subnet.erb
212
+ - lib/terraforming/template/tf/vpc.erb
213
+ - lib/terraforming/util.rb
214
+ - lib/terraforming/version.rb
215
+ - scripts/console
216
+ - scripts/setup
217
+ - terraforming.gemspec
218
+ homepage: https://github.com/dtan4/terraforming
219
+ licenses:
220
+ - MIT
221
+ metadata: {}
222
+ post_install_message:
223
+ rdoc_options: []
224
+ require_paths:
225
+ - lib
226
+ required_ruby_version: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ required_rubygems_version: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ requirements: []
237
+ rubyforge_project:
238
+ rubygems_version: 2.4.5
239
+ signing_key:
240
+ specification_version: 4
241
+ summary: Export existing AWS resources to Terraform style (tf, tfstate)
242
+ test_files: []