terrafying-components 1.15.19 → 2.0.2

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: bccc6ca7657f88feaecd7116b68c4138a235f511b3bf24681b2adedcb1edf381
4
- data.tar.gz: 3c785c1190cfb6f6200beed0e7b8056aee44df7e89e0c712c648e824eacf4500
3
+ metadata.gz: 531068834c168dad0b71d0a3c4f4b932a5eed123080e4067dd89d93019c8f44e
4
+ data.tar.gz: 319ea675df31d948d5c848d770063ba99ee3fe260b693bc33b9b75bdcaa45383
5
5
  SHA512:
6
- metadata.gz: c661cb8147e8a97672b8b982be89e61de122d60344a1b373c454dd21137f455045ddb433928024a92eab79d310516bc74ba23de12545cd087ca2113adde2bc79
7
- data.tar.gz: 646485ad12d4b70b6668c5d885d7e6e94b2bb472b012b4ead4e74e3eddc92f6a1099fdb5b41406385029b187cec5ee564214dd654d507d73b547ac96343021ec
6
+ metadata.gz: f8f6832c4d666801d7340e57b9c4ca2ef01aee8ade2b0984dc65ca7d4862087181bc677c6fc9695709b9453b825535f38787588a171bf2ac3022ff30e1e062eb
7
+ data.tar.gz: 0d0e950b58598feb5e552e6be39e7360a7cac0ac7389548515bae45d5dd17070d2c0b985f3a9725c187741faa4dc71c9a36680e8d7dd890526dba9040abc6786
@@ -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]
@@ -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
@@ -272,6 +272,8 @@ module Terrafying
272
272
  target_label: instance_id
273
273
  - source_labels: [__meta_ec2_tag_envoy_cluster]
274
274
  target_label: envoy_cluster
275
+ - source_labels: [__meta_ec2_tag_service_name]
276
+ target_label: service_name
275
277
  <%- end -%>
276
278
  <%- @prometheus_additional_scrape_configs.each do |conf| -%>
277
279
  <%= conf %>
@@ -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
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Terrafying
4
4
  module Components
5
- VERSION = '1.15.19'
5
+ VERSION = '2.0.2'
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.19
4
+ version: 2.0.2
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-05-18 00:00:00.000000000 Z
11
+ date: 2020-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake