terrafying-components 1.15.18 → 1.15.23

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: 1b7cd1e590b1cbd1863be5d56aa2af4735497e4796d38042aa26e118a447e6bd
4
- data.tar.gz: 44ac80ad5a1b33da21125fef0aab38dd9f23414e2da3e1cc3687fd85c855fe0a
3
+ metadata.gz: 38c0abb6c26db58962498dbf9d7972f882961b3eea7ae15ea9e751006a20a8ec
4
+ data.tar.gz: eb67dc1708c7ea17c0ad765f497f880355f34ef66f24b6065db42a5508a400ad
5
5
  SHA512:
6
- metadata.gz: 33bb4d1e48210e0e3c34c6d130a2b5ca15ec25ec99977800786d5c1f6a525466b580d63ed6a0bd7eb4be400d58b997f752ee4a1626afdc3e32501f1e777b108f
7
- data.tar.gz: 4881b7a5098f49eb191728a616af830513a68bb213af6d0803cf42028fc5322fa57b51b7d2c87bd9a4a4ec094c0f23e3b6b6632e3c8e76a6a2cf1f66d880e412
6
+ metadata.gz: 68441af54da4b7245890c814210046a19907b359a2001f44213db873a1eea9c0081aa2b04371545887765c5859bd241edf2488d8b3c5b1222e81e91c05ef263c
7
+ data.tar.gz: 7e864776191dda38e812051ce5c2ee74cce3ae8a6de474698b57057ea77328c611475706c3619e14c5b522037b0b8615d94520fe0f6616ff864d2bd1d3ec3b9c
@@ -33,7 +33,7 @@ module Terrafying
33
33
  options = {
34
34
  public: false,
35
35
  eip: false,
36
- ami: aws.ami('base-image-fc-2860fb52', owners = ['136393635417']),
36
+ ami: aws.ami('base-image-fc-3c48f829', owners = ['477284023816']),
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: nil,
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]
@@ -36,6 +36,7 @@ module Terrafying
36
36
  instance_profile: nil,
37
37
  ports: [],
38
38
  tags: {},
39
+ metadata_options: nil,
39
40
  security_groups: [],
40
41
  depends_on: []
41
42
  }.merge(options)
@@ -55,7 +56,12 @@ module Terrafying
55
56
  from_port: 0,
56
57
  to_port: 0,
57
58
  protocol: -1,
58
- cidr_blocks: ['0.0.0.0/0']
59
+ cidr_blocks: ['0.0.0.0/0'],
60
+ ipv6_cidr_blocks: nil,
61
+ prefix_list_ids: nil,
62
+ security_groups: nil,
63
+ self: nil,
64
+ description: nil
59
65
  }
60
66
  ]
61
67
 
@@ -99,6 +105,7 @@ module Terrafying
99
105
  vpc.internal_ssh_security_group
100
106
  ].push(*options[:security_groups]),
101
107
  user_data: options[:user_data],
108
+ metadata_options: options[:metadata_options],
102
109
  lifecycle: {
103
110
  create_before_destroy: true
104
111
  },
@@ -345,11 +345,12 @@ module Terrafying
345
345
  policy_arn: "${aws_iam_policy.#{@name}_lambda_execution_policy.arn}"
346
346
  }
347
347
 
348
- rand_hour = rand(0..23).to_s
348
+ alpha_num = generate_alpha_num().to_s
349
+
349
350
  event_rule = resource :aws_cloudwatch_event_rule, "once_per_day", {
350
351
  name: "once-per-day",
351
352
  description: "Fires once per day",
352
- schedule_expression: "cron(0 #{rand_hour} * * ? *)"
353
+ schedule_expression: "cron(0 #{alpha_num} * * ? *)"
353
354
  }
354
355
 
355
356
  resource :aws_cloudwatch_event_target, "#{@name}_lambda_event_target", {
@@ -368,6 +369,14 @@ module Terrafying
368
369
  self
369
370
  end
370
371
 
372
+ def generate_alpha_num()
373
+ result = @name.split("").each do |ch|
374
+ alpha_num = ch.upcase.ord - 'A'.ord
375
+ return alpha_num.abs if (alpha_num.abs < 24)
376
+ end
377
+ result.is_a?(Integer) ? result : 6
378
+ end
379
+
371
380
  end
372
381
  end
373
382
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'digest'
3
+ require 'digest/bubblebabble'
4
4
  require 'terrafying/components/usable'
5
5
  require 'terrafying/generator'
6
-
6
+ require 'digest'
7
7
  require_relative './ports'
8
8
 
9
9
  module Terrafying
@@ -216,9 +216,14 @@ module Terrafying
216
216
  end
217
217
 
218
218
  def make_identifier(type, vpc_name, name)
219
- gen_id = "#{type}-#{tf_safe(vpc_name)}-#{name}"
220
- return Digest::SHA2.hexdigest(gen_id)[0..24] if @hex_ident || gen_id.size > 26
221
219
 
220
+ gen_id = "#{type}-#{vpc_name}-#{name}"
221
+ hex = Digest::SHA2.hexdigest(gen_id)[0..24]
222
+ if hex[0..0] =~ /[a-z]/
223
+ return hex if @hex_ident || gen_id.size > 26
224
+ else return Digest::SHA256.bubblebabble(gen_id)[0..15]
225
+ end
226
+
222
227
  gen_id[0..31]
223
228
  end
224
229
  end
@@ -28,7 +28,8 @@ module Terrafying
28
28
  thanos_instance_type: 't3a.small',
29
29
  prometheus_tsdb_retention: '1d',
30
30
  prometheus_data_dir: '/var/lib/prometheus',
31
- prometheus_data_size: 20
31
+ prometheus_data_size: 20,
32
+ prometheus_additional_scrape_configs: []
32
33
  )
33
34
  super()
34
35
  @vpc = vpc
@@ -42,6 +43,7 @@ module Terrafying
42
43
  @prometheus_tsdb_retention = prometheus_tsdb_retention
43
44
  @prometheus_data_dir = prometheus_data_dir
44
45
  @prometheus_data_size = prometheus_data_size
46
+ @prometheus_additional_scrape_configs = prometheus_additional_scrape_configs
45
47
  end
46
48
 
47
49
  def find
@@ -270,6 +272,11 @@ module Terrafying
270
272
  target_label: instance_id
271
273
  - source_labels: [__meta_ec2_tag_envoy_cluster]
272
274
  target_label: envoy_cluster
275
+ - source_labels: [__meta_ec2_tag_service_name]
276
+ target_label: service_name
277
+ <%- end -%>
278
+ <%- @prometheus_additional_scrape_configs.each do |conf| -%>
279
+ <%= conf %>
273
280
  <%- end -%>
274
281
  END
275
282
  }
@@ -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-2860fb52', owners = ['136393635417']),
44
+ ami: aws.ami('base-image-fc-3c48f829', owners = ['477284023816']),
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: nil,
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
 
@@ -38,7 +38,7 @@ module Terrafying
38
38
  options = {
39
39
  public: false,
40
40
  eip: false,
41
- ami: aws.ami('base-image-fc-2860fb52', owners = ['136393635417']),
41
+ ami: aws.ami('base-image-fc-3c48f829', owners = ['477284023816']),
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],
105
+ protocol: port[:type] == 'udp' ? 'udp' : 'tcp',
106
106
  self: true
107
107
  end
108
108
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Terrafying
4
4
  module Components
5
- VERSION = '1.15.18'
5
+ VERSION = '1.15.23'
6
6
  end
7
7
  end
@@ -5,6 +5,7 @@ require 'netaddr'
5
5
  require 'terrafying/components/subnet'
6
6
  require 'terrafying/components/zone'
7
7
  require 'terrafying/generator'
8
+ require 'digest/bubblebabble'
8
9
 
9
10
  module Terrafying
10
11
  module Components
@@ -184,7 +185,12 @@ module Terrafying
184
185
  from_port: 22,
185
186
  to_port: 22,
186
187
  protocol: 'tcp',
187
- cidr_blocks: [@cidr]
188
+ cidr_blocks: [@cidr],
189
+ description: nil,
190
+ ipv6_cidr_blocks: nil,
191
+ prefix_list_ids: nil,
192
+ security_groups: nil,
193
+ self: nil
188
194
  }
189
195
  ],
190
196
  egress: [
@@ -192,7 +198,12 @@ module Terrafying
192
198
  from_port: 22,
193
199
  to_port: 22,
194
200
  protocol: 'tcp',
195
- cidr_blocks: [@cidr]
201
+ cidr_blocks: [@cidr],
202
+ description: nil,
203
+ ipv6_cidr_blocks: nil,
204
+ prefix_list_ids: nil,
205
+ security_groups: nil,
206
+ self: nil
196
207
  }
197
208
  ]
198
209
  self
@@ -233,7 +244,7 @@ module Terrafying
233
244
  subnets: @subnets.values.flatten
234
245
  }.merge(options)
235
246
 
236
- ident = tf_safe(ip_address)
247
+ ident = tf_safe(Digest::SHA256.bubblebabble(ip_address)[0..11]+ip_address)
237
248
 
238
249
  if options[:tunnels].count > 2
239
250
  raise 'You can only define a max of two tunnels'
@@ -283,7 +294,7 @@ module Terrafying
283
294
  route_tables.product(cidrs).each do |route_table, cidr|
284
295
  hash = Digest::SHA2.hexdigest "#{route_table}-#{tf_safe(cidr)}"
285
296
 
286
- resource :aws_route, "#{@name}-to-#{ident}-peer-#{hash}",
297
+ resource :aws_route, "#{@name}-to-#{tf_safe(ip_address)}-peer-#{hash}",
287
298
  route_table_id: route_table,
288
299
  destination_cidr_block: cidr,
289
300
  gateway_id: vpn_gateway
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.15.18
4
+ version: 1.15.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - uSwitch Limited
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-21 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.7.6
61
+ version: 1.7.8
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.7.6
68
+ version: 1.7.8
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: xxhash
71
71
  requirement: !ruby/object:Gem::Requirement