kumogata-template 0.0.18 → 0.0.19
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/Gemfile.lock +1 -1
- data/README.md +1 -0
- data/lib/kumogata/template/alb.rb +43 -11
- data/lib/kumogata/template/autoscaling.rb +1 -1
- data/lib/kumogata/template/const.rb +7 -4
- data/lib/kumogata/template/helper.rb +22 -8
- data/lib/kumogata/template/version.rb +1 -1
- data/template/alb-listener.rb +2 -2
- data/template/alb-target-group.rb +11 -4
- data/template/autoscaling-scheduled-action.rb +11 -12
- data/template/mappings-ec2.rb +45 -32
- data/template/output-ec2.rb +3 -1
- data/template/output-elb.rb +1 -1
- data/template/output-iam-instance-profile.rb +6 -0
- data/template/output-iam-role.rb +6 -0
- data/test/ec2_test.rb +23 -1
- data/test/helper_test.rb +143 -5
- data/test/template/mappings-ec2_test.rb +27 -47
- data/test/template/output-elb_test.rb +4 -4
- data/test/template/output-iam-instance-profile_test.rb +30 -0
- data/test/template/output-iam-role_test.rb +30 -0
- data/test/template/rds-db-instance_test.rb +2 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a072c9287be025226a5046066132716048ede1a2
|
4
|
+
data.tar.gz: ccfe43986bc296bec97d755cce6f3f1bc96cf291
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f6e0278162a801dcb24ff85836fe6879b14f374926b42c91484405c46f468ba09a8adf58f5c52e1049453af70e65a89c408e1f20e2078202996cffce85a868d
|
7
|
+
data.tar.gz: d78e60f26dd322470bada79d3884f134a4f1deb5c5e3826d5949ae64ff0e144a2a809be8d8147e0b51d4defdb2b37c908a3c1c7d11fe2c0284b6ecde970ea606
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# kumogata-template
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/kumogata-template)
|
3
4
|
[](https://travis-ci.org/n0ts/kumogata-template)
|
4
5
|
|
5
6
|
## About
|
@@ -3,19 +3,51 @@
|
|
3
3
|
#
|
4
4
|
require 'kumogata/template/helper'
|
5
5
|
|
6
|
-
def
|
7
|
-
|
6
|
+
def _alb_to_lb_attribute_access_log(args)
|
7
|
+
{
|
8
|
+
"access_logs.s3.enabled": true,
|
9
|
+
"access_logs.s3.bucket": args[:bucket],
|
10
|
+
"access_logs.s3.prefix": args[:prefix],
|
11
|
+
}
|
12
|
+
end
|
8
13
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
14
|
+
def _alb_to_lb_attribute_delete_protection
|
15
|
+
{
|
16
|
+
"deletion_protection.enabled": true
|
17
|
+
}
|
18
|
+
end
|
13
19
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
20
|
+
def _alb_to_lb_attribute_idle_timeout(value)
|
21
|
+
# idle timeout seconds 1-3600
|
22
|
+
{
|
23
|
+
"idle_timeout.timeout_seconds": value
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def _alb_to_target_group_attribute_delay_timeout(value)
|
28
|
+
# wait before changing the state of a deregistering target from draining to unused 0-3600 seconds.
|
29
|
+
{
|
30
|
+
"deregistration_delay.timeout_seconds": value
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
def _alb_to_target_group_stickiness(value)
|
35
|
+
# 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).
|
36
|
+
{
|
37
|
+
"stickiness.enabled": true,
|
38
|
+
"stickiness.type": "lb_cookie",
|
39
|
+
"stickiness.lb_cookie.duration_seconds": value
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
def _alb_certificates(args)
|
44
|
+
certificate = _ref_string("certificate", args)
|
45
|
+
|
46
|
+
[
|
47
|
+
_{
|
48
|
+
CertificateArn certificate
|
49
|
+
}
|
50
|
+
]
|
19
51
|
end
|
20
52
|
|
21
53
|
def _alb_actions(args)
|
@@ -2,19 +2,22 @@
|
|
2
2
|
# AWS Constants
|
3
3
|
#
|
4
4
|
|
5
|
+
# http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions
|
5
6
|
AWS_REGION = {
|
6
7
|
virginia: "us-east-1",
|
7
8
|
ohio: "us-east-2",
|
8
|
-
oregon: "us-west-2",
|
9
9
|
california: "us-west-1",
|
10
|
+
oregon: "us-west-2",
|
11
|
+
canada: "ca-central-1",
|
10
12
|
ireland: "eu-west-1",
|
11
13
|
frankfurt: "eu-central-1",
|
12
|
-
|
14
|
+
london: "eu-west-2",
|
13
15
|
tokyo: "ap-northeast-1",
|
14
|
-
sydney: "ap-southeast-2",
|
15
16
|
seoul: "ap-northeast-2",
|
16
|
-
|
17
|
+
singapore: "ap-southeast-1",
|
18
|
+
sydney: "ap-southeast-2",
|
17
19
|
mumbai: "ap-south-1",
|
20
|
+
saopaulo: "sa-east-1",
|
18
21
|
}
|
19
22
|
|
20
23
|
PORT = {
|
@@ -21,7 +21,8 @@ def _array(args)
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def _bool(name, args, default = false)
|
24
|
-
args.key?(name.to_sym) ? args[name.to_sym]
|
24
|
+
bool = args.key?(name.to_sym) ? args[name.to_sym] : default
|
25
|
+
bool.to_s == 'true'
|
25
26
|
end
|
26
27
|
|
27
28
|
def _integer(name, args, default = 0)
|
@@ -32,6 +33,12 @@ def _capitalize(name)
|
|
32
33
|
name.split(' ').map(&:capitalize).join()
|
33
34
|
end
|
34
35
|
|
36
|
+
def _description(name)
|
37
|
+
name.gsub("\n", ' ').
|
38
|
+
gsub(/\s+/, ' ').gsub(/^\s/, '').gsub(/\s$/, '').
|
39
|
+
chomp.slice(0, 1024)
|
40
|
+
end
|
41
|
+
|
35
42
|
def _valid_values(value, values, default = nil)
|
36
43
|
return default if value.nil?
|
37
44
|
values.collect{|v| return v if v =~ /^#{value}$/i }
|
@@ -81,12 +88,13 @@ def _ref_attr_string(name, attr, args, ref_name = '')
|
|
81
88
|
end
|
82
89
|
|
83
90
|
def _ref_name(name, args, ref_name = '')
|
91
|
+
return _{ Ref _resource_name(args["ref_raw_#{name}".to_sym], ref_name) } if args.key? "ref_raw_#{name}".to_sym
|
84
92
|
return args["raw_#{name}".to_sym] if args.key? "raw_#{name}".to_sym
|
85
93
|
name = _ref_string(name, args, ref_name)
|
86
94
|
if name.empty?
|
87
|
-
_{ Fn__Join "-", [ _{ Ref "
|
95
|
+
_{ Fn__Join "-", [ _{ Ref _resource_name("service") }, _{ Ref _resource_name("name") } ] }
|
88
96
|
elsif name.is_a? Hash
|
89
|
-
_{ Fn__Join "-", [ _{ Ref "
|
97
|
+
_{ Fn__Join "-", [ _{ Ref _resource_name("service") }, name ] }
|
90
98
|
else
|
91
99
|
name.gsub(' ', '-')
|
92
100
|
end
|
@@ -132,7 +140,7 @@ def _tags(args)
|
|
132
140
|
tags = [
|
133
141
|
_{
|
134
142
|
Key "Name"
|
135
|
-
Value _tag_name(args
|
143
|
+
Value _tag_name(args)
|
136
144
|
},
|
137
145
|
_{
|
138
146
|
Key "Service"
|
@@ -147,10 +155,16 @@ def _tags(args)
|
|
147
155
|
tags
|
148
156
|
end
|
149
157
|
|
150
|
-
def _tag_name(
|
151
|
-
_{
|
152
|
-
|
153
|
-
|
158
|
+
def _tag_name(args)
|
159
|
+
return _{ Ref _resource_name(args["ref_raw_tag_name".to_sym]) } if args.key? "ref_raw_tag_name".to_sym
|
160
|
+
return args["raw_tag_name".to_sym] if args.key? "raw_tag_name".to_sym
|
161
|
+
|
162
|
+
tag_name = _ref_string("tag_name", args)
|
163
|
+
return tag_name unless tag_name.empty?
|
164
|
+
|
165
|
+
tag_name = _ref_string("name", args)
|
166
|
+
tag_name = tag_name.gsub(' ', '-') if tag_name.is_a? String
|
167
|
+
_{ Fn__Join [ "-", [ _{ Ref _resource_name(args[:tag_service] || "service") }, tag_name ] ] }
|
154
168
|
end
|
155
169
|
|
156
170
|
def _availability_zone(args, use_subnet = true)
|
@@ -1 +1 @@
|
|
1
|
-
KUMOGATA_TEMPLATE_VERSION = '0.0.
|
1
|
+
KUMOGATA_TEMPLATE_VERSION = '0.0.19'
|
data/template/alb-listener.rb
CHANGED
@@ -10,13 +10,13 @@ certificates = _alb_certificates(args)
|
|
10
10
|
defaults = _alb_actions(args)
|
11
11
|
lb = _ref_string("lb", args, "load balancer")
|
12
12
|
port = args[:port] || 80
|
13
|
-
protocol = _valid_values(
|
13
|
+
protocol = _valid_values(args[:protocol], %w( http https ), "http")
|
14
14
|
ssl = args[:ssl] || ""
|
15
15
|
|
16
16
|
_(name) do
|
17
17
|
Type "AWS::ElasticLoadBalancingV2::Listener"
|
18
18
|
Properties do
|
19
|
-
Certificates certificates
|
19
|
+
Certificates certificates if protocol == "https"
|
20
20
|
DefaultActions defaults
|
21
21
|
LoadBalancerArn lb
|
22
22
|
Port port
|
@@ -11,8 +11,14 @@ matcher = _alb_matcher(args)
|
|
11
11
|
target_name = _ref_name("target_name", args)
|
12
12
|
target_name = args[:name] if target_name.empty?
|
13
13
|
attributes = _alb_attributes(args)
|
14
|
-
|
15
|
-
protocol = _valid_values(
|
14
|
+
full_name = _ref_string("full_name", args)
|
15
|
+
protocol = _valid_values(args[:protocol], %w( http https ), "http")
|
16
|
+
port =
|
17
|
+
if PORT.key? protocol.to_sym
|
18
|
+
PORT[protocol.to_sym]
|
19
|
+
else
|
20
|
+
args[:port] || PORT[:http]
|
21
|
+
end
|
16
22
|
tags = _tags(args)
|
17
23
|
targets = _alb_targets(args)
|
18
24
|
vpc = _ref_string("vpc", args, "vpc")
|
@@ -31,8 +37,9 @@ _(name) do
|
|
31
37
|
Port port
|
32
38
|
Protocol protocol.upcase
|
33
39
|
Tags tags
|
34
|
-
TargetGroupAttributes attributes
|
35
|
-
|
40
|
+
TargetGroupAttributes attributes unless attributes.empty?
|
41
|
+
TargetGroupFullName full_name unless full_name.empty?
|
42
|
+
Targets targets unless targets.empty?
|
36
43
|
UnhealthyThresholdCount health_check[:unhealthly]
|
37
44
|
VpcId vpc
|
38
45
|
end
|
@@ -19,9 +19,10 @@ max = desired if max < desired
|
|
19
19
|
min = _integer("min", args, -1)
|
20
20
|
min = desired if min < desired
|
21
21
|
|
22
|
+
# 0 - 6 Sunday to Saturday
|
22
23
|
recurrence =
|
23
|
-
if args.key? :
|
24
|
-
case args[:
|
24
|
+
if args.key? :cron
|
25
|
+
case args[:cron]
|
25
26
|
when "every 5 min"
|
26
27
|
"*/5 * * * *"
|
27
28
|
when "every 30 min"
|
@@ -31,21 +32,19 @@ recurrence =
|
|
31
32
|
when "every day"
|
32
33
|
"0 0 * * *"
|
33
34
|
when "every week"
|
34
|
-
"0 0 * * Tue"
|
35
|
+
"0 0 * * #{args[:cron_day] || 'Tue'}"
|
35
36
|
when /\*/
|
36
|
-
args[:
|
37
|
-
else
|
38
|
-
_timestamp_utc(args[:recurrence], "cron")
|
37
|
+
args[:cron]
|
39
38
|
end
|
39
|
+
elsif args[:cron_time]
|
40
|
+
_timestamp_utc(args[:cron_time], "cron")
|
40
41
|
else
|
41
42
|
""
|
42
43
|
end
|
43
|
-
start_time =
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
_timestamp_utc(Time.now + 3600)
|
48
|
-
end
|
44
|
+
start_time = _timestamp_utc(args[:start_time] || Time.now + 3600)
|
45
|
+
|
46
|
+
## FIXME if older dot not empty
|
47
|
+
|
49
48
|
|
50
49
|
_(name) do
|
51
50
|
Type "AWS::AutoScaling::ScheduledAction"
|
data/template/mappings-ec2.rb
CHANGED
@@ -12,20 +12,24 @@ AWSInstanceType2Arch do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
# Amazon Linux AMI (HVM / 64-bit)
|
15
|
-
# https://aws.amazon.com/marketplace/pp/B00CIYTQTC/
|
15
|
+
# https://aws.amazon.com/marketplace/pp/B00CIYTQTC/
|
16
16
|
AWSRegionArch2AMIAmazonLinuxOfficial do
|
17
|
-
# 2016.
|
17
|
+
# 2016.09
|
18
18
|
image_id = {
|
19
|
-
virginia:
|
20
|
-
|
21
|
-
california: "
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
19
|
+
virginia: "0b33d91d",
|
20
|
+
ohio: "c55673a0",
|
21
|
+
california: "165a0876",
|
22
|
+
oregon: "f173cc91",
|
23
|
+
canada: "ebed508f",
|
24
|
+
ireland: "70edb016",
|
25
|
+
frankfurt: "af0fc0c0",
|
26
|
+
london: "f1949e95",
|
27
|
+
tokyo: "56d4ad31",
|
28
|
+
seoul: "dac312b4",
|
29
|
+
singapore: "dc9339bf",
|
30
|
+
sydney: "1c47407f",
|
31
|
+
mumbai: "f9daac96",
|
32
|
+
saopaulo: "80086dec",
|
29
33
|
}
|
30
34
|
|
31
35
|
AWS_REGION.each do |key, region|
|
@@ -37,20 +41,24 @@ end
|
|
37
41
|
|
38
42
|
# CentOS 7 (x86_64) with Updates HVM
|
39
43
|
# https://wiki.centos.org/Cloud/AWS
|
40
|
-
# https://aws.amazon.com/marketplace/
|
44
|
+
# https://aws.amazon.com/marketplace/pp/B00O7WM7QW/
|
41
45
|
AWSRegionArch2AMICentos7Official do
|
42
46
|
# 1602, released 02/26/2016
|
43
47
|
image_id = {
|
44
|
-
virginia:
|
45
|
-
|
48
|
+
virginia: "6d1c2007",
|
49
|
+
ohio: "6a2d760f",
|
46
50
|
california: "af4333cf",
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
oregon: "d2c924b2",
|
52
|
+
canada: "af62d0cb",
|
53
|
+
ireland: "7abd0209",
|
54
|
+
frankfurt: "9bf712f4",
|
55
|
+
london: "bb373ddf",
|
56
|
+
tokyo: "eec1c380",
|
57
|
+
seoul: "c74789a9",
|
58
|
+
singapore: "f068a193",
|
59
|
+
sydney: "fedafc9d",
|
60
|
+
mumbai: "95cda6fa",
|
61
|
+
saopaulo: "26b93b4a",
|
54
62
|
}
|
55
63
|
|
56
64
|
AWS_REGION.each do |key, region|
|
@@ -62,19 +70,24 @@ end
|
|
62
70
|
|
63
71
|
# Ubuntu Server 16.04 LTS
|
64
72
|
# https://cloud-images.ubuntu.com/locator/ec2/
|
73
|
+
# https://aws.amazon.com/marketplace/pp/B01JBL2M0O
|
65
74
|
AWSRegionArch2AMIUbuntu16Official do
|
66
75
|
# 16.04 LTS 20160907.1 hvm:ebs-ssd
|
67
76
|
image_id = {
|
68
|
-
virginia:
|
69
|
-
|
70
|
-
california: "
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
77
|
+
virginia: "3267bb24",
|
78
|
+
ohio: "e5be9b80",
|
79
|
+
california: "456f3125",
|
80
|
+
oregon: "df25a6bf",
|
81
|
+
canada: "", ## N/A
|
82
|
+
ireland: "cdfed1ab",
|
83
|
+
frankfurt: "f6dd0899",
|
84
|
+
london: "bcc5d0d8",
|
85
|
+
tokyo: "0c05506b",
|
86
|
+
seoul: "fc38e892",
|
87
|
+
singapore: "4a299829",
|
88
|
+
sydney: "d02d2eb3",
|
89
|
+
mumbai: "", ## N/A
|
90
|
+
saopaulo: "4cacca20",
|
78
91
|
}
|
79
92
|
|
80
93
|
AWS_REGION.each do |key, region|
|
data/template/output-ec2.rb
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
# Output ec2
|
3
3
|
#
|
4
4
|
|
5
|
+
public_ip = args[:public_ip] || false
|
6
|
+
|
5
7
|
_output "#{args[:name]} instance", ref_value: "#{args[:name]} instance"
|
6
8
|
_output "#{args[:name]} instance az", ref_value: [ "#{args[:name]} instance", "AvailabilityZone" ]
|
7
|
-
_output "#{args[:name]} instance public ip", ref_value: [ "#{args[:name]} instance", "PublicIp" ] if
|
9
|
+
_output "#{args[:name]} instance public ip", ref_value: [ "#{args[:name]} instance", "PublicIp" ] if public_ip
|
8
10
|
_output "#{args[:name]} instance private ip", ref_value: [ "#{args[:name]} instance", "PrivateIp" ]
|
data/template/output-elb.rb
CHANGED
@@ -12,5 +12,5 @@ _output "#{args[:name]} load balancer dns name",
|
|
12
12
|
ref_value: [ "#{args[:name]} load balancer", "DNSName" ]
|
13
13
|
_output "#{args[:name]} load balancer security group name",
|
14
14
|
ref_value: [ "#{args[:name]} load balancer", "SourceSecurityGroup.GroupName" ]
|
15
|
-
_output "#{args[:name]} load balancer
|
15
|
+
_output "#{args[:name]} load balancer security group owner",
|
16
16
|
ref_value: [ "#{args[:name]} load balancer", "SourceSecurityGroup.OwnerAlias" ]
|
data/test/ec2_test.rb
CHANGED
@@ -171,7 +171,7 @@ Test _ec2_security_group_egress(to: 80, group: "test")
|
|
171
171
|
assert_equal exp_template.chomp, act_template
|
172
172
|
end
|
173
173
|
|
174
|
-
def
|
174
|
+
def test_ec2_security_group_ingresses
|
175
175
|
template = <<-EOS
|
176
176
|
args = { ingress: [ from: 80 ] }
|
177
177
|
Test _ec2_security_group_ingresses("ingress", args)
|
@@ -317,6 +317,28 @@ Test _ec2_image("test", { image_id: false })
|
|
317
317
|
EOS
|
318
318
|
act_template = run_client_as_json(template)
|
319
319
|
exp_template = <<-EOS
|
320
|
+
{
|
321
|
+
"Test": {
|
322
|
+
"Fn::FindInMap": [
|
323
|
+
"AWSRegionArch2AMIAmazonLinuxOfficial",
|
324
|
+
{
|
325
|
+
"Ref": "AWS::Region"
|
326
|
+
},
|
327
|
+
{
|
328
|
+
"Fn::FindInMap": [
|
329
|
+
"AWSInstanceType2Arch",
|
330
|
+
"test",
|
331
|
+
"Arch"
|
332
|
+
]
|
333
|
+
}
|
334
|
+
]
|
335
|
+
}
|
336
|
+
|
337
|
+
template = <<-EOS
|
338
|
+
Test _ec2_image("test", { image_id: nil })
|
339
|
+
EOS
|
340
|
+
act_template = run_client_as_json(template)
|
341
|
+
exp_template = <<-EOS
|
320
342
|
{
|
321
343
|
"Test": {
|
322
344
|
"Fn::FindInMap": [
|
data/test/helper_test.rb
CHANGED
@@ -16,10 +16,10 @@ class HelperTest < Minitest::Test
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_bool
|
19
|
-
assert_equal _bool("test", { test: true }),
|
20
|
-
assert_equal _bool("test", { test: false }),
|
21
|
-
assert_equal _bool("test", { test1: false }, true),
|
22
|
-
assert_equal _bool("test", { test1: false }, false),
|
19
|
+
assert_equal _bool("test", { test: true }), true
|
20
|
+
assert_equal _bool("test", { test: false }), false
|
21
|
+
assert_equal _bool("test", { test1: false }, true), true
|
22
|
+
assert_equal _bool("test", { test1: false }, false), false
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_integer
|
@@ -33,6 +33,14 @@ class HelperTest < Minitest::Test
|
|
33
33
|
assert_equal _capitalize("test test"), "TestTest"
|
34
34
|
end
|
35
35
|
|
36
|
+
def test_description
|
37
|
+
description = _description <<-EOS
|
38
|
+
test description,
|
39
|
+
test
|
40
|
+
EOS
|
41
|
+
assert_equal description, "test description, test"
|
42
|
+
end
|
43
|
+
|
36
44
|
def test_valid_values
|
37
45
|
assert_equal _valid_values("test1", ["test1", "test2"]), "test1"
|
38
46
|
assert_equal _valid_values("test3", ["test1", "test2"], "test1"), "test1"
|
@@ -201,6 +209,30 @@ Test _ref_name("test", ref_test: "test")
|
|
201
209
|
EOS
|
202
210
|
assert_equal exp_template.chomp, act_template
|
203
211
|
|
212
|
+
template = <<-EOS
|
213
|
+
Test _ref_name("test", raw_test: "test")
|
214
|
+
EOS
|
215
|
+
act_template = run_client_as_json(template)
|
216
|
+
exp_template = <<-EOS
|
217
|
+
{
|
218
|
+
"Test": "test"
|
219
|
+
}
|
220
|
+
EOS
|
221
|
+
assert_equal exp_template.chomp, act_template
|
222
|
+
|
223
|
+
template = <<-EOS
|
224
|
+
Test _ref_name("test", ref_raw_test: "test")
|
225
|
+
EOS
|
226
|
+
act_template = run_client_as_json(template)
|
227
|
+
exp_template = <<-EOS
|
228
|
+
{
|
229
|
+
"Test": {
|
230
|
+
"Ref": "Test"
|
231
|
+
}
|
232
|
+
}
|
233
|
+
EOS
|
234
|
+
assert_equal exp_template.chomp, act_template
|
235
|
+
|
204
236
|
template = <<-EOS
|
205
237
|
Test _ref_name("test", {})
|
206
238
|
EOS
|
@@ -416,7 +448,7 @@ Test _tags({ name: "test", tags_append: { ref_test: "test" } })
|
|
416
448
|
|
417
449
|
def test_tag_name
|
418
450
|
template = <<-EOS
|
419
|
-
Test _tag_name("test")
|
451
|
+
Test _tag_name(name: "test")
|
420
452
|
EOS
|
421
453
|
act_template = run_client_as_json(template)
|
422
454
|
exp_template = <<-EOS
|
@@ -432,6 +464,111 @@ Test _tag_name("test")
|
|
432
464
|
]
|
433
465
|
]
|
434
466
|
}
|
467
|
+
}
|
468
|
+
EOS
|
469
|
+
assert_equal exp_template.chomp, act_template
|
470
|
+
|
471
|
+
template = <<-EOS
|
472
|
+
Test _tag_name(ref_name: "test")
|
473
|
+
EOS
|
474
|
+
act_template = run_client_as_json(template)
|
475
|
+
exp_template = <<-EOS
|
476
|
+
{
|
477
|
+
"Test": {
|
478
|
+
"Fn::Join": [
|
479
|
+
"-",
|
480
|
+
[
|
481
|
+
{
|
482
|
+
"Ref": "Service"
|
483
|
+
},
|
484
|
+
{
|
485
|
+
"Ref": "Test"
|
486
|
+
}
|
487
|
+
]
|
488
|
+
]
|
489
|
+
}
|
490
|
+
}
|
491
|
+
EOS
|
492
|
+
assert_equal exp_template.chomp, act_template
|
493
|
+
|
494
|
+
template = <<-EOS
|
495
|
+
Test _tag_name(tag_name: "test")
|
496
|
+
EOS
|
497
|
+
act_template = run_client_as_json(template)
|
498
|
+
exp_template = <<-EOS
|
499
|
+
{
|
500
|
+
"Test": "test"
|
501
|
+
}
|
502
|
+
EOS
|
503
|
+
assert_equal exp_template.chomp, act_template
|
504
|
+
|
505
|
+
template = <<-EOS
|
506
|
+
Test _tag_name(ref_tag_name: "test")
|
507
|
+
EOS
|
508
|
+
act_template = run_client_as_json(template)
|
509
|
+
exp_template = <<-EOS
|
510
|
+
{
|
511
|
+
"Test": {
|
512
|
+
"Ref": "Test"
|
513
|
+
}
|
514
|
+
}
|
515
|
+
EOS
|
516
|
+
assert_equal exp_template.chomp, act_template
|
517
|
+
|
518
|
+
template = <<-EOS
|
519
|
+
Test _tag_name({ name: "test", ref_tag_name: "test" })
|
520
|
+
EOS
|
521
|
+
act_template = run_client_as_json(template)
|
522
|
+
exp_template = <<-EOS
|
523
|
+
{
|
524
|
+
"Test": {
|
525
|
+
"Ref": "Test"
|
526
|
+
}
|
527
|
+
}
|
528
|
+
EOS
|
529
|
+
assert_equal exp_template.chomp, act_template
|
530
|
+
|
531
|
+
template = <<-EOS
|
532
|
+
Test _tag_name(ref_raw_tag_name: "test")
|
533
|
+
EOS
|
534
|
+
act_template = run_client_as_json(template)
|
535
|
+
exp_template = <<-EOS
|
536
|
+
{
|
537
|
+
"Test": {
|
538
|
+
"Ref": "Test"
|
539
|
+
}
|
540
|
+
}
|
541
|
+
EOS
|
542
|
+
assert_equal exp_template.chomp, act_template
|
543
|
+
|
544
|
+
template = <<-EOS
|
545
|
+
Test _tag_name(raw_tag_name: "test")
|
546
|
+
EOS
|
547
|
+
act_template = run_client_as_json(template)
|
548
|
+
exp_template = <<-EOS
|
549
|
+
{
|
550
|
+
"Test": "test"
|
551
|
+
}
|
552
|
+
EOS
|
553
|
+
assert_equal exp_template.chomp, act_template
|
554
|
+
|
555
|
+
template = <<-EOS
|
556
|
+
Test _tag_name(name: "test", tag_service: "test")
|
557
|
+
EOS
|
558
|
+
act_template = run_client_as_json(template)
|
559
|
+
exp_template = <<-EOS
|
560
|
+
{
|
561
|
+
"Test": {
|
562
|
+
"Fn::Join": [
|
563
|
+
"-",
|
564
|
+
[
|
565
|
+
{
|
566
|
+
"Ref": "Test"
|
567
|
+
},
|
568
|
+
"test"
|
569
|
+
]
|
570
|
+
]
|
571
|
+
}
|
435
572
|
}
|
436
573
|
EOS
|
437
574
|
assert_equal exp_template.chomp, act_template
|
@@ -477,6 +614,7 @@ Test _availability_zone({})
|
|
477
614
|
}
|
478
615
|
EOS
|
479
616
|
assert_equal exp_template.chomp, act_template
|
617
|
+
|
480
618
|
end
|
481
619
|
|
482
620
|
def test_availability_zones
|
@@ -3,47 +3,7 @@ require 'kumogata/template/const'
|
|
3
3
|
|
4
4
|
class MappingsEc2Test < Minitest::Test
|
5
5
|
def test_normal
|
6
|
-
|
7
|
-
amazon_image_id = {
|
8
|
-
virginia: "08111162",
|
9
|
-
oregon: "c229c0a2",
|
10
|
-
california: "1b0f7d7b",
|
11
|
-
frankfurt: "e2df388d",
|
12
|
-
ireland: "31328842",
|
13
|
-
singapore: "e90dc68a",
|
14
|
-
sydney: "f2210191",
|
15
|
-
tokyo: "f80e0596",
|
16
|
-
seoul: "6598510b",
|
17
|
-
saopaulo: "1e159872",
|
18
|
-
}
|
19
|
-
amazon_images = get_image_values(amazon_image_id)
|
20
|
-
centos7_image_id = {
|
21
|
-
virginia: "6d1c2007",
|
22
|
-
oregon: "d2c924b2",
|
23
|
-
california: "af4333cf",
|
24
|
-
ireland: "7abd0209",
|
25
|
-
frankfurt: "9bf712f4",
|
26
|
-
singapore: "f068a193",
|
27
|
-
tokyo: "eec1c380",
|
28
|
-
sydney: "fedafc9d",
|
29
|
-
seoul: "c74789a9",
|
30
|
-
saopaulo: "26b93b4a",
|
31
|
-
}
|
32
|
-
centos7_images = get_image_values(centos7_image_id)
|
33
|
-
ubuntu16_image_id = {
|
34
|
-
virginia: "2ef48339",
|
35
|
-
oregon: "746aba14",
|
36
|
-
california: "a9a8e4c9",
|
37
|
-
frankfurt: "a9a557c6",
|
38
|
-
ireland: "643d4217",
|
39
|
-
singapore: "42934921",
|
40
|
-
sydney: "623c0d01",
|
41
|
-
tokyo: "919cd68",
|
42
|
-
seoul: "", ## N/A
|
43
|
-
saopaulo: "60bd2d0c",
|
44
|
-
}
|
45
|
-
ubuntu16_images = get_image_values(ubuntu16_image_id)
|
46
|
-
|
6
|
+
images = generate_image_values
|
47
7
|
archs = ""
|
48
8
|
EC2_INSTANCE_TYPES.each_with_index do |type, i|
|
49
9
|
archs += <<-EOS
|
@@ -56,20 +16,21 @@ class MappingsEc2Test < Minitest::Test
|
|
56
16
|
template = <<-EOS
|
57
17
|
_mappings_ec2 "test"
|
58
18
|
EOS
|
59
|
-
act_template = run_client_as_json(template)
|
19
|
+
act_template = convert_image_values(run_client_as_json(template))
|
20
|
+
|
60
21
|
exp_template = <<-EOS
|
61
22
|
{
|
62
23
|
"AWSInstanceType2Arch": {
|
63
24
|
#{archs.chomp}
|
64
25
|
},
|
65
26
|
"AWSRegionArch2AMIAmazonLinuxOfficial": {
|
66
|
-
#{
|
27
|
+
#{images.chomp}
|
67
28
|
},
|
68
29
|
"AWSRegionArch2AMICentos7Official": {
|
69
|
-
#{
|
30
|
+
#{images.chomp}
|
70
31
|
},
|
71
32
|
"AWSRegionArch2AMIUbuntu16Official": {
|
72
|
-
#{
|
33
|
+
#{images.chomp}
|
73
34
|
}
|
74
35
|
}
|
75
36
|
EOS
|
@@ -77,16 +38,35 @@ _mappings_ec2 "test"
|
|
77
38
|
end
|
78
39
|
|
79
40
|
private
|
80
|
-
def
|
41
|
+
def generate_image_values
|
81
42
|
values = ''
|
82
43
|
AWS_REGION.each_with_index do |v, i|
|
83
44
|
region, location = v
|
84
45
|
values += <<-EOS
|
85
46
|
"#{location}": {
|
86
|
-
"HVM64": "ami
|
47
|
+
"HVM64": "ami-*"
|
87
48
|
}#{i == (AWS_REGION.size - 1) ? '' : ','}
|
88
49
|
EOS
|
89
50
|
end
|
90
51
|
values
|
91
52
|
end
|
53
|
+
|
54
|
+
def convert_image_values(values)
|
55
|
+
result = {}
|
56
|
+
JSON.parse(values).each do |k ,v|
|
57
|
+
if k == "AWSInstanceType2Arch"
|
58
|
+
result[k] = v
|
59
|
+
next
|
60
|
+
else
|
61
|
+
result[k] = {}
|
62
|
+
end
|
63
|
+
v.each do |kk, vv|
|
64
|
+
result[k][kk] = {}
|
65
|
+
vv.each do |kkk, vvv|
|
66
|
+
result[k][kk][kkk] = vvv.gsub(/^ami-(.*)/, 'ami-*')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
JSON.pretty_generate(result)
|
71
|
+
end
|
92
72
|
end
|
@@ -32,8 +32,8 @@ _output_elb "test"
|
|
32
32
|
]
|
33
33
|
}
|
34
34
|
},
|
35
|
-
"
|
36
|
-
"Description": "description of
|
35
|
+
"TestLoadBalancerSecurityGroupOwner": {
|
36
|
+
"Description": "description of TestLoadBalancerSecurityGroupOwner",
|
37
37
|
"Value": {
|
38
38
|
"Fn::GetAtt": [
|
39
39
|
"TestLoadBalancer",
|
@@ -93,8 +93,8 @@ _output_elb "test", route53: true
|
|
93
93
|
]
|
94
94
|
}
|
95
95
|
},
|
96
|
-
"
|
97
|
-
"Description": "description of
|
96
|
+
"TestLoadBalancerSecurityGroupOwner": {
|
97
|
+
"Description": "description of TestLoadBalancerSecurityGroupOwner",
|
98
98
|
"Value": {
|
99
99
|
"Fn::GetAtt": [
|
100
100
|
"TestLoadBalancer",
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'abstract_unit'
|
2
|
+
|
3
|
+
class OutputIamInstancerProfileTest < Minitest::Test
|
4
|
+
def test_normal
|
5
|
+
template = <<-EOS
|
6
|
+
_output_iam_instance_profile "test"
|
7
|
+
EOS
|
8
|
+
act_template = run_client_as_json(template)
|
9
|
+
exp_template = <<-EOS
|
10
|
+
{
|
11
|
+
"TestInstanceProfile": {
|
12
|
+
"Description": "description of TestInstanceProfile",
|
13
|
+
"Value": {
|
14
|
+
"Ref": "TestInstanceProfile"
|
15
|
+
}
|
16
|
+
},
|
17
|
+
"TestInstanceProfileArn": {
|
18
|
+
"Description": "description of TestInstanceProfileArn",
|
19
|
+
"Value": {
|
20
|
+
"Fn::GetAtt": [
|
21
|
+
"TestInstanceProfile",
|
22
|
+
"Arn"
|
23
|
+
]
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
EOS
|
28
|
+
assert_equal exp_template.chomp, act_template
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'abstract_unit'
|
2
|
+
|
3
|
+
class OutputIamRoleTest < Minitest::Test
|
4
|
+
def test_normal
|
5
|
+
template = <<-EOS
|
6
|
+
_output_iam_role "test"
|
7
|
+
EOS
|
8
|
+
act_template = run_client_as_json(template)
|
9
|
+
exp_template = <<-EOS
|
10
|
+
{
|
11
|
+
"TestRole": {
|
12
|
+
"Description": "description of TestRole",
|
13
|
+
"Value": {
|
14
|
+
"Ref": "TestRole"
|
15
|
+
}
|
16
|
+
},
|
17
|
+
"TestRoleArn": {
|
18
|
+
"Description": "description of TestRoleArn",
|
19
|
+
"Value": {
|
20
|
+
"Fn::GetAtt": [
|
21
|
+
"TestRole",
|
22
|
+
"Arn"
|
23
|
+
]
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
EOS
|
28
|
+
assert_equal exp_template.chomp, act_template
|
29
|
+
end
|
30
|
+
end
|
@@ -3,7 +3,7 @@ require 'abstract_unit'
|
|
3
3
|
class RdsDbInstanceTest < Minitest::Test
|
4
4
|
def test_normal
|
5
5
|
template = <<-EOS
|
6
|
-
_rds_db_instance "test", ref_db_name: "test", ref_port: "test", ref_subnet_group: "test", ref_security_groups: "test", ref_user_name: "test", ref_user_password: "test"
|
6
|
+
_rds_db_instance "test", ref_db_name: "test", ref_port: "test", ref_subnet_group: "test", ref_security_groups: "test", ref_user_name: "test", ref_user_password: "test", az: "test"
|
7
7
|
EOS
|
8
8
|
act_template = run_client_as_json(template)
|
9
9
|
exp_template = <<-EOS
|
@@ -14,6 +14,7 @@ _rds_db_instance "test", ref_db_name: "test", ref_port: "test", ref_subnet_group
|
|
14
14
|
"AllocatedStorage": "5",
|
15
15
|
"AllowMajorVersionUpgrade": "true",
|
16
16
|
"AutoMinorVersionUpgrade": "true",
|
17
|
+
"AvailabilityZone": "test",
|
17
18
|
"BackupRetentionPeriod": "7",
|
18
19
|
"DBInstanceClass": "db.t2.medium",
|
19
20
|
"DBInstanceIdentifier": {
|
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.19
|
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-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -214,6 +214,8 @@ files:
|
|
214
214
|
- template/output-elasticache.rb
|
215
215
|
- template/output-elb.rb
|
216
216
|
- template/output-emr.rb
|
217
|
+
- template/output-iam-instance-profile.rb
|
218
|
+
- template/output-iam-role.rb
|
217
219
|
- template/output-name.rb
|
218
220
|
- template/output-rds.rb
|
219
221
|
- template/output-redshift.rb
|
@@ -354,6 +356,8 @@ files:
|
|
354
356
|
- test/template/output-elasticache_test.rb
|
355
357
|
- test/template/output-elb_test.rb
|
356
358
|
- test/template/output-emr_test.rb
|
359
|
+
- test/template/output-iam-instance-profile_test.rb
|
360
|
+
- test/template/output-iam-role_test.rb
|
357
361
|
- test/template/output-name_test.rb
|
358
362
|
- test/template/output-rds_test.rb
|
359
363
|
- test/template/output-redshift_test.rb
|
@@ -519,6 +523,8 @@ test_files:
|
|
519
523
|
- test/template/output-elasticache_test.rb
|
520
524
|
- test/template/output-elb_test.rb
|
521
525
|
- test/template/output-emr_test.rb
|
526
|
+
- test/template/output-iam-instance-profile_test.rb
|
527
|
+
- test/template/output-iam-role_test.rb
|
522
528
|
- test/template/output-name_test.rb
|
523
529
|
- test/template/output-rds_test.rb
|
524
530
|
- test/template/output-redshift_test.rb
|