tfwrapper 0.2.0.beta1

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.
@@ -0,0 +1,461 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'consulserver'
4
+ require_relative 'acceptance_helpers'
5
+ require 'open3'
6
+ require 'json'
7
+
8
+ TF_VERSION = '0.9.2'
9
+
10
+ Diplomat.configure do |config|
11
+ config.url = 'http://127.0.0.1:8500'
12
+ end
13
+
14
+ describe 'tfwrapper' do
15
+ before(:all) do
16
+ tf_path = File.dirname(HashicorpFetcher.new('terraform', TF_VERSION).fetch)
17
+ ENV['PATH'] = "#{tf_path}:#{ENV['PATH']}"
18
+ @server = ConsulServer.new
19
+ end
20
+ after(:all) do
21
+ @server.stop
22
+ end
23
+ after(:each) { cleanup_tf }
24
+ context 'testOne - basic TF with remote state' do
25
+ before(:all) do
26
+ @fixturepath = File.absolute_path(
27
+ File.join(File.dirname(__FILE__), '..', 'fixtures')
28
+ )
29
+ end
30
+ describe 'rake -T' do
31
+ before(:all) do
32
+ @out_err, @ecode = Open3.capture2e(
33
+ 'timeout -k 60 45 bundle exec rake -T',
34
+ chdir: @fixturepath
35
+ )
36
+ end
37
+ it 'does not time out' do
38
+ expect(@ecode.exitstatus).to_not eq(124)
39
+ expect(@ecode.exitstatus).to_not eq(137)
40
+ end
41
+ it 'exits zero' do
42
+ expect(@ecode.exitstatus).to eq(0)
43
+ end
44
+ it 'lists the 5 tasks' do
45
+ lines = @out_err.split("\n")
46
+ expect(lines.length).to eq(5)
47
+ end
48
+ it 'includes the apply task' do
49
+ expect(@out_err).to include('rake tf:apply[target]')
50
+ end
51
+ it 'includes the destroy task' do
52
+ expect(@out_err).to include('rake tf:destroy[target]')
53
+ end
54
+ it 'includes the init task' do
55
+ expect(@out_err).to include('rake tf:init')
56
+ end
57
+ it 'includes the plan task' do
58
+ expect(@out_err).to include('rake tf:plan[target]')
59
+ end
60
+ it 'includes the write_tf_vars task' do
61
+ expect(@out_err).to include('rake tf:write_tf_vars')
62
+ end
63
+ end
64
+ describe 'tf:apply' do
65
+ before(:all) do
66
+ @out_err, @ecode = Open3.capture2e(
67
+ 'timeout -k 60 45 bundle exec rake tf:apply',
68
+ chdir: @fixturepath
69
+ )
70
+ @varpath = File.join(@fixturepath, 'build.tfvars.json')
71
+ end
72
+ after(:all) do
73
+ File.delete(@varpath) if File.file?(@varpath)
74
+ end
75
+ it 'does not time out' do
76
+ expect(@ecode.exitstatus).to_not eq(124)
77
+ expect(@ecode.exitstatus).to_not eq(137)
78
+ end
79
+ it 'exits zero' do
80
+ expect(@ecode.exitstatus).to eq(0)
81
+ end
82
+ it 'uses the correct Terraform version' do
83
+ expect(@out_err).to include("Terraform v#{TF_VERSION}")
84
+ end
85
+ it 'runs apply correctly and succeeds' do
86
+ expect(@out_err)
87
+ .to include('terraform_runner command: \'terraform apply -var-file')
88
+ expect(@out_err).to include('consul_keys.testOne: Creating...')
89
+ expect(@out_err).to include(
90
+ 'Apply complete! Resources: 1 added, 0 changed, 0 destroyed.'
91
+ )
92
+ expect(@out_err).to include("Outputs:\n\nfoo_variable = bar")
93
+ end
94
+ it 'writes the vars file' do
95
+ expect(File.file?(@varpath)).to be(true)
96
+ c = File.open(@varpath, 'r').read
97
+ expect(JSON.parse(c)).to eq({})
98
+ end
99
+ it 'sets the consul key' do
100
+ expect(Diplomat::Kv.get('testOne')).to eq('bar')
101
+ end
102
+ it 'writes remote state to consul' do
103
+ state = JSON.parse(Diplomat::Kv.get('terraform/testOne'))
104
+ expect(state['version']).to eq(3)
105
+ expect(state['terraform_version']).to eq(TF_VERSION)
106
+ expect(state['serial']).to eq(1)
107
+ expect(state['modules'].length).to eq(1)
108
+ expect(state['modules'][0]['outputs']['foo_variable']['value'])
109
+ .to eq('bar')
110
+ expect(state['modules'][0]['resources'])
111
+ .to include('consul_keys.testOne')
112
+ expect(state['modules'][0]['resources'].length).to eq(1)
113
+ end
114
+ end
115
+ end
116
+ context 'testTwo - TF with vars, remote state and consul env var update' do
117
+ before(:all) do
118
+ @fixturepath = File.absolute_path(
119
+ File.join(File.dirname(__FILE__), '..', 'fixtures', 'testTwo')
120
+ )
121
+ ENV['FOO'] = 'fooval'
122
+ end
123
+ after(:all) { ENV.delete('FOO') }
124
+ describe 'rake -T' do
125
+ before(:all) do
126
+ @out_err, @ecode = Open3.capture2e(
127
+ 'timeout -k 60 45 bundle exec rake -T',
128
+ chdir: @fixturepath
129
+ )
130
+ end
131
+ it 'does not time out' do
132
+ expect(@ecode.exitstatus).to_not eq(124)
133
+ expect(@ecode.exitstatus).to_not eq(137)
134
+ end
135
+ it 'exits zero' do
136
+ expect(@ecode.exitstatus).to eq(0)
137
+ end
138
+ it 'lists the 5 tasks' do
139
+ lines = @out_err.split("\n")
140
+ expect(lines.length).to eq(5)
141
+ end
142
+ it 'includes the apply task' do
143
+ expect(@out_err).to include('rake tf:apply[target]')
144
+ end
145
+ it 'includes the destroy task' do
146
+ expect(@out_err).to include('rake tf:destroy[target]')
147
+ end
148
+ it 'includes the init task' do
149
+ expect(@out_err).to include('rake tf:init')
150
+ end
151
+ it 'includes the plan task' do
152
+ expect(@out_err).to include('rake tf:plan[target]')
153
+ end
154
+ it 'includes the write_tf_vars task' do
155
+ expect(@out_err).to include('rake tf:write_tf_vars')
156
+ end
157
+ end
158
+ describe 'tf:apply' do
159
+ before(:all) do
160
+ @out_err, @ecode = Open3.capture2e(
161
+ 'timeout -k 60 45 bundle exec rake tf:apply',
162
+ chdir: @fixturepath
163
+ )
164
+ @varpath = File.join(@fixturepath, 'build.tfvars.json')
165
+ end
166
+ after(:all) do
167
+ File.delete(@varpath) if File.file?(@varpath)
168
+ end
169
+ it 'does not time out' do
170
+ expect(@ecode.exitstatus).to_not eq(124)
171
+ expect(@ecode.exitstatus).to_not eq(137)
172
+ end
173
+ it 'exits zero' do
174
+ expect(@ecode.exitstatus).to eq(0)
175
+ end
176
+ it 'uses the correct Terraform version' do
177
+ expect(@out_err).to include("Terraform v#{TF_VERSION}")
178
+ end
179
+ it 'runs apply correctly and succeeds' do
180
+ expect(@out_err)
181
+ .to include('terraform_runner command: \'terraform apply -var-file')
182
+ expect(@out_err).to include('consul_keys.testTwo: Creating...')
183
+ expect(@out_err).to include(
184
+ 'Apply complete! Resources: 1 added, 0 changed, 0 destroyed.'
185
+ )
186
+ expect(@out_err).to include(
187
+ "Outputs:\n\nbar_variable = barval\nfoo_variable = fooval"
188
+ )
189
+ end
190
+ it 'writes the vars file' do
191
+ expect(File.file?(@varpath)).to be(true)
192
+ c = File.open(@varpath, 'r').read
193
+ expect(JSON.parse(c))
194
+ .to eq('foo' => 'fooval', 'bar' => 'barval')
195
+ end
196
+ it 'sets the consul keys' do
197
+ expect(Diplomat::Kv.get('testTwo/foo')).to eq('fooval')
198
+ expect(Diplomat::Kv.get('testTwo/bar')).to eq('barval')
199
+ end
200
+ it 'writes remote state to consul' do
201
+ state = JSON.parse(Diplomat::Kv.get('terraform/testTwo'))
202
+ expect(state['version']).to eq(3)
203
+ expect(state['terraform_version']).to eq(TF_VERSION)
204
+ expect(state['serial']).to eq(1)
205
+ expect(state['modules'].length).to eq(1)
206
+ expect(state['modules'][0]['outputs']['foo_variable']['value'])
207
+ .to eq('fooval')
208
+ expect(state['modules'][0]['outputs']['bar_variable']['value'])
209
+ .to eq('barval')
210
+ expect(state['modules'][0]['resources'])
211
+ .to include('consul_keys.testTwo')
212
+ expect(state['modules'][0]['resources'].length).to eq(1)
213
+ end
214
+ end
215
+ end
216
+ context 'testThree - TF with namespaces' do
217
+ before(:all) do
218
+ @fixturepath = File.absolute_path(
219
+ File.join(File.dirname(__FILE__), '..', 'fixtures', 'testThree')
220
+ )
221
+ ENV['FOO'] = 'fooval'
222
+ end
223
+ after(:all) { ENV.delete('FOO') }
224
+ describe 'rake -T' do
225
+ before(:all) do
226
+ @out_err, @ecode = Open3.capture2e(
227
+ 'timeout -k 60 45 bundle exec rake -T',
228
+ chdir: @fixturepath
229
+ )
230
+ end
231
+ it 'does not time out' do
232
+ expect(@ecode.exitstatus).to_not eq(124)
233
+ expect(@ecode.exitstatus).to_not eq(137)
234
+ end
235
+ it 'exits zero' do
236
+ expect(@ecode.exitstatus).to eq(0)
237
+ end
238
+ it 'lists the 15 tasks' do
239
+ lines = @out_err.split("\n")
240
+ expect(lines.length).to eq(15)
241
+ end
242
+ it 'includes the non-namespaced apply task' do
243
+ expect(@out_err).to include('rake tf:apply[target]')
244
+ end
245
+ it 'includes the non-namespaced destroy task' do
246
+ expect(@out_err).to include('rake tf:destroy[target]')
247
+ end
248
+ it 'includes the non-namespaced init task' do
249
+ expect(@out_err).to include('rake tf:init')
250
+ end
251
+ it 'includes the non-namespaced plan task' do
252
+ expect(@out_err).to include('rake tf:plan[target]')
253
+ end
254
+ it 'includes the non-namespaced write_tf_vars task' do
255
+ expect(@out_err).to include('rake tf:write_tf_vars')
256
+ end
257
+ it 'includes the bar-namespaced apply task' do
258
+ expect(@out_err).to include('rake bar_tf:apply[target]')
259
+ end
260
+ it 'includes the bar-namespaced destroy task' do
261
+ expect(@out_err).to include('rake bar_tf:destroy[target]')
262
+ end
263
+ it 'includes the bar-namespaced init task' do
264
+ expect(@out_err).to include('rake bar_tf:init')
265
+ end
266
+ it 'includes the bar-namespaced plan task' do
267
+ expect(@out_err).to include('rake bar_tf:plan[target]')
268
+ end
269
+ it 'includes the bar-namespaced write_tf_vars task' do
270
+ expect(@out_err).to include('rake bar_tf:write_tf_vars')
271
+ end
272
+ it 'includes the baz-namespaced apply task' do
273
+ expect(@out_err).to include('rake baz_tf:apply[target]')
274
+ end
275
+ it 'includes the baz-namespaced destroy task' do
276
+ expect(@out_err).to include('rake baz_tf:destroy[target]')
277
+ end
278
+ it 'includes the baz-namespaced init task' do
279
+ expect(@out_err).to include('rake baz_tf:init')
280
+ end
281
+ it 'includes the baz-namespaced plan task' do
282
+ expect(@out_err).to include('rake baz_tf:plan[target]')
283
+ end
284
+ it 'includes the baz-namespaced write_tf_vars task' do
285
+ expect(@out_err).to include('rake baz_tf:write_tf_vars')
286
+ end
287
+ end
288
+ describe 'tf:apply' do
289
+ before(:all) do
290
+ @out_err, @ecode = Open3.capture2e(
291
+ 'timeout -k 60 45 bundle exec rake tf:apply',
292
+ chdir: @fixturepath
293
+ )
294
+ @varpath = File.join(@fixturepath, 'build.tfvars.json')
295
+ end
296
+ after(:all) do
297
+ File.delete(@varpath) if File.file?(@varpath)
298
+ end
299
+ it 'does not time out' do
300
+ expect(@ecode.exitstatus).to_not eq(124)
301
+ expect(@ecode.exitstatus).to_not eq(137)
302
+ end
303
+ it 'exits zero' do
304
+ expect(@ecode.exitstatus).to eq(0)
305
+ end
306
+ it 'uses the correct Terraform version' do
307
+ expect(@out_err).to include("Terraform v#{TF_VERSION}")
308
+ end
309
+ it 'runs apply correctly and succeeds' do
310
+ expect(@out_err)
311
+ .to include('terraform_runner command: \'terraform apply -var-file')
312
+ expect(@out_err).to include('consul_keys.testThreeFoo: Creating...')
313
+ expect(@out_err).to include(
314
+ 'Apply complete! Resources: 1 added, 0 changed, 0 destroyed.'
315
+ )
316
+ expect(@out_err).to include(
317
+ "Outputs:\n\nbar_variable = barval\nfoo_variable = fooval"
318
+ )
319
+ end
320
+ it 'writes the vars file' do
321
+ expect(File.file?(@varpath)).to be(true)
322
+ c = File.open(@varpath, 'r').read
323
+ expect(JSON.parse(c))
324
+ .to eq('foo' => 'fooval', 'bar' => 'barval')
325
+ end
326
+ it 'sets the consul keys' do
327
+ expect(Diplomat::Kv.get('testThreeFoo/foo')).to eq('fooval')
328
+ expect(Diplomat::Kv.get('testThreeFoo/bar')).to eq('barval')
329
+ end
330
+ it 'writes remote state to consul' do
331
+ state = JSON.parse(Diplomat::Kv.get('terraform/testThreeFoo'))
332
+ expect(state['version']).to eq(3)
333
+ expect(state['terraform_version']).to eq(TF_VERSION)
334
+ expect(state['serial']).to eq(1)
335
+ expect(state['modules'].length).to eq(1)
336
+ expect(state['modules'][0]['outputs']['foo_variable']['value'])
337
+ .to eq('fooval')
338
+ expect(state['modules'][0]['outputs']['bar_variable']['value'])
339
+ .to eq('barval')
340
+ expect(state['modules'][0]['resources'])
341
+ .to include('consul_keys.testThreeFoo')
342
+ expect(state['modules'][0]['resources'].length).to eq(1)
343
+ end
344
+ end
345
+ describe 'bar_tf:apply' do
346
+ before(:all) do
347
+ @out_err, @ecode = Open3.capture2e(
348
+ 'timeout -k 60 45 bundle exec rake bar_tf:apply',
349
+ chdir: @fixturepath
350
+ )
351
+ @varpath = File.join(@fixturepath, 'bar_build.tfvars.json')
352
+ end
353
+ after(:all) do
354
+ File.delete(@varpath) if File.file?(@varpath)
355
+ end
356
+ it 'does not time out' do
357
+ expect(@ecode.exitstatus).to_not eq(124)
358
+ expect(@ecode.exitstatus).to_not eq(137)
359
+ end
360
+ it 'exits zero' do
361
+ expect(@ecode.exitstatus).to eq(0)
362
+ end
363
+ it 'uses the correct Terraform version' do
364
+ expect(@out_err).to include("Terraform v#{TF_VERSION}")
365
+ end
366
+ it 'runs apply correctly and succeeds' do
367
+ expect(@out_err)
368
+ .to include('terraform_runner command: \'terraform apply -var-file')
369
+ expect(@out_err).to include('consul_keys.testThreeBar: Creating...')
370
+ expect(@out_err).to include(
371
+ 'Apply complete! Resources: 1 added, 0 changed, 0 destroyed.'
372
+ )
373
+ expect(@out_err).to include(
374
+ "Outputs:\n\nbar_variable = barval\nfoo_variable = fooval"
375
+ )
376
+ end
377
+ it 'writes the vars file' do
378
+ expect(File.file?(@varpath)).to be(true)
379
+ c = File.open(@varpath, 'r').read
380
+ expect(JSON.parse(c))
381
+ .to eq('foo' => 'fooval', 'bar' => 'barval')
382
+ end
383
+ it 'sets the consul keys' do
384
+ expect(Diplomat::Kv.get('testThreeBar/foo')).to eq('fooval')
385
+ expect(Diplomat::Kv.get('testThreeBar/bar')).to eq('barval')
386
+ end
387
+ it 'writes remote state to consul' do
388
+ state = JSON.parse(Diplomat::Kv.get('terraform/testThreeBar'))
389
+ expect(state['version']).to eq(3)
390
+ expect(state['terraform_version']).to eq(TF_VERSION)
391
+ expect(state['serial']).to eq(1)
392
+ expect(state['modules'].length).to eq(1)
393
+ expect(state['modules'][0]['outputs']['foo_variable']['value'])
394
+ .to eq('fooval')
395
+ expect(state['modules'][0]['outputs']['bar_variable']['value'])
396
+ .to eq('barval')
397
+ expect(state['modules'][0]['resources'])
398
+ .to include('consul_keys.testThreeBar')
399
+ expect(state['modules'][0]['resources'].length).to eq(1)
400
+ end
401
+ end
402
+ describe 'baz_tf:apply' do
403
+ before(:all) do
404
+ @out_err, @ecode = Open3.capture2e(
405
+ 'timeout -k 60 45 bundle exec rake baz_tf:apply',
406
+ chdir: @fixturepath
407
+ )
408
+ @varpath = File.join(@fixturepath, 'baz_build.tfvars.json')
409
+ end
410
+ after(:all) do
411
+ File.delete(@varpath) if File.file?(@varpath)
412
+ end
413
+ it 'does not time out' do
414
+ expect(@ecode.exitstatus).to_not eq(124)
415
+ expect(@ecode.exitstatus).to_not eq(137)
416
+ end
417
+ it 'exits zero' do
418
+ expect(@ecode.exitstatus).to eq(0)
419
+ end
420
+ it 'uses the correct Terraform version' do
421
+ expect(@out_err).to include("Terraform v#{TF_VERSION}")
422
+ end
423
+ it 'runs apply correctly and succeeds' do
424
+ expect(@out_err)
425
+ .to include('terraform_runner command: \'terraform apply -var-file')
426
+ expect(@out_err).to include('consul_keys.testThreeBaz: Creating...')
427
+ expect(@out_err).to include(
428
+ 'Apply complete! Resources: 1 added, 0 changed, 0 destroyed.'
429
+ )
430
+ expect(@out_err).to include(
431
+ "Outputs:\n\nfoo_variable = fooval"
432
+ )
433
+ end
434
+ it 'writes the vars file' do
435
+ expect(File.file?(@varpath)).to be(true)
436
+ c = File.open(@varpath, 'r').read
437
+ expect(JSON.parse(c))
438
+ .to eq('foo' => 'fooval')
439
+ end
440
+ it 'sets the consul keys' do
441
+ expect(Diplomat::Kv.get('testThreeBaz/foo')).to eq('fooval')
442
+ end
443
+ it 'writes remote state to consul' do
444
+ state = JSON.parse(Diplomat::Kv.get('terraform/testThreeBaz'))
445
+ expect(state['version']).to eq(3)
446
+ expect(state['terraform_version']).to eq(TF_VERSION)
447
+ expect(state['serial']).to eq(1)
448
+ expect(state['modules'].length).to eq(1)
449
+ expect(state['modules'][0]['outputs']['foo_variable']['value'])
450
+ .to eq('fooval')
451
+ expect(state['modules'][0]['resources'])
452
+ .to include('consul_keys.testThreeBaz')
453
+ expect(state['modules'][0]['resources'].length).to eq(1)
454
+ end
455
+ it 'writes the environment variables to Consul' do
456
+ cvars = JSON.parse(Diplomat::Kv.get('vars/testThreeBaz'))
457
+ expect(cvars).to eq('FOO' => 'fooval')
458
+ end
459
+ end
460
+ end
461
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'acceptance_helpers'
4
+ require 'diplomat'
5
+ require 'retries'
6
+
7
+ # Run a Consul server process in the background, for acceptance tests
8
+ class ConsulServer
9
+ def initialize(version = '0.7.5')
10
+ bin_path = HashicorpFetcher.new('consul', version).fetch
11
+ @process = Process.spawn(
12
+ "#{bin_path} agent -server -dev",
13
+ out: '/dev/null',
14
+ err: '/dev/null'
15
+ )
16
+ Diplomat.configure do |config|
17
+ config.url = 'http://127.0.0.1:8500'
18
+ end
19
+ with_retries(
20
+ max_tries: 40,
21
+ base_sleep_seconds: 0.25,
22
+ max_sleep_seconds: 0.25,
23
+ rescue: [Faraday::ConnectionFailed, Diplomat::UnknownStatus]
24
+ ) do
25
+ Diplomat::Kv.get('/', keys: true)
26
+ end
27
+ end
28
+
29
+ def stop
30
+ return if @process.nil?
31
+ Process.kill('TERM', @process)
32
+ Process.wait
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tfwrapper/raketasks'
4
+
5
+ TFWrapper::RakeTasks.install_tasks(
6
+ '.'
7
+ )
@@ -0,0 +1,22 @@
1
+ terraform {
2
+ required_version = "> 0.9.0"
3
+ backend "consul" {
4
+ address = "127.0.0.1:8500"
5
+ path = "terraform/testOne"
6
+ }
7
+ }
8
+
9
+ provider "consul" {
10
+ address = "127.0.0.1:8500"
11
+ }
12
+
13
+ variable "foo" { default = "bar" }
14
+
15
+ resource "consul_keys" "testOne" {
16
+ key {
17
+ path = "testOne"
18
+ value = "${var.foo}"
19
+ }
20
+ }
21
+
22
+ output "foo_variable" { value = "${var.foo}" }
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tfwrapper/raketasks'
4
+
5
+ # @option opts [String] :consul_url URL to access Consul at, for the
6
+ # ``:consul_env_vars_prefix`` option.
7
+ # @option opts [String] :consul_env_vars_prefix if specified and not nil,
8
+ # write the environment variables used from ``tf_vars_from_env``
9
+ # and their values to JSON at this path in Consul. This should have
10
+ # the same naming constraints as ``consul_prefix``.
11
+
12
+ TFWrapper::RakeTasks.install_tasks(
13
+ 'foo',
14
+ backend_config: { 'path' => 'terraform/testThreeFoo' },
15
+ tf_vars_from_env: { 'foo' => 'FOO' },
16
+ tf_extra_vars: { 'bar' => 'barval' }
17
+ )
18
+
19
+ TFWrapper::RakeTasks.install_tasks(
20
+ 'bar',
21
+ namespace_prefix: 'bar',
22
+ tf_vars_from_env: { 'foo' => 'FOO' },
23
+ tf_extra_vars: { 'bar' => 'barval' }
24
+ )
25
+
26
+ TFWrapper::RakeTasks.install_tasks(
27
+ 'baz',
28
+ namespace_prefix: 'baz',
29
+ tf_vars_from_env: { 'foo' => 'FOO' },
30
+ consul_url: 'http://127.0.0.1:8500',
31
+ consul_env_vars_prefix: 'vars/testThreeBaz'
32
+ )
@@ -0,0 +1,28 @@
1
+ terraform {
2
+ required_version = "> 0.9.0"
3
+ backend "consul" {
4
+ address = "127.0.0.1:8500"
5
+ path = "terraform/testThreeBar"
6
+ }
7
+ }
8
+
9
+ provider "consul" {
10
+ address = "127.0.0.1:8500"
11
+ }
12
+
13
+ variable "foo" {}
14
+ variable "bar" { default = "bar" }
15
+
16
+ resource "consul_keys" "testThreeBar" {
17
+ key {
18
+ path = "testThreeBar/foo"
19
+ value = "${var.foo}"
20
+ }
21
+ key {
22
+ path = "testThreeBar/bar"
23
+ value = "${var.bar}"
24
+ }
25
+ }
26
+
27
+ output "foo_variable" { value = "${var.foo}" }
28
+ output "bar_variable" { value = "${var.bar}" }
@@ -0,0 +1,22 @@
1
+ terraform {
2
+ required_version = "> 0.9.0"
3
+ backend "consul" {
4
+ address = "127.0.0.1:8500"
5
+ path = "terraform/testThreeBaz"
6
+ }
7
+ }
8
+
9
+ provider "consul" {
10
+ address = "127.0.0.1:8500"
11
+ }
12
+
13
+ variable "foo" {}
14
+
15
+ resource "consul_keys" "testThreeBaz" {
16
+ key {
17
+ path = "testThreeBaz/foo"
18
+ value = "${var.foo}"
19
+ }
20
+ }
21
+
22
+ output "foo_variable" { value = "${var.foo}" }
@@ -0,0 +1,27 @@
1
+ terraform {
2
+ required_version = "> 0.9.0"
3
+ backend "consul" {
4
+ address = "127.0.0.1:8500"
5
+ }
6
+ }
7
+
8
+ provider "consul" {
9
+ address = "127.0.0.1:8500"
10
+ }
11
+
12
+ variable "foo" {}
13
+ variable "bar" { default = "bar" }
14
+
15
+ resource "consul_keys" "testThreeFoo" {
16
+ key {
17
+ path = "testThreeFoo/foo"
18
+ value = "${var.foo}"
19
+ }
20
+ key {
21
+ path = "testThreeFoo/bar"
22
+ value = "${var.bar}"
23
+ }
24
+ }
25
+
26
+ output "foo_variable" { value = "${var.foo}" }
27
+ output "bar_variable" { value = "${var.bar}" }
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tfwrapper/raketasks'
4
+
5
+ TFWrapper::RakeTasks.install_tasks(
6
+ 'foo/bar',
7
+ tf_vars_from_env: { 'foo' => 'FOO' },
8
+ tf_extra_vars: { 'bar' => 'barval' }
9
+ )
@@ -0,0 +1,28 @@
1
+ terraform {
2
+ required_version = "> 0.9.0"
3
+ backend "consul" {
4
+ address = "127.0.0.1:8500"
5
+ path = "terraform/testTwo"
6
+ }
7
+ }
8
+
9
+ provider "consul" {
10
+ address = "127.0.0.1:8500"
11
+ }
12
+
13
+ variable "foo" {}
14
+ variable "bar" { default = "bar" }
15
+
16
+ resource "consul_keys" "testTwo" {
17
+ key {
18
+ path = "testTwo/foo"
19
+ value = "${var.foo}"
20
+ }
21
+ key {
22
+ path = "testTwo/bar"
23
+ value = "${var.bar}"
24
+ }
25
+ }
26
+
27
+ output "foo_variable" { value = "${var.foo}" }
28
+ output "bar_variable" { value = "${var.bar}" }