terraforming 0.10.0 → 0.11.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.
- checksums.yaml +4 -4
- data/.travis.yml +7 -1
- data/CHANGELOG.md +13 -0
- data/CONTRIBUTING.md +24 -0
- data/README.md +3 -2
- data/lib/terraforming.rb +2 -11
- data/lib/terraforming/cli.rb +7 -2
- data/lib/terraforming/resource/cloud_watch_alarm.rb +87 -0
- data/lib/terraforming/resource/iam_user.rb +2 -1
- data/lib/terraforming/template/tf/cloud_watch_alarm.erb +33 -0
- data/lib/terraforming/template/tf/ec2.erb +4 -4
- data/lib/terraforming/version.rb +1 -1
- data/terraforming.gemspec +3 -4
- metadata +12 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb884d952f74d4079fcfb52bc4798a8a90d98587
|
4
|
+
data.tar.gz: 23fe2b8eeb2eea9843ecaf1dee41c5a387ea2a57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72708c53e470e3d7b7d673b51b22bcd81a83af77e18e5166008880c164e14da85c16646bb20b91a6922c51bb88b914b365e4b14785e45a9152cc580567e62444
|
7
|
+
data.tar.gz: 810a584ff6e7b4f5ba4e4a07a44ae4685b629eb4ec523bf8f7397bb362b7de9134ff9654a31105dc06cccf8993ed87d7a99b8ac8a1510793cc929795f0c2efc5
|
data/.travis.yml
CHANGED
@@ -4,7 +4,13 @@ rvm:
|
|
4
4
|
- 2.2.5
|
5
5
|
- 2.1.10
|
6
6
|
env:
|
7
|
-
|
7
|
+
global:
|
8
|
+
- secure: n0mxwnyjuXI4mJO4mp++2TnsPJ+XgCF/J1U2L5piE5j3xMhSU+5V0JrA1uFlS0Pemb44M7BjgmF9S4G35BwyAQpctpCYhqy9tFa6+Y6nxEv5hCv2cZz7BSAZM6eb+zq20409hxTHRaQOr1DBeE4R5S2PrmOXRqvYfTRv3LNSLFk=
|
9
|
+
matrix:
|
10
|
+
- OJ=0
|
11
|
+
- OJ=1
|
12
|
+
before_script:
|
13
|
+
- if [[ $OJ -eq 1 ]]; then gem install oj; fi
|
8
14
|
notifications:
|
9
15
|
slack:
|
10
16
|
secure: iTI8zpxXQJqf5e9ix4buLRsGlf9lJRZqA9Fawdqm41msBrC0Zsp31XzBS7ZPiTcdHhImtOC4lccTCW2C8kR6waaG5VOF0U2BwyKaNFKsXMaVk6yrNhYkvJ9YVicuU9hL+JKLyBrSDYQ7+vXcHqaz4H4dYpPThrv6sfq4jBOp+eM=
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
# [v0.11.0](https://github.com/dtan4/terraforming/releases/tag/v0.11.0) (2016-11-14)
|
2
|
+
|
3
|
+
## Resource
|
4
|
+
|
5
|
+
- AWS CloudWatch alarm [#273](https://github.com/dtan4/terraforming/pull/273) (thanks @eredi93)
|
6
|
+
|
7
|
+
## Fixed / Updated
|
8
|
+
|
9
|
+
- Remove native extension gems and use wrapper gem [#275](https://github.com/dtan4/terraforming/pull/275)
|
10
|
+
- Generate `iops` field only with io1 volume [#271](https://github.com/dtan4/terraforming/pull/271)
|
11
|
+
- Set `force_destroy: false` for IAM users [#267](https://github.com/dtan4/terraforming/pull/267) (thanks @raylu)
|
12
|
+
- Remove commands to delete empty files in export in README.md [#261](https://github.com/dtan4/terraforming/pull/261) (thanks @benmanns)
|
13
|
+
|
1
14
|
# [v0.10.0](https://github.com/dtan4/terraforming/releases/tag/v0.10.0) (2016-08-24)
|
2
15
|
|
3
16
|
## Resource
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
I love pull requests from everyone! By the way, I have a favor to ask you with your contribution :bow:
|
4
|
+
|
5
|
+
## Making changes
|
6
|
+
|
7
|
+
- Currently, this gem supports only __AWS__ resources. Other providers are supported as separated gems.
|
8
|
+
- Datadog: [terraforming-datadog](https://github.com/dtan4/terraforming-datadog)
|
9
|
+
- DNSimple: [terraforming-dnsimple](https://github.com/dtan4/terraforming-dnsimple)
|
10
|
+
- Do not bump gem version in your pull request.
|
11
|
+
- Please follow the coding style of _existing_ code. Most of trivial rules can be checked by [RuboCop](https://github.com/bbatsov/rubocop) ([`rubocop.yml`](https://github.com/dtan4/terraforming/blob/master/.rubocop.yml)).
|
12
|
+
- Coding style is checked automatically by [SideCI](https://sideci.com) right after creating pull request. If there is error, SideCI comments at the point error occured.
|
13
|
+
- Please write tests for your changes. All tests are written with [RSpec](http://rspec.info/).
|
14
|
+
|
15
|
+
## Adding new resource
|
16
|
+
|
17
|
+
- Class name must match to Terraforming's resource name without `aws_` prefix, and be a complete resource name.
|
18
|
+
- e.g. `aws_iam_group_membership`: `IAMGroupMembership`
|
19
|
+
- Yes, I know that some of resources I added a long ago don't follow to this rule...
|
20
|
+
- File name must also match to Terraforming's resource name without `aws_` prefix.
|
21
|
+
- e.g. `aws_iam_group_membership`: `iam_group_membership.rb`
|
22
|
+
- Command name should be abbreviation.
|
23
|
+
- e.g. `aws_iam_group_membership`: `iamgp`
|
24
|
+
- Please check generation result by executing `terraform plan` with real resources. There should be NO diff with generated `.tf` and `.tfstate`.
|
data/README.md
CHANGED
@@ -77,6 +77,7 @@ PS C:\> terraforming ec2 --use-bundled-cert
|
|
77
77
|
$ terraforming
|
78
78
|
Commands:
|
79
79
|
terraforming asg # AutoScaling Group
|
80
|
+
terraforming cwa # CloudWatch Alarm
|
80
81
|
terraforming dbpg # Database Parameter Group
|
81
82
|
terraforming dbsg # Database Security Group
|
82
83
|
terraforming dbsn # Database Subnet Group
|
@@ -337,8 +338,8 @@ Example assuming you want to export everything from us-west-2 and you are using
|
|
337
338
|
```bash
|
338
339
|
export AWS_REGION=us-west-2
|
339
340
|
terraforming help | grep terraforming | grep -v help | awk '{print "terraforming", $2, "--profile", "default", ">", $2".tf";}' | bash
|
340
|
-
#
|
341
|
-
find . -type f | xargs wc -l | grep '1 .'
|
341
|
+
# find files that only have 1 empty line (likely nothing in AWS)
|
342
|
+
find . -type f -name '*.tf' | xargs wc -l | grep ' 1 .'
|
342
343
|
```
|
343
344
|
|
344
345
|
## Run as Docker container [](https://quay.io/repository/dtan4/terraforming)
|
data/lib/terraforming.rb
CHANGED
@@ -1,16 +1,6 @@
|
|
1
|
-
require "oj"
|
2
|
-
|
3
|
-
begin
|
4
|
-
require "ox"
|
5
|
-
rescue NameError => e
|
6
|
-
spec = Gem::Specification.stubs.find { |s| s.name == 'ox' }
|
7
|
-
raise e unless spec
|
8
|
-
require File.join(spec.gem_dir, "lib/ox")
|
9
|
-
end
|
10
|
-
|
11
1
|
require "aws-sdk-core"
|
12
2
|
require "erb"
|
13
|
-
require "
|
3
|
+
require "multi_json"
|
14
4
|
require "thor"
|
15
5
|
require "zlib"
|
16
6
|
|
@@ -19,6 +9,7 @@ require "terraforming/version"
|
|
19
9
|
|
20
10
|
require "terraforming/cli"
|
21
11
|
require "terraforming/resource/auto_scaling_group"
|
12
|
+
require "terraforming/resource/cloud_watch_alarm"
|
22
13
|
require "terraforming/resource/db_parameter_group"
|
23
14
|
require "terraforming/resource/db_security_group"
|
24
15
|
require "terraforming/resource/db_subnet_group"
|
data/lib/terraforming/cli.rb
CHANGED
@@ -14,6 +14,11 @@ module Terraforming
|
|
14
14
|
execute(Terraforming::Resource::AutoScalingGroup, options)
|
15
15
|
end
|
16
16
|
|
17
|
+
desc "cwa", "CloudWatch Alarm"
|
18
|
+
def cwa
|
19
|
+
execute(Terraforming::Resource::CloudWatchAlarm, options)
|
20
|
+
end
|
21
|
+
|
17
22
|
desc "dbpg", "Database Parameter Group"
|
18
23
|
def dbpg
|
19
24
|
execute(Terraforming::Resource::DBParameterGroup, options)
|
@@ -216,10 +221,10 @@ module Terraforming
|
|
216
221
|
end
|
217
222
|
|
218
223
|
def tfstate(klass, tfstate_path)
|
219
|
-
tfstate = tfstate_path ?
|
224
|
+
tfstate = tfstate_path ? MultiJson.load(open(tfstate_path).read) : tfstate_skeleton
|
220
225
|
tfstate["serial"] = tfstate["serial"] + 1
|
221
226
|
tfstate["modules"][0]["resources"] = tfstate["modules"][0]["resources"].merge(klass.tfstate)
|
222
|
-
|
227
|
+
MultiJson.encode(tfstate, pretty: true)
|
223
228
|
end
|
224
229
|
|
225
230
|
def tfstate_skeleton
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module Terraforming
|
2
|
+
module Resource
|
3
|
+
class CloudWatchAlarm
|
4
|
+
include Terraforming::Util
|
5
|
+
|
6
|
+
def self.tf(client: Aws::CloudWatch::Client.new)
|
7
|
+
self.new(client).tf
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.tfstate(client: Aws::CloudWatch::Client.new)
|
11
|
+
self.new(client).tfstate
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(client)
|
15
|
+
@client = client
|
16
|
+
end
|
17
|
+
|
18
|
+
def tf
|
19
|
+
apply_template(@client, "tf/cloud_watch_alarm")
|
20
|
+
end
|
21
|
+
|
22
|
+
def tfstate
|
23
|
+
alarms.inject({}) do |resources, alarm|
|
24
|
+
resources["aws_cloudwatch_metric_alarm.#{module_name_of(alarm)}"] = {
|
25
|
+
"type" => "aws_cloudwatch_metric_alarm",
|
26
|
+
"primary" => {
|
27
|
+
"id" => alarm.alarm_name,
|
28
|
+
"attributes" => alarm_attributes(alarm)
|
29
|
+
}
|
30
|
+
}
|
31
|
+
resources
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def alarm_attributes(alarm)
|
38
|
+
attributes = {
|
39
|
+
"actions_enabled" => alarm.actions_enabled.to_s,
|
40
|
+
"alarm_description" => sanitize(alarm.alarm_description),
|
41
|
+
"alarm_name" => alarm.alarm_name,
|
42
|
+
"comparison_operator" => alarm.comparison_operator,
|
43
|
+
"evaluation_periods" => alarm.evaluation_periods.to_s,
|
44
|
+
"id" => alarm.alarm_name,
|
45
|
+
"metric_name" => alarm.metric_name,
|
46
|
+
"namespace" => alarm.namespace,
|
47
|
+
"period" => alarm.period.to_s,
|
48
|
+
"statistic" => alarm.statistic,
|
49
|
+
"threshold" => alarm.threshold.to_s,
|
50
|
+
"unit" => sanitize(alarm.unit)
|
51
|
+
}
|
52
|
+
add_checksummed_attributes(attributes, alarm)
|
53
|
+
end
|
54
|
+
|
55
|
+
def alarms
|
56
|
+
@client.describe_alarms.map(&:metric_alarms).flatten
|
57
|
+
end
|
58
|
+
|
59
|
+
def module_name_of(alarm)
|
60
|
+
normalize_module_name(alarm.alarm_name)
|
61
|
+
end
|
62
|
+
|
63
|
+
def sanitize(argument)
|
64
|
+
argument.nil? ? "" : argument
|
65
|
+
end
|
66
|
+
|
67
|
+
def add_checksummed_attributes(attributes, alarm)
|
68
|
+
%w(insufficient_data_actions alarm_actions ok_actions dimensions).each do |action|
|
69
|
+
attribute = alarm.send(action.to_sym)
|
70
|
+
attributes["#{action}.#"] = attribute.size.to_s
|
71
|
+
attribute.each do |attr|
|
72
|
+
if attr.is_a? String
|
73
|
+
checksum = Zlib.crc32(attr)
|
74
|
+
value = attr
|
75
|
+
else
|
76
|
+
checksum = attr.name
|
77
|
+
value = attr.value
|
78
|
+
end
|
79
|
+
attributes["#{action}.#{checksum}"] = value
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
attributes
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -27,12 +27,13 @@ module Terraforming
|
|
27
27
|
"name" => user.user_name,
|
28
28
|
"path" => user.path,
|
29
29
|
"unique_id" => user.user_id,
|
30
|
+
"force_destroy" => "false",
|
30
31
|
}
|
31
32
|
resources["aws_iam_user.#{module_name_of(user)}"] = {
|
32
33
|
"type" => "aws_iam_user",
|
33
34
|
"primary" => {
|
34
35
|
"id" => user.user_name,
|
35
|
-
"attributes" => attributes
|
36
|
+
"attributes" => attributes,
|
36
37
|
}
|
37
38
|
}
|
38
39
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<% alarms.each do |alarm| -%>
|
2
|
+
resource "aws_cloudwatch_metric_alarm" "<%= normalize_module_name(alarm.alarm_name) %>" {
|
3
|
+
alarm_name = "<%= alarm.alarm_name %>"
|
4
|
+
comparison_operator = "<%= alarm.comparison_operator %>"
|
5
|
+
evaluation_periods = "<%= alarm.evaluation_periods %>"
|
6
|
+
metric_name = "<%= alarm.metric_name %>"
|
7
|
+
namespace = "<%= alarm.namespace %>"
|
8
|
+
period = "<%= alarm.period %>"
|
9
|
+
statistic = "<%= alarm.statistic %>"
|
10
|
+
threshold = "<%= alarm.threshold %>"
|
11
|
+
alarm_description = "<%= alarm.alarm_description %>"
|
12
|
+
<%- unless alarm.ok_actions.empty? -%>
|
13
|
+
ok_actions = <%= alarm.ok_actions %>
|
14
|
+
<%- end -%>
|
15
|
+
<%- unless alarm.alarm_actions.empty? -%>
|
16
|
+
alarm_actions = <%= alarm.alarm_actions %>
|
17
|
+
<%- end -%>
|
18
|
+
<%- unless alarm.actions_enabled -%>
|
19
|
+
actions_enabled = <%= alarm.actions_enabled %>
|
20
|
+
<%- end -%>
|
21
|
+
<%- unless alarm.dimensions.empty? -%>
|
22
|
+
dimensions {
|
23
|
+
<% alarm.dimensions.each do |dimension| -%>
|
24
|
+
<%= dimension.name %> = "<%= dimension.value %>"
|
25
|
+
<% end -%>
|
26
|
+
}
|
27
|
+
<%- end -%>
|
28
|
+
<%- unless alarm.insufficient_data_actions.empty? -%>
|
29
|
+
insufficient_data_actions = <%= alarm.insufficient_data_actions %>
|
30
|
+
<%- end -%>
|
31
|
+
}
|
32
|
+
|
33
|
+
<%- end -%>
|
@@ -27,10 +27,10 @@ resource "aws_instance" "<%= module_name_of(instance) %>" {
|
|
27
27
|
root_block_device {
|
28
28
|
volume_type = "<%= block_device.volume_type %>"
|
29
29
|
volume_size = <%= block_device.size %>
|
30
|
-
|
30
|
+
delete_on_termination = <%= mapping.ebs.delete_on_termination %>
|
31
|
+
<%- if block_device.volume_type == "io1" && block_device.iops -%>
|
31
32
|
iops = <%= block_device.iops %>
|
32
33
|
<%- end -%>
|
33
|
-
delete_on_termination = <%= mapping.ebs.delete_on_termination %>
|
34
34
|
}
|
35
35
|
<%- else -%>
|
36
36
|
ebs_block_device {
|
@@ -38,10 +38,10 @@ resource "aws_instance" "<%= module_name_of(instance) %>" {
|
|
38
38
|
snapshot_id = "<%= block_device.snapshot_id %>"
|
39
39
|
volume_type = "<%= block_device.volume_type %>"
|
40
40
|
volume_size = <%= block_device.size %>
|
41
|
-
|
41
|
+
delete_on_termination = <%= mapping.ebs.delete_on_termination %>
|
42
|
+
<%- if block_device.volume_type == "io1" && block_device.iops -%>
|
42
43
|
iops = <%= block_device.iops %>
|
43
44
|
<%- end -%>
|
44
|
-
delete_on_termination = <%= mapping.ebs.delete_on_termination %>
|
45
45
|
}
|
46
46
|
<% end -%>
|
47
47
|
|
data/lib/terraforming/version.rb
CHANGED
data/terraforming.gemspec
CHANGED
@@ -19,14 +19,13 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_dependency "aws-sdk", "~> 2.
|
23
|
-
spec.add_dependency "
|
24
|
-
spec.add_dependency "ox", "~> 2.4.0"
|
22
|
+
spec.add_dependency "aws-sdk", "~> 2.6.1"
|
23
|
+
spec.add_dependency "multi_json", "~> 1.12.1"
|
25
24
|
spec.add_dependency "thor"
|
26
25
|
|
27
26
|
spec.add_development_dependency "bundler", "~> 1.7"
|
28
27
|
spec.add_development_dependency "coveralls", "~> 0.8.13"
|
29
28
|
spec.add_development_dependency "rake"
|
30
29
|
spec.add_development_dependency "rspec", "~> 3.2"
|
31
|
-
spec.add_development_dependency "simplecov", "~> 0.
|
30
|
+
spec.add_development_dependency "simplecov", "~> 0.12.0"
|
32
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terraforming
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daisuke Fujita
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -16,42 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.6.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.6.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: multi_json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.12.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: ox
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 2.4.0
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 2.4.0
|
40
|
+
version: 1.12.1
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: thor
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +114,14 @@ dependencies:
|
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
117
|
+
version: 0.12.0
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
124
|
+
version: 0.12.0
|
139
125
|
description: Export existing AWS resources to Terraform style (tf, tfstate)
|
140
126
|
email:
|
141
127
|
- dtanshi45@gmail.com
|
@@ -150,6 +136,7 @@ files:
|
|
150
136
|
- ".travis.yml"
|
151
137
|
- CHANGELOG.md
|
152
138
|
- CODE_OF_CONDUCT.md
|
139
|
+
- CONTRIBUTING.md
|
153
140
|
- Gemfile
|
154
141
|
- Guardfile
|
155
142
|
- LICENSE
|
@@ -160,6 +147,7 @@ files:
|
|
160
147
|
- lib/terraforming.rb
|
161
148
|
- lib/terraforming/cli.rb
|
162
149
|
- lib/terraforming/resource/auto_scaling_group.rb
|
150
|
+
- lib/terraforming/resource/cloud_watch_alarm.rb
|
163
151
|
- lib/terraforming/resource/db_parameter_group.rb
|
164
152
|
- lib/terraforming/resource/db_security_group.rb
|
165
153
|
- lib/terraforming/resource/db_subnet_group.rb
|
@@ -196,6 +184,7 @@ files:
|
|
196
184
|
- lib/terraforming/resource/vpc.rb
|
197
185
|
- lib/terraforming/resource/vpn_gateway.rb
|
198
186
|
- lib/terraforming/template/tf/auto_scaling_group.erb
|
187
|
+
- lib/terraforming/template/tf/cloud_watch_alarm.erb
|
199
188
|
- lib/terraforming/template/tf/db_parameter_group.erb
|
200
189
|
- lib/terraforming/template/tf/db_security_group.erb
|
201
190
|
- lib/terraforming/template/tf/db_subnet_group.erb
|