kumogata-template 0.0.32 → 0.0.33
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +13 -13
- data/lib/kumogata/template/const.rb +5 -7
- data/lib/kumogata/template/helper.rb +8 -0
- data/lib/kumogata/template/version.rb +1 -1
- data/template/rds-db-cluster.rb +1 -1
- data/template/rds-db-instance.rb +128 -53
- data/test/helper_test.rb +12 -0
- data/test/template/rds-db-cluster_test.rb +7 -1
- data/test/template/rds-db-instance_test.rb +370 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae8579ef67a536e816f1044e3f6d61d55c2d22b2
|
4
|
+
data.tar.gz: a615fd47c3ffc560524002bb655501a0a2fdb6be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15358466f358d1dd05be9d4f72134a5e9bb31cd9f186dd0b817fa3794ecac885c915f16f5f4a85a36e075a8f38c69d5e39e432dc28b9db086aa2bb460a457aca
|
7
|
+
data.tar.gz: 70cd674c8a2ed82bfef4300f264cfd5486ba4d887bd0095a0975d579c3a77a17fad34e98eebef86fab7105892ae32c700afe084b49d43b55d4f32c37fc17e0b7
|
data/Gemfile.lock
CHANGED
@@ -1,28 +1,28 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
kumogata-template (0.0.
|
4
|
+
kumogata-template (0.0.33)
|
5
5
|
aws-sdk (~> 2.3)
|
6
6
|
kumogata2-plugin-ruby (= 0.1.3)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
aws-sdk (2.10.
|
12
|
-
aws-sdk-resources (= 2.10.
|
13
|
-
aws-sdk-core (2.10.
|
11
|
+
aws-sdk (2.10.47)
|
12
|
+
aws-sdk-resources (= 2.10.47)
|
13
|
+
aws-sdk-core (2.10.47)
|
14
14
|
aws-sigv4 (~> 1.0)
|
15
15
|
jmespath (~> 1.0)
|
16
|
-
aws-sdk-resources (2.10.
|
17
|
-
aws-sdk-core (= 2.10.
|
18
|
-
aws-sigv4 (1.0.
|
19
|
-
coderay (1.1.
|
16
|
+
aws-sdk-resources (2.10.47)
|
17
|
+
aws-sdk-core (= 2.10.47)
|
18
|
+
aws-sigv4 (1.0.2)
|
19
|
+
coderay (1.1.2)
|
20
20
|
diffy (3.2.0)
|
21
21
|
dslh (0.4.8)
|
22
|
-
hashie (3.5.
|
22
|
+
hashie (3.5.6)
|
23
23
|
highline (1.7.8)
|
24
24
|
jmespath (1.3.1)
|
25
|
-
kumogata2 (0.1.
|
25
|
+
kumogata2 (0.1.15)
|
26
26
|
aws-sdk (>= 2.3.0)
|
27
27
|
coderay
|
28
28
|
diffy
|
@@ -32,8 +32,8 @@ GEM
|
|
32
32
|
kumogata2-plugin-ruby (0.1.3)
|
33
33
|
dslh (>= 0.3.7)
|
34
34
|
kumogata2
|
35
|
-
minitest (5.10.
|
36
|
-
rake (12.
|
35
|
+
minitest (5.10.3)
|
36
|
+
rake (12.1.0)
|
37
37
|
term-ansicolor (1.6.0)
|
38
38
|
tins (~> 1.0)
|
39
39
|
tins (1.15.0)
|
@@ -48,4 +48,4 @@ DEPENDENCIES
|
|
48
48
|
rake
|
49
49
|
|
50
50
|
BUNDLED WITH
|
51
|
-
1.15.
|
51
|
+
1.15.4
|
@@ -133,11 +133,10 @@ ELASTICACHE_NODE_TYPES =
|
|
133
133
|
ELASTICACHE_DEFAULT_NODE_TYPE = "cache.t2.medium"
|
134
134
|
|
135
135
|
# https://aws.amazon.com/rds/pricing/
|
136
|
+
# http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html
|
136
137
|
RDS_INSTANCE_CLASSES =
|
137
138
|
[
|
138
139
|
# Instance Class vCPU ECU Memory (GB) EBS Optimized Network Performance
|
139
|
-
# db.t1.micro 1 1 .615 No Very Low
|
140
|
-
# db.m1.small 1 1 1.7 No Very Low
|
141
140
|
# db.m4.large 2 6.5 8 450 Mbps Moderate
|
142
141
|
# db.m4.xlarge 4 13 16 750 Mbps High
|
143
142
|
# db.m4.2xlarge 8 25.5 32 1000 Mbps High
|
@@ -152,18 +151,17 @@ RDS_INSTANCE_CLASSES =
|
|
152
151
|
# db.t2.small 1 1 2 No Low
|
153
152
|
# db.t2.medium 2 2 4 No Moderate
|
154
153
|
# db.t2.large 2 2 8 No Moderate
|
155
|
-
"db.
|
156
|
-
"db.m1.small", "db.m4.large", "db.m4.xlarge", "db.m4.2xlarge", "db.m4.4xlarge", "db.m4.10xlarge",
|
154
|
+
"db.m4.large", "db.m4.xlarge", "db.m4.2xlarge", "db.m4.4xlarge", "db.m4.10xlarge",
|
157
155
|
"db.r3.large", "db.r3.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge",
|
158
|
-
"db.t2.micro", "db.t2.small", "db.t2.medium", "db.t2.large"
|
156
|
+
"db.t2.micro", "db.t2.small", "db.t2.medium", "db.t2.large",
|
159
157
|
]
|
160
158
|
RDS_DEFAULT_INSTANCE_CLASS = "db.t2.medium"
|
161
159
|
RDS_DEFAULT_ENGINE = "mysql"
|
162
160
|
RDS_DEFAULT_ENGINE_VERSION = {
|
163
161
|
mysql: "5.7.17",
|
164
|
-
mariadb: "10.1.
|
162
|
+
mariadb: "10.1.23",
|
165
163
|
aurora: "5.6.10a",
|
166
|
-
postgres: "9.6.2
|
164
|
+
postgres: "9.6.2",
|
167
165
|
}
|
168
166
|
|
169
167
|
# https://aws.amazon.com/redshift/pricing/
|
@@ -39,6 +39,14 @@ def _description(name)
|
|
39
39
|
chomp.slice(0, 1024)
|
40
40
|
end
|
41
41
|
|
42
|
+
def _empty?(value)
|
43
|
+
return true if value.nil?
|
44
|
+
return false if value.is_a? Integer
|
45
|
+
return false if value.is_a? TrueClass or value.is_a? FalseClass
|
46
|
+
|
47
|
+
value.empty?
|
48
|
+
end
|
49
|
+
|
42
50
|
def _valid_values(value, values, default = nil)
|
43
51
|
return default if value.nil?
|
44
52
|
values.collect{|v| return v if v =~ /^#{value}$/i }
|
@@ -1 +1 @@
|
|
1
|
-
KUMOGATA_TEMPLATE_VERSION = '0.0.
|
1
|
+
KUMOGATA_TEMPLATE_VERSION = '0.0.33'
|
data/template/rds-db-cluster.rb
CHANGED
@@ -10,7 +10,7 @@ backup_retention = args[:backup_retention] || 7
|
|
10
10
|
db_name = _ref_name("database", args, "database")
|
11
11
|
parameter = _ref_string("parameter", args, "db cluster parameter group")
|
12
12
|
parameter = "default.aurora5.6" if parameter.empty?
|
13
|
-
subnet_group = _ref_string("
|
13
|
+
subnet_group = _ref_string("subnet", args, "db subnet group")
|
14
14
|
engine = "aurora"
|
15
15
|
engine_version = RDS_DEFAULT_ENGINE_VERSION[:aurora]
|
16
16
|
user_name = _ref_string("user_name", args, "db master user name")
|
data/template/rds-db-instance.rb
CHANGED
@@ -5,92 +5,167 @@
|
|
5
5
|
require 'kumogata/template/helper'
|
6
6
|
|
7
7
|
name = _resource_name(args[:name], "db instance")
|
8
|
-
|
9
|
-
%w( mysql mariadb
|
10
|
-
oracle-se1 oracle-se oracle-ee
|
11
|
-
sqlserver-ee sqlserver-se sqlserver-ex sqlserver-web
|
12
|
-
postgres aurora ), RDS_DEFAULT_ENGINE)
|
13
|
-
allocated = args[:allocated] || 5
|
8
|
+
allocated = _ref_string_default("allocated", args, "", 5)
|
14
9
|
allow = _bool("allow", args, true)
|
15
10
|
auto = _bool("auto", args, true)
|
16
11
|
az = _availability_zone(args, false)
|
17
|
-
backup_retention =
|
18
|
-
character =
|
12
|
+
backup_retention = _ref_string_default("backup_retention", args, "", 7)
|
13
|
+
character = _ref_string_default("character", args)
|
19
14
|
copy_tags =
|
20
15
|
if args.key? :copy_tags
|
21
16
|
_bool("copy_tags", args, true)
|
22
17
|
else
|
23
18
|
""
|
24
19
|
end
|
25
|
-
cluster =
|
26
|
-
instance_class =
|
27
|
-
instance_class = _valid_values(instance_class, RDS_INSTANCE_CLASSES, RDS_DEFAULT_INSTANCE_CLASS)
|
20
|
+
cluster = _ref_string_default("cluster", args, "db cluster")
|
21
|
+
instance_class = _ref_string_default("instance_class", args, "db instance classes", RDS_DEFAULT_INSTANCE_CLASS)
|
22
|
+
instance_class = _valid_values(instance_class, RDS_INSTANCE_CLASSES, RDS_DEFAULT_INSTANCE_CLASS) if instance_class.is_a? String
|
28
23
|
instance_id = _ref_name("instance_id", args, "db instance id")
|
29
24
|
db_name = _ref_string("db_name", args, "db name")
|
25
|
+
db_name = _ref_string("database", args, "database") if _empty? db_name
|
30
26
|
parameter = _ref_string("parameter", args, "db parameter group")
|
31
|
-
|
32
|
-
|
33
|
-
|
27
|
+
# TODO support AWS::RDS::DBSecurityGroup
|
28
|
+
# http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html
|
29
|
+
db_security_groups = _ref_array("db_security_groups", args, "db security group")
|
34
30
|
snapshot = _ref_string("snapshot", args, "db snapshot")
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
31
|
+
subnet = _ref_string("subnet", args, "db subnet group")
|
32
|
+
domain = _ref_string("domain", args, "db domain")
|
33
|
+
domain_iam = _ref_string("domain_iam", args, "db domain iam")
|
34
|
+
# http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html
|
35
|
+
engine = _valid_values(args[:engine],
|
36
|
+
%w( aurora mariadb mysql
|
37
|
+
oracle-ee oracle-se2 oracle-se1 oracle-se postgres
|
38
|
+
sqlserver-ee sqlserver-se sqlserver-ex sqlserver-web ), RDS_DEFAULT_ENGINE)
|
39
|
+
engine_version = _ref_string_default("engine_version", args, "db engine version", RDS_DEFAULT_ENGINE_VERSION[engine.to_sym])
|
40
|
+
iops =
|
41
|
+
if _ref_key?("iops", args, "db iops")
|
42
|
+
_ref_string_default("iops", args, "db iops", 1000)
|
43
|
+
else
|
44
|
+
""
|
45
|
+
end
|
46
|
+
kms = _ref_attr_string("kms", "Arn", args)
|
47
|
+
license = _valid_values(args[:license], %w( license-included bring-your-own-license general-public-license ), "general-public-license")
|
40
48
|
user_name = _ref_string("user_name", args, "db master user name")
|
41
49
|
user_password = _ref_string("user_password", args, "db master user password")
|
42
50
|
multi_az = _bool("multi_az", args, false)
|
43
51
|
option = _ref_string("option", args, "db option group")
|
44
|
-
port =
|
45
|
-
port = PORT[args[:engine]] if port.empty?
|
52
|
+
port = _ref_string_default("port", args, "db port", PORT[engine.to_sym])
|
46
53
|
backup_window = _window_time("rds", args[:backup_start] || DEFAULT_SNAPSHOT_TIME[:rds])
|
47
54
|
maintenance = _maintenance_window("rds", args[:maintenance] || DEFAULT_MAINTENANCE_TIME[:rds])
|
48
55
|
publicly = _bool("publicly", args, false)
|
49
|
-
source_db = _ref_string("source_db", args, "db
|
50
|
-
|
56
|
+
source_db = _ref_string("source_db", args, "db instance id")
|
57
|
+
encrypted = _bool("encrypted", args, false)
|
51
58
|
storage_type = _valid_values(args[:storage_type], %w( standard gp2 io1 ), "gp2")
|
52
59
|
tags = _tags(args)
|
53
|
-
timezone =
|
60
|
+
timezone = _ref_string_default("timezone", args, "db timezone")
|
54
61
|
security_groups = _ref_array("security_groups", args, "security group")
|
62
|
+
## TODO use helper
|
63
|
+
depends = _resource_name(args[:master_instance], "db instance") unless _empty? source_db
|
64
|
+
|
65
|
+
allocated = "" unless _empty? cluster
|
66
|
+
character = "" if engine =~ /aurora/
|
67
|
+
parameter =
|
68
|
+
if _empty? parameter
|
69
|
+
if engine == "mysql" and engine_version =~ /5.7/
|
70
|
+
"default.mysql5.7"
|
71
|
+
elsif engine == "aurora" and engine_version =~ /5.6/
|
72
|
+
"default.aurora5.6"
|
73
|
+
elsif engine == "postgres" and engine_version =~ /9.4/
|
74
|
+
"default.postgres9.4"
|
75
|
+
elsif engine == "mariadb" and engine_version =~ /10.0/
|
76
|
+
"default.mariadb10.0"
|
77
|
+
else
|
78
|
+
nil
|
79
|
+
end
|
80
|
+
else
|
81
|
+
nil
|
82
|
+
end
|
83
|
+
instance_id = instance_id.downcase if instance_id.is_a? String
|
84
|
+
if engine !~ /sqlserver/
|
85
|
+
domain = ""
|
86
|
+
domain_iam = ""
|
87
|
+
end
|
88
|
+
db_name = "" unless _empty? snapshot
|
89
|
+
iops = "" if storage_type != "io1"
|
90
|
+
multi_az = false unless _empty? az
|
91
|
+
source_db = "" if engine !~ /(mysql|mariadb|postgres)/
|
92
|
+
unless _empty? source_db
|
93
|
+
multi_az = false
|
94
|
+
snapshot = ""
|
95
|
+
backup_retention = ""
|
96
|
+
db_name = ""
|
97
|
+
subnet = ""
|
98
|
+
user_name = ""
|
99
|
+
user_password = ""
|
100
|
+
backup_window = ""
|
101
|
+
end
|
102
|
+
encrypted = true unless _empty? kms
|
103
|
+
if encrypted
|
104
|
+
cluster = ""
|
105
|
+
snapshot = ""
|
106
|
+
source_db = ""
|
107
|
+
end
|
108
|
+
security_groups = "" unless _empty? db_security_groups
|
109
|
+
unless _empty? cluster
|
110
|
+
allocated = ""
|
111
|
+
backup_retention = ""
|
112
|
+
character = ""
|
113
|
+
db_security_groups = []
|
114
|
+
db_name = ""
|
115
|
+
subnet = ""
|
116
|
+
user_name = ""
|
117
|
+
user_password = ""
|
118
|
+
multi_az = ""
|
119
|
+
option = ""
|
120
|
+
backup_window = ""
|
121
|
+
maintenance = ""
|
122
|
+
port = ""
|
123
|
+
source_db = ""
|
124
|
+
security_groups = []
|
125
|
+
backup_window = ""
|
126
|
+
maintenance = ""
|
127
|
+
storage_type = ""
|
128
|
+
end
|
55
129
|
|
56
130
|
_(name) do
|
57
131
|
Type "AWS::RDS::DBInstance"
|
58
132
|
Properties do
|
59
|
-
AllocatedStorage allocated
|
133
|
+
AllocatedStorage allocated unless _empty? allocated
|
60
134
|
AllowMajorVersionUpgrade allow
|
61
135
|
AutoMinorVersionUpgrade auto
|
62
|
-
AvailabilityZone az unless
|
63
|
-
BackupRetentionPeriod backup_retention
|
64
|
-
CharacterSetName character
|
65
|
-
CopyTagsToSnapshot copy_tags unless copy_tags
|
66
|
-
DBClusterIdentifier cluster
|
136
|
+
AvailabilityZone az unless _empty? az
|
137
|
+
BackupRetentionPeriod backup_retention unless _empty? backup_retention
|
138
|
+
CharacterSetName character unless _empty? character
|
139
|
+
CopyTagsToSnapshot copy_tags unless _empty? copy_tags
|
140
|
+
DBClusterIdentifier cluster unless _empty? cluster
|
67
141
|
DBInstanceClass instance_class
|
68
|
-
DBInstanceIdentifier instance_id
|
69
|
-
DBName db_name
|
70
|
-
DBParameterGroupName parameter unless parameter
|
71
|
-
DBSecurityGroups
|
72
|
-
DBSnapshotIdentifier snapshot unless snapshot
|
73
|
-
DBSubnetGroupName
|
74
|
-
Domain domain unless
|
75
|
-
DomainIAMRoleName domain_iam unless
|
142
|
+
DBInstanceIdentifier instance_id unless _empty? instance_id
|
143
|
+
DBName db_name unless _empty? db_name
|
144
|
+
DBParameterGroupName parameter unless _empty? parameter
|
145
|
+
DBSecurityGroups db_security_groups unless _empty? db_security_groups
|
146
|
+
DBSnapshotIdentifier snapshot unless _empty? snapshot
|
147
|
+
DBSubnetGroupName subnet unless _empty? subnet
|
148
|
+
Domain domain unless _empty? domain
|
149
|
+
DomainIAMRoleName domain_iam unless _empty? domain_iam
|
76
150
|
Engine engine
|
77
151
|
EngineVersion engine_version
|
78
|
-
Iops iops unless iops
|
79
|
-
|
80
|
-
|
81
|
-
MasterUsername user_name
|
82
|
-
MasterUserPassword user_password
|
83
|
-
MultiAZ multi_az
|
84
|
-
OptionGroupName option unless option
|
85
|
-
Port port
|
86
|
-
PreferredBackupWindow backup_window
|
87
|
-
PreferredMaintenanceWindow maintenance
|
152
|
+
Iops iops unless _empty? iops
|
153
|
+
KmsKeyId kms unless _empty? kms
|
154
|
+
LicenseModel license unless _empty? license
|
155
|
+
MasterUsername user_name unless _empty? user_name
|
156
|
+
MasterUserPassword user_password unless _empty? user_password
|
157
|
+
MultiAZ multi_az unless _empty? multi_az
|
158
|
+
OptionGroupName option unless _empty? option
|
159
|
+
Port port unless _empty? port
|
160
|
+
PreferredBackupWindow backup_window unless _empty? backup_window
|
161
|
+
PreferredMaintenanceWindow maintenance unless _empty? maintenance
|
88
162
|
PubliclyAccessible publicly
|
89
|
-
SourceDBInstanceIdentifier source_db unless source_db
|
90
|
-
StorageEncrypted
|
91
|
-
StorageType storage_type
|
163
|
+
SourceDBInstanceIdentifier source_db unless _empty? source_db
|
164
|
+
StorageEncrypted encrypted unless _empty? kms
|
165
|
+
StorageType storage_type unless _empty? storage_type
|
92
166
|
Tags tags
|
93
|
-
Timezone timezone unless timezone
|
94
|
-
VPCSecurityGroups security_groups unless security_groups
|
167
|
+
Timezone timezone unless _empty? timezone
|
168
|
+
VPCSecurityGroups security_groups unless _empty? security_groups
|
95
169
|
end
|
170
|
+
DependsOn depends unless _empty? depends
|
96
171
|
end
|
data/test/helper_test.rb
CHANGED
@@ -56,6 +56,18 @@ EOS
|
|
56
56
|
assert_equal description, "test description, test"
|
57
57
|
end
|
58
58
|
|
59
|
+
def test_empty
|
60
|
+
assert_equal _empty?(nil), true
|
61
|
+
assert_equal _empty?(""), true
|
62
|
+
assert_equal _empty?("test"), false
|
63
|
+
assert_equal _empty?([]), true
|
64
|
+
assert_equal _empty?([ "test" ]), false
|
65
|
+
assert_equal _empty?(true), false
|
66
|
+
assert_equal _empty?(false), false
|
67
|
+
assert_equal _empty?({}), true
|
68
|
+
assert_equal _empty?({ test: "test" }), false
|
69
|
+
end
|
70
|
+
|
59
71
|
def test_valid_values
|
60
72
|
assert_equal _valid_values("test1", ["test1", "test2"]), "test1"
|
61
73
|
assert_equal _valid_values("test3", ["test1", "test2"], "test1"), "test1"
|
@@ -3,7 +3,7 @@ require 'abstract_unit'
|
|
3
3
|
class RdsDbClusterTest < Minitest::Test
|
4
4
|
def test_normal
|
5
5
|
template = <<-EOS
|
6
|
-
_rds_db_cluster "test", ref_parameter: "test",
|
6
|
+
_rds_db_cluster "test", ref_parameter: "test", ref_subnet: "test", ref_user_name: "test", ref_user_password: "test", ref_security_groups: "test"
|
7
7
|
EOS
|
8
8
|
act_template = run_client_as_json(template)
|
9
9
|
exp_template = <<-EOS
|
@@ -11,6 +11,12 @@ _rds_db_cluster "test", ref_parameter: "test", ref_subnet_group: "test", ref_use
|
|
11
11
|
"TestDbCluster": {
|
12
12
|
"Type": "AWS::RDS::DBCluster",
|
13
13
|
"Properties": {
|
14
|
+
"AvailabilityZone": {
|
15
|
+
"Fn::GetAtt": [
|
16
|
+
"TestSubnet",
|
17
|
+
"AvailabilityZone"
|
18
|
+
]
|
19
|
+
},
|
14
20
|
"BackupRetentionPeriod": "7",
|
15
21
|
"DatabaseName": {
|
16
22
|
"Fn::Join": [
|
@@ -3,7 +3,14 @@ require 'abstract_unit'
|
|
3
3
|
class RdsDbInstanceTest < Minitest::Test
|
4
4
|
def test_normal
|
5
5
|
template = <<-EOS
|
6
|
-
_rds_db_instance "test",
|
6
|
+
_rds_db_instance "test",
|
7
|
+
ref_db_name: "test",
|
8
|
+
ref_port: "test",
|
9
|
+
ref_subnet: "test",
|
10
|
+
ref_security_groups: "test",
|
11
|
+
ref_user_name: "test",
|
12
|
+
ref_user_password: "test",
|
13
|
+
az: "test"
|
7
14
|
EOS
|
8
15
|
act_template = run_client_as_json(template)
|
9
16
|
exp_template = <<-EOS
|
@@ -39,6 +46,7 @@ _rds_db_instance "test", ref_db_name: "test", ref_port: "test", ref_subnet_group
|
|
39
46
|
},
|
40
47
|
"Engine": "mysql",
|
41
48
|
"EngineVersion": "5.7.17",
|
49
|
+
"LicenseModel": "general-public-license",
|
42
50
|
"MasterUsername": {
|
43
51
|
"Ref": "TestDbMasterUserName"
|
44
52
|
},
|
@@ -88,6 +96,367 @@ _rds_db_instance "test", ref_db_name: "test", ref_port: "test", ref_subnet_group
|
|
88
96
|
]
|
89
97
|
}
|
90
98
|
}
|
99
|
+
}
|
100
|
+
EOS
|
101
|
+
assert_equal exp_template.chomp, act_template
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_single_master
|
105
|
+
template = <<-EOS
|
106
|
+
_rds_db_instance 'test',
|
107
|
+
instance_class: 'db.t2.micro',
|
108
|
+
engine: 'mysql', engine_version: '5.7.17',
|
109
|
+
ref_db_name: 'test',
|
110
|
+
ref_subnet: 'test',
|
111
|
+
ref_security_groups: %w( test ),
|
112
|
+
ref_port: 'test',
|
113
|
+
ref_user_name: 'test',
|
114
|
+
ref_user_password: 'test'
|
115
|
+
EOS
|
116
|
+
act_template = run_client_as_json(template)
|
117
|
+
exp_template = <<-EOS
|
118
|
+
{
|
119
|
+
"TestDbInstance": {
|
120
|
+
"Type": "AWS::RDS::DBInstance",
|
121
|
+
"Properties": {
|
122
|
+
"AllocatedStorage": "5",
|
123
|
+
"AllowMajorVersionUpgrade": "true",
|
124
|
+
"AutoMinorVersionUpgrade": "true",
|
125
|
+
"BackupRetentionPeriod": "7",
|
126
|
+
"DBInstanceClass": "db.t2.micro",
|
127
|
+
"DBInstanceIdentifier": {
|
128
|
+
"Fn::Join": [
|
129
|
+
"-",
|
130
|
+
[
|
131
|
+
{
|
132
|
+
"Ref": "Service"
|
133
|
+
},
|
134
|
+
{
|
135
|
+
"Ref": "Name"
|
136
|
+
}
|
137
|
+
]
|
138
|
+
]
|
139
|
+
},
|
140
|
+
"DBName": {
|
141
|
+
"Ref": "TestDbName"
|
142
|
+
},
|
143
|
+
"DBParameterGroupName": "default.mysql5.7",
|
144
|
+
"DBSubnetGroupName": {
|
145
|
+
"Ref": "TestDbSubnetGroup"
|
146
|
+
},
|
147
|
+
"Engine": "mysql",
|
148
|
+
"EngineVersion": "5.7.17",
|
149
|
+
"LicenseModel": "general-public-license",
|
150
|
+
"MasterUsername": {
|
151
|
+
"Ref": "TestDbMasterUserName"
|
152
|
+
},
|
153
|
+
"MasterUserPassword": {
|
154
|
+
"Ref": "TestDbMasterUserPassword"
|
155
|
+
},
|
156
|
+
"MultiAZ": "false",
|
157
|
+
"Port": {
|
158
|
+
"Ref": "TestDbPort"
|
159
|
+
},
|
160
|
+
"PreferredBackupWindow": "21:30-22:00",
|
161
|
+
"PreferredMaintenanceWindow": "Thu:20:30-Thu:21:00",
|
162
|
+
"PubliclyAccessible": "false",
|
163
|
+
"StorageType": "gp2",
|
164
|
+
"Tags": [
|
165
|
+
{
|
166
|
+
"Key": "Name",
|
167
|
+
"Value": {
|
168
|
+
"Fn::Join": [
|
169
|
+
"-",
|
170
|
+
[
|
171
|
+
{
|
172
|
+
"Ref": "Service"
|
173
|
+
},
|
174
|
+
"test"
|
175
|
+
]
|
176
|
+
]
|
177
|
+
}
|
178
|
+
},
|
179
|
+
{
|
180
|
+
"Key": "Service",
|
181
|
+
"Value": {
|
182
|
+
"Ref": "Service"
|
183
|
+
}
|
184
|
+
},
|
185
|
+
{
|
186
|
+
"Key": "Version",
|
187
|
+
"Value": {
|
188
|
+
"Ref": "Version"
|
189
|
+
}
|
190
|
+
}
|
191
|
+
],
|
192
|
+
"VPCSecurityGroups": [
|
193
|
+
{
|
194
|
+
"Ref": "TestSecurityGroup"
|
195
|
+
}
|
196
|
+
]
|
197
|
+
}
|
198
|
+
}
|
199
|
+
}
|
200
|
+
EOS
|
201
|
+
assert_equal exp_template.chomp, act_template
|
202
|
+
end
|
203
|
+
|
204
|
+
def test_cluster
|
205
|
+
template = <<-EOS
|
206
|
+
_rds_db_instance 'test cluster',
|
207
|
+
engine: 'aurora',
|
208
|
+
instance_class: 'db.t2.medium',
|
209
|
+
ref_cluster: 'test'
|
210
|
+
EOS
|
211
|
+
act_template = run_client_as_json(template)
|
212
|
+
exp_template = <<-EOS
|
213
|
+
{
|
214
|
+
"TestClusterDbInstance": {
|
215
|
+
"Type": "AWS::RDS::DBInstance",
|
216
|
+
"Properties": {
|
217
|
+
"AllowMajorVersionUpgrade": "true",
|
218
|
+
"AutoMinorVersionUpgrade": "true",
|
219
|
+
"DBClusterIdentifier": {
|
220
|
+
"Ref": "TestDbCluster"
|
221
|
+
},
|
222
|
+
"DBInstanceClass": "db.t2.medium",
|
223
|
+
"DBInstanceIdentifier": {
|
224
|
+
"Fn::Join": [
|
225
|
+
"-",
|
226
|
+
[
|
227
|
+
{
|
228
|
+
"Ref": "Service"
|
229
|
+
},
|
230
|
+
{
|
231
|
+
"Ref": "Name"
|
232
|
+
}
|
233
|
+
]
|
234
|
+
]
|
235
|
+
},
|
236
|
+
"DBParameterGroupName": "default.aurora5.6",
|
237
|
+
"Engine": "aurora",
|
238
|
+
"EngineVersion": "5.6.10a",
|
239
|
+
"LicenseModel": "general-public-license",
|
240
|
+
"PubliclyAccessible": "false",
|
241
|
+
"Tags": [
|
242
|
+
{
|
243
|
+
"Key": "Name",
|
244
|
+
"Value": {
|
245
|
+
"Fn::Join": [
|
246
|
+
"-",
|
247
|
+
[
|
248
|
+
{
|
249
|
+
"Ref": "Service"
|
250
|
+
},
|
251
|
+
"test-cluster"
|
252
|
+
]
|
253
|
+
]
|
254
|
+
}
|
255
|
+
},
|
256
|
+
{
|
257
|
+
"Key": "Service",
|
258
|
+
"Value": {
|
259
|
+
"Ref": "Service"
|
260
|
+
}
|
261
|
+
},
|
262
|
+
{
|
263
|
+
"Key": "Version",
|
264
|
+
"Value": {
|
265
|
+
"Ref": "Version"
|
266
|
+
}
|
267
|
+
}
|
268
|
+
]
|
269
|
+
}
|
270
|
+
}
|
271
|
+
}
|
272
|
+
EOS
|
273
|
+
assert_equal exp_template.chomp, act_template
|
274
|
+
end
|
275
|
+
|
276
|
+
def test_slave
|
277
|
+
template = <<-EOS
|
278
|
+
_rds_db_instance 'test',
|
279
|
+
master_instance: 'master',
|
280
|
+
ref_port: 'test',
|
281
|
+
source_db: 'master',
|
282
|
+
instance_class: 'db.t2.micro',
|
283
|
+
engine: 'mysql',
|
284
|
+
engine_version: '5.7.17',
|
285
|
+
ref_security_groups: %w( test )
|
286
|
+
EOS
|
287
|
+
act_template = run_client_as_json(template)
|
288
|
+
exp_template = <<-EOS
|
289
|
+
{
|
290
|
+
"TestDbInstance": {
|
291
|
+
"Type": "AWS::RDS::DBInstance",
|
292
|
+
"Properties": {
|
293
|
+
"AllocatedStorage": "5",
|
294
|
+
"AllowMajorVersionUpgrade": "true",
|
295
|
+
"AutoMinorVersionUpgrade": "true",
|
296
|
+
"DBInstanceClass": "db.t2.micro",
|
297
|
+
"DBInstanceIdentifier": {
|
298
|
+
"Fn::Join": [
|
299
|
+
"-",
|
300
|
+
[
|
301
|
+
{
|
302
|
+
"Ref": "Service"
|
303
|
+
},
|
304
|
+
{
|
305
|
+
"Ref": "Name"
|
306
|
+
}
|
307
|
+
]
|
308
|
+
]
|
309
|
+
},
|
310
|
+
"DBParameterGroupName": "default.mysql5.7",
|
311
|
+
"Engine": "mysql",
|
312
|
+
"EngineVersion": "5.7.17",
|
313
|
+
"LicenseModel": "general-public-license",
|
314
|
+
"MultiAZ": "false",
|
315
|
+
"Port": {
|
316
|
+
"Ref": "TestDbPort"
|
317
|
+
},
|
318
|
+
"PreferredMaintenanceWindow": "Thu:20:30-Thu:21:00",
|
319
|
+
"PubliclyAccessible": "false",
|
320
|
+
"SourceDBInstanceIdentifier": "master",
|
321
|
+
"StorageType": "gp2",
|
322
|
+
"Tags": [
|
323
|
+
{
|
324
|
+
"Key": "Name",
|
325
|
+
"Value": {
|
326
|
+
"Fn::Join": [
|
327
|
+
"-",
|
328
|
+
[
|
329
|
+
{
|
330
|
+
"Ref": "Service"
|
331
|
+
},
|
332
|
+
"test"
|
333
|
+
]
|
334
|
+
]
|
335
|
+
}
|
336
|
+
},
|
337
|
+
{
|
338
|
+
"Key": "Service",
|
339
|
+
"Value": {
|
340
|
+
"Ref": "Service"
|
341
|
+
}
|
342
|
+
},
|
343
|
+
{
|
344
|
+
"Key": "Version",
|
345
|
+
"Value": {
|
346
|
+
"Ref": "Version"
|
347
|
+
}
|
348
|
+
}
|
349
|
+
],
|
350
|
+
"VPCSecurityGroups": [
|
351
|
+
{
|
352
|
+
"Ref": "TestSecurityGroup"
|
353
|
+
}
|
354
|
+
]
|
355
|
+
},
|
356
|
+
"DependsOn": "MasterDbInstance"
|
357
|
+
}
|
358
|
+
}
|
359
|
+
EOS
|
360
|
+
assert_equal exp_template.chomp, act_template
|
361
|
+
end
|
362
|
+
|
363
|
+
def test_multiaz
|
364
|
+
template = <<-EOS
|
365
|
+
_rds_db_instance 'test',
|
366
|
+
instance_class: 'db.t2.micro',
|
367
|
+
engine: 'mysql',
|
368
|
+
engine_version: '5.7.17',
|
369
|
+
ref_db_name: 'test',
|
370
|
+
ref_subnet: 'test',
|
371
|
+
ref_security_groups: %w( test ),
|
372
|
+
ref_user_name: 'test',
|
373
|
+
ref_user_password: 'test',
|
374
|
+
ref_port: 'test',
|
375
|
+
multi_az: true
|
376
|
+
EOS
|
377
|
+
act_template = run_client_as_json(template)
|
378
|
+
exp_template = <<-EOS
|
379
|
+
{
|
380
|
+
"TestDbInstance": {
|
381
|
+
"Type": "AWS::RDS::DBInstance",
|
382
|
+
"Properties": {
|
383
|
+
"AllocatedStorage": "5",
|
384
|
+
"AllowMajorVersionUpgrade": "true",
|
385
|
+
"AutoMinorVersionUpgrade": "true",
|
386
|
+
"BackupRetentionPeriod": "7",
|
387
|
+
"DBInstanceClass": "db.t2.micro",
|
388
|
+
"DBInstanceIdentifier": {
|
389
|
+
"Fn::Join": [
|
390
|
+
"-",
|
391
|
+
[
|
392
|
+
{
|
393
|
+
"Ref": "Service"
|
394
|
+
},
|
395
|
+
{
|
396
|
+
"Ref": "Name"
|
397
|
+
}
|
398
|
+
]
|
399
|
+
]
|
400
|
+
},
|
401
|
+
"DBName": {
|
402
|
+
"Ref": "TestDbName"
|
403
|
+
},
|
404
|
+
"DBParameterGroupName": "default.mysql5.7",
|
405
|
+
"DBSubnetGroupName": {
|
406
|
+
"Ref": "TestDbSubnetGroup"
|
407
|
+
},
|
408
|
+
"Engine": "mysql",
|
409
|
+
"EngineVersion": "5.7.17",
|
410
|
+
"LicenseModel": "general-public-license",
|
411
|
+
"MasterUsername": {
|
412
|
+
"Ref": "TestDbMasterUserName"
|
413
|
+
},
|
414
|
+
"MasterUserPassword": {
|
415
|
+
"Ref": "TestDbMasterUserPassword"
|
416
|
+
},
|
417
|
+
"MultiAZ": "true",
|
418
|
+
"Port": {
|
419
|
+
"Ref": "TestDbPort"
|
420
|
+
},
|
421
|
+
"PreferredBackupWindow": "21:30-22:00",
|
422
|
+
"PreferredMaintenanceWindow": "Thu:20:30-Thu:21:00",
|
423
|
+
"PubliclyAccessible": "false",
|
424
|
+
"StorageType": "gp2",
|
425
|
+
"Tags": [
|
426
|
+
{
|
427
|
+
"Key": "Name",
|
428
|
+
"Value": {
|
429
|
+
"Fn::Join": [
|
430
|
+
"-",
|
431
|
+
[
|
432
|
+
{
|
433
|
+
"Ref": "Service"
|
434
|
+
},
|
435
|
+
"test"
|
436
|
+
]
|
437
|
+
]
|
438
|
+
}
|
439
|
+
},
|
440
|
+
{
|
441
|
+
"Key": "Service",
|
442
|
+
"Value": {
|
443
|
+
"Ref": "Service"
|
444
|
+
}
|
445
|
+
},
|
446
|
+
{
|
447
|
+
"Key": "Version",
|
448
|
+
"Value": {
|
449
|
+
"Ref": "Version"
|
450
|
+
}
|
451
|
+
}
|
452
|
+
],
|
453
|
+
"VPCSecurityGroups": [
|
454
|
+
{
|
455
|
+
"Ref": "TestSecurityGroup"
|
456
|
+
}
|
457
|
+
]
|
458
|
+
}
|
459
|
+
}
|
91
460
|
}
|
92
461
|
EOS
|
93
462
|
assert_equal exp_template.chomp, act_template
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumogata-template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.33
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naoya Nakazawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|