terrafying-components 1.10.9 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
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