terrafying-components 1.16.3 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9983c19cd686106f44dbb89fc3b6183e9d0ae3901f5b12726047dadf1765bcfb
4
- data.tar.gz: bf3276537d3f02d679e6125cd3d121ecdc066cde8378cf7c0fcd9432fac0a305
3
+ metadata.gz: 71540ce13f2a767a6cd4473c6dbac6bbac39b8e3c3c513d9b7dd70fb48150263
4
+ data.tar.gz: fe1fb4871f8b7147bdc98a0e73e7a057b4063ddfccccd0202c6791a3faf959fd
5
5
  SHA512:
6
- metadata.gz: 5c19b489486496916e5e2b23ecbdfc4459f5098e705621f3e752f849b91e20a3f29890452a05db06b89042ced288fe1619666f5521652af82a1b8c6d40a1a28b
7
- data.tar.gz: 0ac3a558be454d86b75b9f28aa036eb2e057aff44d33664d8d9ffa8735ed22a21ff3ee3019b4b048eb0d05340f11c2b243272ec804c7147cdaa8c5e7a000c2f9
6
+ metadata.gz: 71da83d4a07e356c104eaf6cce633e8b118c38ae4b5e5952c6c20b81a57ff738c60e35253b5ef910a7b67b143c9615c93bb05b3fde80af26e5d060ba63f9d944
7
+ data.tar.gz: 18f9aac3085b00129c5d94ff2bcbc11e501af5bbac428ba2125ec32adfdcc8d55cd675773ccca78b3da4c9edcfa7ad3f9e7cefe0f7262cce4416474abd5e6acd
@@ -33,7 +33,7 @@ module Terrafying
33
33
  options = {
34
34
  public: false,
35
35
  eip: false,
36
- ami: aws.ami('base-image-fc-b4b2c239', owners = ['477284023816']),
36
+ ami: aws.ami('base-image-fc-2860fb52', owners = ['136393635417']),
37
37
  instance_type: 't3a.micro',
38
38
  instances: { min: 1, max: 1, desired: 1, tags: {} },
39
39
  ports: [],
@@ -44,9 +44,12 @@ module Terrafying
44
44
  subnets: vpc.subnets.fetch(:private, []),
45
45
  depends_on: [],
46
46
  rolling_update: :simple,
47
+ metadata_options: {},
47
48
  vpc_endpoints_egress: []
48
49
  }.merge(options)
49
50
 
51
+ metadata_options = options[:metadata_options]
52
+
50
53
  ident = "#{tf_safe(vpc.name)}-#{name}"
51
54
 
52
55
  @name = ident
@@ -85,6 +88,7 @@ module Terrafying
85
88
  lifecycle: {
86
89
  create_before_destroy: true
87
90
  },
91
+ metadata_options: options[:metadata_options],
88
92
  depends_on: resource_name_from(options[:instance_profile])
89
93
 
90
94
  if options[:instances][:track]
@@ -138,7 +142,7 @@ module Terrafying
138
142
  protocol: -1,
139
143
  prefix_list_ids: prefix_ids
140
144
  end
141
-
145
+
142
146
  def default_egress_rule(ident, security_group)
143
147
  resource :aws_security_group_rule, "#{ident}-default-egress",
144
148
  security_group_id: security_group,
@@ -159,7 +163,7 @@ module Terrafying
159
163
 
160
164
  def attach_load_balancer(load_balancer)
161
165
  load_balancer.targets.each.with_index do |target, i|
162
- resource :aws_autoscaling_attachment, "#{load_balancer.name}-#{@name}-#{i}".gsub(%r{^(\d)}, '_\1'),
166
+ resource :aws_autoscaling_attachment, "#{load_balancer.name}-#{@name}-#{i}",
163
167
  autoscaling_group_name: @asg,
164
168
  alb_target_group_arn: target.target_group
165
169
  end
@@ -169,14 +173,13 @@ module Terrafying
169
173
 
170
174
  def autoscale_on_load_balancer(load_balancer, target_value:, disable_scale_in:)
171
175
  load_balancer.targets.each.with_index do |target, i|
172
- policy_ident = "#{load_balancer.name}-#{@name}-#{i}".gsub(%r{^(\d)}, '_\1')
173
176
  policy_name = "#{load_balancer.name}-#{@name}-#{i}"
174
177
  lb_arn = load_balancer.id.to_s.gsub(/id/, 'arn_suffix')
175
178
  tg_arn = target.target_group.to_s.gsub(/id/, 'arn_suffix')
176
179
  listener = "aws_lb_listener.#{target.listener.to_s.split('.')[1]}"
177
- autoscaling_attachment = "aws_autoscaling_attachment.#{policy_ident}"
180
+ autoscaling_attachment = "aws_autoscaling_attachment.#{policy_name}"
178
181
 
179
- resource :aws_autoscaling_policy, policy_ident,
182
+ resource :aws_autoscaling_policy, policy_name,
180
183
  name: policy_name,
181
184
  autoscaling_group_name: @asg,
182
185
  policy_type: 'TargetTrackingScaling',
@@ -36,8 +36,14 @@ module Terrafying
36
36
  instance_profile: nil,
37
37
  ports: [],
38
38
  tags: {},
39
- security_groups: [],
40
- depends_on: []
39
+ security_groups: nil,
40
+ metadata_options: nil,
41
+ depends_on: nil,
42
+ ipv6_cidr_blocks: nil,
43
+ prefix_list_ids: nil,
44
+ security_groups: nil,
45
+ self: nil,
46
+ description: nil,
41
47
  }.merge(options)
42
48
 
43
49
  ident = "#{tf_safe(vpc.name)}-#{name}"
@@ -55,7 +61,12 @@ module Terrafying
55
61
  from_port: 0,
56
62
  to_port: 0,
57
63
  protocol: -1,
58
- cidr_blocks: ['0.0.0.0/0']
64
+ cidr_blocks: ['0.0.0.0/0'],
65
+ ipv6_cidr_blocks: options[:ipv6_cidr_blocks],
66
+ prefix_list_ids: options[:prefix_list_ids],
67
+ security_groups: options[:security_groups],
68
+ self: options[:self],
69
+ description: options[:description]
59
70
  }
60
71
  ]
61
72
 
@@ -99,6 +110,7 @@ module Terrafying
99
110
  vpc.internal_ssh_security_group
100
111
  ].push(*options[:security_groups]),
101
112
  user_data: options[:user_data],
113
+ metadata_options: options[:metadata_options],
102
114
  lifecycle: {
103
115
  create_before_destroy: true
104
116
  },
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'digest/bubblebabble'
3
4
  require 'terrafying/components/usable'
4
5
  require 'terrafying/generator'
5
- require 'digest'
6
+
6
7
  require_relative './ports'
7
8
 
8
9
  module Terrafying
@@ -35,15 +36,14 @@ module Terrafying
35
36
  rescue StandardError
36
37
  @type = 'application'
37
38
  ident = make_identifier(@type, vpc.name, name)
38
- name = make_name(@type, vpc.name, name)
39
39
 
40
- lb = aws.lb_by_name(name)
40
+ lb = aws.lb_by_name(ident)
41
41
 
42
- @security_group = aws.security_group_by_tags(loadbalancer_name: name)
42
+ @security_group = aws.security_group_by_tags(loadbalancer_name: ident)
43
43
  end
44
44
 
45
45
  @id = lb.load_balancer_arn
46
- @name = name
46
+ @name = ident
47
47
 
48
48
  target_groups = aws.target_groups_by_lb(@id)
49
49
 
@@ -93,14 +93,14 @@ module Terrafying
93
93
  @type = l4_ports.count == 0 ? 'application' : 'network'
94
94
 
95
95
  ident = make_identifier(@type, vpc.name, name)
96
- @name = make_name(@type, vpc.name, name)
96
+ @name = ident
97
97
 
98
98
  if application?
99
99
  @security_group = resource :aws_security_group, ident,
100
- name: "loadbalancer-#{@name}",
101
- description: "Describe the ingress and egress of the load balancer #{@name}",
100
+ name: "loadbalancer-#{ident}",
101
+ description: "Describe the ingress and egress of the load balancer #{ident}",
102
102
  tags: @tags.merge(
103
- loadbalancer_name: @name
103
+ loadbalancer_name: ident
104
104
  ),
105
105
  vpc_id: vpc.id
106
106
 
@@ -112,7 +112,7 @@ module Terrafying
112
112
  end
113
113
 
114
114
  @id = resource :aws_lb, ident, {
115
- name: @name,
115
+ name: ident,
116
116
  load_balancer_type: type,
117
117
  internal: !options[:public],
118
118
  tags: @tags
@@ -125,9 +125,8 @@ module Terrafying
125
125
 
126
126
  @ports.each do |port|
127
127
  port_ident = "#{ident}-#{port[:downstream_port]}"
128
- port_name = "#{@name}-#{port[:downstream_port]}"
129
128
 
130
- default_action = port.key?(:action) ? port[:action] : forward_to_tg(port, port_ident, port_name, vpc)
129
+ default_action = port.key?(:action) ? port[:action] : forward_to_tg(port, port_ident, vpc)
131
130
 
132
131
  ssl_options = alb_certs(port, port_ident)
133
132
 
@@ -149,9 +148,9 @@ module Terrafying
149
148
  self
150
149
  end
151
150
 
152
- def forward_to_tg(port, port_ident, port_name, vpc)
151
+ def forward_to_tg(port, port_ident, vpc)
153
152
  target_group = resource :aws_lb_target_group, port_ident, {
154
- name: port_name,
153
+ name: port_ident,
155
154
  port: port[:downstream_port],
156
155
  protocol: port[:type].upcase,
157
156
  vpc_id: vpc.id
@@ -216,16 +215,12 @@ module Terrafying
216
215
  set.autoscale_on_load_balancer(self, target_value: target_value, disable_scale_in: disable_scale_in)
217
216
  end
218
217
 
219
- def make_name(type, vpc_name, name)
218
+ def make_identifier(type, vpc_name, name)
220
219
  gen_id = "#{type}-#{tf_safe(vpc_name)}-#{name}"
221
- return Digest::SHA2.hexdigest(gen_id)[0..24] if @hex_ident || gen_id.size > 26
220
+ return Digest::SHA256.bubblebabble(gen_id)[0..15] if @hex_ident || gen_id.size > 26
222
221
 
223
222
  gen_id[0..31]
224
223
  end
225
-
226
- def make_identifier(type, vpc_name, name)
227
- make_name(type, vpc_name, name).gsub(%r{^(\d)}, '_\1')
228
- end
229
224
  end
230
225
  end
231
226
  end
@@ -22,7 +22,7 @@ module Terrafying
22
22
  thanos_name: 'thanos',
23
23
  thanos_version: 'v0.10.1',
24
24
  prom_name: 'prometheus',
25
- prom_version: 'v2.23.0',
25
+ prom_version: 'v2.15.2',
26
26
  instances: 2,
27
27
  instance_type: 't3a.small',
28
28
  thanos_instance_type: 't3a.small',
@@ -41,7 +41,7 @@ module Terrafying
41
41
 
42
42
  def create_in(vpc, name, options = {})
43
43
  options = {
44
- ami: aws.ami('base-image-fc-b4b2c239', owners = ['477284023816']),
44
+ ami: aws.ami('base-image-fc-2860fb52', owners = ['136393635417']),
45
45
  instance_type: 't3a.micro',
46
46
  ports: [],
47
47
  instances: [{}],
@@ -59,6 +59,7 @@ module Terrafying
59
59
  subnets: vpc.subnets.fetch(:private, []),
60
60
  startup_grace_period: 300,
61
61
  depends_on: [],
62
+ metadata_options: {},
62
63
  audit_role: "arn:aws:iam::#{aws.account_id}:role/auditd_logging",
63
64
  metrics_ports: [],
64
65
  vpc_endpoints_egress: []
@@ -96,6 +97,8 @@ module Terrafying
96
97
  @instance_profile = add! InstanceProfile.create(ident, statements: iam_statements)
97
98
  end
98
99
 
100
+ metadata_options = options[:metadata_options]
101
+
99
102
  tags = options[:tags].merge(service_name: name)
100
103
 
101
104
  set = options[:instances].is_a?(Hash) ? DynamicSet : StaticSet
@@ -112,6 +115,7 @@ module Terrafying
112
115
  instance_set_options = {
113
116
  instance_profile: @instance_profile,
114
117
  depends_on: depends_on,
118
+ metadata_options: metadata_options,
115
119
  tags: tags
116
120
  }
117
121
 
@@ -166,7 +170,7 @@ module Terrafying
166
170
  prom = Prometheus.find_in(vpc: vpc)
167
171
  ports.each do |port|
168
172
  sg_rule_ident = Digest::SHA256.hexdigest("#{vpc.name}-#{port}-#{security_group}-#{prom.security_group}")
169
- resource :aws_security_group_rule, sg_rule_ident.gsub(%r{^(\d)}, '_\1'),
173
+ resource :aws_security_group_rule, sg_rule_ident,
170
174
  security_group_id: security_group,
171
175
  type: 'ingress',
172
176
  from_port: port,
@@ -38,7 +38,7 @@ module Terrafying
38
38
  options = {
39
39
  public: false,
40
40
  eip: false,
41
- ami: aws.ami('base-image-fc-b4b2c239', owners = ['136393635417']),
41
+ ami: aws.ami('base-image-fc-2860fb52', owners = ['136393635417']),
42
42
  instance_type: 't3a.micro',
43
43
  subnets: vpc.subnets.fetch(:private, []),
44
44
  ports: [],
@@ -63,7 +63,7 @@ module Terrafying
63
63
  description: "Describe the ingress and egress of the static set #{ident}",
64
64
  tags: options[:tags],
65
65
  vpc_id: vpc.id
66
-
66
+
67
67
  vpc_endpoints_egress = options[:vpc_endpoints_egress]
68
68
  if vpc_endpoints_egress.empty?
69
69
  default_egress_rule(ident, @security_group)
@@ -102,7 +102,7 @@ module Terrafying
102
102
  type: 'ingress',
103
103
  from_port: from_port(port[:upstream_port]),
104
104
  to_port: to_port(port[:upstream_port]),
105
- protocol: port[:type] == 'udp' ? 'udp' : 'tcp',
105
+ protocol: port[:type],
106
106
  self: true
107
107
  end
108
108
 
@@ -161,7 +161,7 @@ module Terrafying
161
161
 
162
162
  def attach_load_balancer(load_balancer)
163
163
  @instances.product(load_balancer.targets).each.with_index do |(instance, target), i|
164
- resource :aws_lb_target_group_attachment, "#{load_balancer.name}-#{@name}-#{i}".gsub(%r{^(\d)}, '_\1'),
164
+ resource :aws_lb_target_group_attachment, "#{load_balancer.name}-#{@name}-#{i}",
165
165
  target_group_arn: target.target_group,
166
166
  target_id: instance.id
167
167
  end
@@ -16,7 +16,7 @@ module Terrafying
16
16
  end
17
17
 
18
18
  def path_mtu_setup!
19
- resource :aws_security_group_rule, "#{@name}-path-mtu".gsub(%r{^(\d)}, '_\1'),
19
+ resource :aws_security_group_rule, "#{@name}-path-mtu",
20
20
  security_group_id: egress_security_group,
21
21
  type: 'ingress',
22
22
  protocol: 1, # icmp
@@ -42,7 +42,7 @@ module Terrafying
42
42
  cidr_ident = cidr.tr('./', '-')
43
43
 
44
44
  @ports.select(&block).map do |port|
45
- resource :aws_security_group_rule, "#{@name}-to-#{cidr_ident}-#{port[:name]}".gsub(%r{^(\d)}, '_\1'),
45
+ resource :aws_security_group_rule, "#{@name}-to-#{cidr_ident}-#{port[:name]}",
46
46
  security_group_id: ingress_security_group,
47
47
  type: 'ingress',
48
48
  from_port: from_port(port[:upstream_port]),
@@ -92,7 +92,7 @@ module Terrafying
92
92
  def used_by(*other_resources, &block)
93
93
  other_resources.map do |other_resource|
94
94
  @ports.select(&block).map.map do |port|
95
- resource :aws_security_group_rule, "#{@name}-to-#{other_resource.name}-#{port[:name]}".gsub(%r{^(\d)}, '_\1'),
95
+ resource :aws_security_group_rule, "#{@name}-to-#{other_resource.name}-#{port[:name]}",
96
96
  security_group_id: ingress_security_group,
97
97
  type: 'ingress',
98
98
  from_port: from_port(port[:upstream_port]),
@@ -100,7 +100,7 @@ module Terrafying
100
100
  protocol: port[:type] == 'udp' ? 'udp' : 'tcp',
101
101
  source_security_group_id: other_resource.egress_security_group
102
102
 
103
- resource :aws_security_group_rule, "#{other_resource.name}-to-#{@name}-#{port[:name]}".gsub(%r{^(\d)}, '_\1'),
103
+ resource :aws_security_group_rule, "#{other_resource.name}-to-#{@name}-#{port[:name]}",
104
104
  security_group_id: other_resource.egress_security_group,
105
105
  type: 'egress',
106
106
  from_port: from_port(port[:downstream_port]),
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Terrafying
4
4
  module Components
5
- VERSION = '1.16.3'
5
+ VERSION = '2.0.0'
6
6
  end
7
7
  end
@@ -184,7 +184,12 @@ module Terrafying
184
184
  from_port: 22,
185
185
  to_port: 22,
186
186
  protocol: 'tcp',
187
- cidr_blocks: [@cidr]
187
+ cidr_blocks: [@cidr],
188
+ description: nil,
189
+ ipv6_cidr_blocks: nil,
190
+ prefix_list_ids: nil,
191
+ security_groups: nil,
192
+ self: nil
188
193
  }
189
194
  ],
190
195
  egress: [
@@ -192,7 +197,12 @@ module Terrafying
192
197
  from_port: 22,
193
198
  to_port: 22,
194
199
  protocol: 'tcp',
195
- cidr_blocks: [@cidr]
200
+ cidr_blocks: [@cidr],
201
+ description: nil,
202
+ ipv6_cidr_blocks: nil,
203
+ prefix_list_ids: nil,
204
+ security_groups: nil,
205
+ self: nil
196
206
  }
197
207
  ]
198
208
  self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terrafying-components
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - uSwitch Limited
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-29 00:00:00.000000000 Z
11
+ date: 2020-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake