terrafying-components 1.10.9 → 1.11.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: 98f303a8423e640bee21733b0638918e7b0d69632267152a88d2ab56cb847bb0
4
- data.tar.gz: 4c3f72e5c0ecb118b810ee8d86e1fd0f2d7c5fac4350c0e6e33f493b35dc6a2a
3
+ metadata.gz: 73d7a37c078d36a198f7fa4c962b0efc1866c2372e178d4aa4011ffaff9e83f5
4
+ data.tar.gz: f14456cf4ae27f2f04a3b1a1263911a01ba05d3e8e329130c6b19eb0a50a330e
5
5
  SHA512:
6
- metadata.gz: 910f76257a39752b18a32569c9d5b46e606c33d6a1c202182305a1e0be32b69a93534373443e7c43209603221d0c95457e818e0b0b7852c3fbe9bb8d6db706ef
7
- data.tar.gz: d01cba41b034310a476ec794748a61aee42a61b9b1a62d52260455479e2bbeee12bb94bf479a8a5dfd14519736fa3eb9e08c82a199ebe07dbb949d82cfea4cd2
6
+ metadata.gz: e7866109fc417b67150e1c607564039e78a6bc87b6901ed6cb430c5e9d09b086c56768eafdba7c40bb9f25e16285206449d9a15bb929e85f4e02e08dc5551cdc
7
+ data.tar.gz: e824409c34d34389993c87f89ff68880172f15e1e86f60b7660cde2e7a019f20da453a3580a1b922ce499897578e80519ad473376b7258893f241b4a99f3eba8
@@ -9,9 +9,11 @@ module Terrafying
9
9
  create_keypair_in(self, name, options)
10
10
  end
11
11
 
12
- def reference_keypair(ctx, name)
13
- key_ident = "#{@name}-#{tf_safe(name)}"
12
+ def path(object)
13
+ output_of(:aws_s3_bucket_object, object, :bucket).to_s + output_of(:aws_s3_bucket_object, object, :key).to_s
14
+ end
14
15
 
16
+ def reference_keypair(ctx, name, key, cert)
15
17
  ref = {
16
18
  name: name,
17
19
  ca: self,
@@ -20,12 +22,12 @@ module Terrafying
20
22
  key: File.join("/etc/ssl", @name, name, "key"),
21
23
  },
22
24
  source: {
23
- cert: File.join("s3://", @bucket, @prefix, @name, name, "cert"),
24
- key: File.join("s3://", @bucket, @prefix, @name, name, "key"),
25
+ cert: File.join("s3://", path(cert)),
26
+ key: File.join("s3://", path(key)),
25
27
  },
26
28
  resources: [
27
- "aws_s3_bucket_object.#{key_ident}-key",
28
- "aws_s3_bucket_object.#{key_ident}-cert"
29
+ "aws_s3_bucket_object.#{key}",
30
+ "aws_s3_bucket_object.#{cert}"
29
31
  ],
30
32
  iam_statement: {
31
33
  Effect: "Allow",
@@ -34,9 +36,9 @@ module Terrafying
34
36
  "s3:GetObject",
35
37
  ],
36
38
  Resource: [
37
- "arn:aws:s3:::#{File.join(@bucket, @prefix, @name, "ca.cert")}",
38
- "arn:aws:s3:::#{File.join(@bucket, @prefix, @name, name, "cert")}",
39
- "arn:aws:s3:::#{File.join(@bucket, @prefix, @name, name, "key")}",
39
+ "arn:aws:s3:::#{path(@name + '-cert')}",
40
+ "arn:aws:s3:::#{path(cert)}",
41
+ "arn:aws:s3:::#{path(key)}",
40
42
  ]
41
43
  }
42
44
  }
@@ -103,14 +103,16 @@ module Terrafying
103
103
  end
104
104
  tags = { Name: ident, service_name: name,}.merge(options[:tags]).merge(options[:instances].fetch(:tags, {})).map { |k,v| { Key: k, Value: v, PropagateAtLaunch: true }}
105
105
 
106
- @stack = resource :aws_cloudformation_stack, ident, {
107
- name: ident,
108
- disable_rollback: true,
109
- template_body: generate_template(
110
- options[:health_check], options[:instances], launch_config,
111
- options[:subnets].map(&:id), tags, options[:rolling_update]
112
- ),
113
- }
106
+ resource :aws_cloudformation_stack, ident, {
107
+ name: ident,
108
+ disable_rollback: true,
109
+ template_body: generate_template(
110
+ options[:health_check], options[:instances], launch_config,
111
+ options[:subnets].map(&:id), tags, options[:rolling_update]
112
+ ),
113
+ }
114
+
115
+ @stack = "arn:aws:cloudformation:#{aws.region}:#{aws.account_id}:stack/#{ident}/*"
114
116
 
115
117
  @asg = output_of(:aws_cloudformation_stack, ident, 'outputs["AsgName"]')
116
118
 
@@ -39,6 +39,7 @@ module Terrafying
39
39
  provider: :staging,
40
40
  email_address: "cloud@uswitch.com",
41
41
  public_certificate: false,
42
+ curve: "P384",
42
43
  }.merge(options)
43
44
 
44
45
  @name = name
@@ -50,7 +51,7 @@ module Terrafying
50
51
 
51
52
  resource :tls_private_key, "#{@name}-account", {
52
53
  algorithm: "ECDSA",
53
- ecdsa_curve: "P384",
54
+ ecdsa_curve: options[:curve],
54
55
  }
55
56
 
56
57
  resource :acme_registration, "#{@name}-reg", {
@@ -80,7 +81,7 @@ module Terrafying
80
81
  acl: @ca_cert_acl
81
82
  }
82
83
 
83
- @source = File.join("s3://", @bucket, @prefix, @name, "ca.cert")
84
+ @source = File.join("s3://", path("#{@name}-cert"))
84
85
 
85
86
  self
86
87
  end
@@ -98,13 +99,14 @@ module Terrafying
98
99
  dns_names: [],
99
100
  ip_addresses: [],
100
101
  min_days_remaining: 21,
102
+ curve: "P384",
101
103
  }.merge(options)
102
104
 
103
105
  key_ident = "#{@name}-#{tf_safe(name)}"
104
106
 
105
107
  ctx.resource :tls_private_key, key_ident, {
106
108
  algorithm: "ECDSA",
107
- ecdsa_curve: "P384",
109
+ ecdsa_curve: options[:curve],
108
110
  }
109
111
 
110
112
  ctx.resource :tls_cert_request, key_ident, {
@@ -140,7 +142,7 @@ module Terrafying
140
142
  content: output_of(:acme_certificate, key_ident, :certificate_pem).to_s + @ca_cert,
141
143
  }
142
144
 
143
- reference_keypair(ctx, name)
145
+ reference_keypair(ctx, name, "#{key_ident}-key", "#{key_ident}-cert")
144
146
  end
145
147
 
146
148
  end
@@ -113,7 +113,7 @@ module Terrafying
113
113
  internal: !options[:public],
114
114
  tags: @tags,
115
115
  }.merge(subnets_for(options[:subnets]))
116
- .merge(application? ? { security_groups: [@security_group], idle_timeout: options[:idle_timeout] } : {})
116
+ .merge(application? ? { security_groups: [@security_group], idle_timeout: options[:idle_timeout], access_logs: options[:access_logs] } : {})
117
117
  .compact
118
118
 
119
119
  @targets = []
@@ -25,6 +25,7 @@ module Terrafying
25
25
  common_name: name,
26
26
  organization: "uSwitch Limited",
27
27
  public_certificate: false,
28
+ curve: "P384",
28
29
  }.merge(options)
29
30
 
30
31
  @name = name
@@ -40,7 +41,7 @@ module Terrafying
40
41
  cert_acl = "private"
41
42
  end
42
43
 
43
- @source = File.join("s3://", @bucket, @prefix, @name, "ca.cert")
44
+ @source = File.join("s3://", path("#{@name}-cert"))
44
45
 
45
46
  if options[:ca_key] && options[:ca_cert]
46
47
  @ca_key = options[:ca_key]
@@ -58,7 +59,7 @@ module Terrafying
58
59
 
59
60
  resource :tls_private_key, @ident, {
60
61
  algorithm: @algorithm,
61
- ecdsa_curve: "P384",
62
+ ecdsa_curve: options[:curve],
62
63
  }
63
64
 
64
65
  resource :tls_self_signed_cert, @ident, {
@@ -90,11 +91,11 @@ module Terrafying
90
91
  end
91
92
 
92
93
  def keypair
93
- resource :aws_s3_bucket_object, "#{@name}-key", {
94
- bucket: @bucket,
95
- key: File.join(@prefix, @name, "ca.key"),
96
- content: @ca_key,
97
- }
94
+ @ca_key_ref ||= resource :aws_s3_bucket_object, "#{@name}-key", {
95
+ bucket: @bucket,
96
+ key: File.join(@prefix, @name, "ca.key"),
97
+ content: @ca_key,
98
+ }
98
99
 
99
100
  {
100
101
  ca: self,
@@ -103,8 +104,8 @@ module Terrafying
103
104
  key: File.join("/etc/ssl", @name, "ca.key"),
104
105
  },
105
106
  source: {
106
- cert: File.join("s3://", @bucket, @prefix, @name, "ca.cert"),
107
- key: File.join("s3://", @bucket, @prefix, @name, "ca.key"),
107
+ cert: File.join("s3://", path("#{@name}-cert")),
108
+ key: File.join("s3://", path("#{@name}-key")),
108
109
  },
109
110
  resources: [
110
111
  "aws_s3_bucket_object.#{@name}-key",
@@ -117,8 +118,8 @@ module Terrafying
117
118
  "s3:GetObject",
118
119
  ],
119
120
  Resource: [
120
- "arn:aws:s3:::#{File.join(@bucket, @prefix, @name, "ca.cert")}",
121
- "arn:aws:s3:::#{File.join(@bucket, @prefix, @name, "ca.key")}",
121
+ "arn:aws:s3:::#{path(@name + '-cert')}",
122
+ "arn:aws:s3:::#{path(@name + '-key')}",
122
123
  ]
123
124
  }
124
125
  }
@@ -136,13 +137,14 @@ module Terrafying
136
137
  ],
137
138
  dns_names: [],
138
139
  ip_addresses: [],
140
+ curve: "P384",
139
141
  }.merge(options)
140
142
 
141
143
  key_ident = "#{@name}-#{tf_safe(name)}"
142
144
 
143
145
  ctx.resource :tls_private_key, key_ident, {
144
146
  algorithm: @algorithm,
145
- ecdsa_curve: "P384",
147
+ ecdsa_curve: options[:curve],
146
148
  }
147
149
 
148
150
  ctx.resource :tls_cert_request, key_ident, {
@@ -167,17 +169,17 @@ module Terrafying
167
169
 
168
170
  ctx.resource :aws_s3_bucket_object, "#{key_ident}-key", {
169
171
  bucket: @bucket,
170
- key: File.join(@prefix, @name, name, "key"),
172
+ key: File.join(@prefix, @name, name, "${sha256(tls_private_key.#{key_ident}.private_key_pem)}", "key"),
171
173
  content: output_of(:tls_private_key, key_ident, :private_key_pem),
172
174
  }
173
175
 
174
176
  ctx.resource :aws_s3_bucket_object, "#{key_ident}-cert", {
175
177
  bucket: @bucket,
176
- key: File.join(@prefix, @name, name, "cert"),
178
+ key: File.join(@prefix, @name, name, "${sha256(tls_locally_signed_cert.#{key_ident}.cert_pem)}", "cert"),
177
179
  content: output_of(:tls_locally_signed_cert, key_ident, :cert_pem),
178
180
  }
179
181
 
180
- reference_keypair(ctx, name)
182
+ reference_keypair(ctx, name, "#{key_ident}-key", "#{key_ident}-cert")
181
183
  end
182
184
 
183
185
  end
@@ -1,5 +1,5 @@
1
1
  module Terrafying
2
2
  module Components
3
- VERSION = "1.10.9"
3
+ VERSION = "1.11.0"
4
4
  end
5
5
  end
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.10.9
4
+ version: 1.11.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: 2019-01-04 00:00:00.000000000 Z
11
+ date: 2019-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler