tfwrapper 0.6.1 → 0.6.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
- SHA1:
3
- metadata.gz: 68a638cd8db6246d0a17096f0b8bc125166772ea
4
- data.tar.gz: 05301d7bfcc0a75562b8036e657cf610d4aa55a4
2
+ SHA256:
3
+ metadata.gz: 4a404a81c05bcc07e29ef34eef1d881aa9c47faa1e5ba0ed127a34b8ae1202c5
4
+ data.tar.gz: f0078c62815fd5d7e49c14d201d9da2154ed91f6c4786a7a7be65914582cd4d8
5
5
  SHA512:
6
- metadata.gz: 23f2edc392399b115ad02465a1b3b9fad6d6c37b633e4bcc6ea8463799c3af4c641f00828b0eb6879e380abe48ca3c38a8ee21ce8bf96b677f069f0adede586d
7
- data.tar.gz: 72af330049aab08bfb69c539985bb9dc0c2ef5b13c57b02ae682c77468410b4880672407d3b84e420d6858248c2f98cdd822fc0fa51d3a23fa77482a3ec0d66c
6
+ metadata.gz: db129accb7e439c570ca8a8eb2d56a259acb98221a5acf5e451cc4aa44516627abd6e29603574abbf4dcd16c968b58607552bbec3a1b50ce7df44de9659968a7
7
+ data.tar.gz: f9f99bcc2e51e2aa4cedabd0e1179a1954dbc3e3e4d44149ab2d171218cc6e55a940ef2372869c6cd694c77be0282d5230f7a7d142eaea53479794c78550e810
@@ -1,3 +1,7 @@
1
+ Version 0.6.2
2
+
3
+ - Add ``tf_sensitive_vars`` option.
4
+
1
5
  Version 0.6.1
2
6
 
3
7
  - Add ``allowed_empty_vars`` option.
data/README.md CHANGED
@@ -330,6 +330,26 @@ $ consul kv get terraform/inputs/foo
330
330
  {"FOO":"one", "BAR":"two"}
331
331
  ```
332
332
 
333
+ ### Sensitive Environment Variables
334
+ If you wish for certain variables to be marked as "redacted", use the ``tf_sensitive_vars`` option. This is an array of variables that will not be printed.
335
+
336
+ Note: ``aws_access_key`` and ``aws_secret_key`` will always be redacted without requiring configuration.
337
+
338
+
339
+ Example to redact the vaule for ``secret``:
340
+
341
+ Rakefile:
342
+
343
+ ```ruby
344
+ require 'tfwrapper/raketasks'
345
+
346
+ TFWrapper::RakeTasks.install_tasks(
347
+ '.',
348
+ tf_vars_from_env: {'foo' => 'FOO', 'bar' => 'BAR', 'secret' => 'abc'},
349
+ tf_sensitive_vars: ['secret']
350
+ )
351
+ ```
352
+
333
353
  ## Development
334
354
 
335
355
  1. ``bundle install --path vendor``
@@ -59,6 +59,8 @@ module TFWrapper
59
59
  # names (specified in :tf_vars_from_env) to allow to be empty or missing.
60
60
  # @option opts [Hash] :tf_extra_vars hash of Terraform variables to their
61
61
  # values; overrides any same-named keys in ``tf_vars_from_env``
62
+ # @option opts [Array] :tf_sensitive_vars list of Terraform variables
63
+ # which should not be printed
62
64
  # @option opts [String] :consul_url URL to access Consul at, for the
63
65
  # ``:consul_env_vars_prefix`` option.
64
66
  # @option opts [String] :consul_env_vars_prefix if specified and not nil,
@@ -99,6 +101,7 @@ module TFWrapper
99
101
  @consul_env_vars_prefix = opts.fetch(:consul_env_vars_prefix, nil)
100
102
  @tf_vars_from_env = opts.fetch(:tf_vars_from_env, {})
101
103
  @allowed_empty_vars = opts.fetch(:allowed_empty_vars, [])
104
+ @tf_sensitive_vars = opts.fetch(:tf_sensitive_vars, [])
102
105
  @tf_extra_vars = opts.fetch(:tf_extra_vars, {})
103
106
  @backend_config = opts.fetch(:backend_config, {})
104
107
  @consul_url = opts.fetch(:consul_url, nil)
@@ -319,7 +322,9 @@ module TFWrapper
319
322
  tf_vars = terraform_vars
320
323
  puts 'Terraform vars:'
321
324
  tf_vars.sort.map do |k, v|
322
- if %w[aws_access_key aws_secret_key].include?(k)
325
+ redacted_list = (%w[aws_access_key aws_secret_key] +
326
+ @tf_sensitive_vars)
327
+ if redacted_list.include?(k)
323
328
  puts "#{k} => (redacted)"
324
329
  else
325
330
  puts "#{k} => #{v}"
@@ -4,5 +4,5 @@ module TFWrapper
4
4
  # version of the Gem/module; used in the gemspec and in messages.
5
5
  # NOTE: When updating this, also update the version in the "Installation"
6
6
  # section of README.md
7
- VERSION = '0.6.1'
7
+ VERSION = '0.6.2'
8
8
  end
@@ -60,6 +60,7 @@ describe TFWrapper::RakeTasks do
60
60
  expect(cls.instance_variable_get('@consul_env_vars_prefix')).to eq(nil)
61
61
  expect(cls.instance_variable_get('@tf_vars_from_env')).to eq({})
62
62
  expect(cls.instance_variable_get('@allowed_empty_vars')).to eq([])
63
+ expect(cls.instance_variable_get('@tf_sensitive_vars')).to eq([])
63
64
  expect(cls.instance_variable_get('@tf_extra_vars')).to eq({})
64
65
  expect(cls.instance_variable_get('@backend_config')).to eq({})
65
66
  expect(cls.instance_variable_get('@consul_url')).to eq(nil)
@@ -89,6 +90,7 @@ describe TFWrapper::RakeTasks do
89
90
  consul_env_vars_prefix: 'cvprefix',
90
91
  tf_vars_from_env: { 'foo' => 'bar' },
91
92
  allowed_empty_vars: %w[bar blam],
93
+ tf_sensitive_vars: %w[secret],
92
94
  tf_extra_vars: { 'baz' => 'blam' },
93
95
  consul_url: 'foobar',
94
96
  before_proc: bproc,
@@ -104,6 +106,8 @@ describe TFWrapper::RakeTasks do
104
106
  .to eq('foo' => 'bar')
105
107
  expect(cls.instance_variable_get('@allowed_empty_vars'))
106
108
  .to eq(%w[bar blam])
109
+ expect(cls.instance_variable_get('@tf_sensitive_vars'))
110
+ .to eq(%w[secret])
107
111
  expect(cls.instance_variable_get('@tf_extra_vars'))
108
112
  .to eq('baz' => 'blam')
109
113
  expect(cls.instance_variable_get('@backend_config')).to eq({})
@@ -832,6 +836,7 @@ describe TFWrapper::RakeTasks do
832
836
  Rake.application = rake_application
833
837
  end
834
838
  before do
839
+ subject.instance_variable_set('@tf_sensitive_vars', ['secret'])
835
840
  subject.install_write_tf_vars
836
841
  end
837
842
 
@@ -844,7 +849,8 @@ describe TFWrapper::RakeTasks do
844
849
  vars = {
845
850
  'foo' => 'bar',
846
851
  'baz' => 'blam',
847
- 'aws_access_key' => 'ak'
852
+ 'aws_access_key' => 'ak',
853
+ 'secret' => 'abc'
848
854
  }
849
855
  allow(subject).to receive(:terraform_vars).and_return(vars)
850
856
  allow(subject).to receive(:var_file_path).and_return('file.tfvars.json')
@@ -856,6 +862,8 @@ describe TFWrapper::RakeTasks do
856
862
  expect(STDOUT).to receive(:puts).once.with('Terraform vars:')
857
863
  expect(STDOUT).to receive(:puts)
858
864
  .once.with('aws_access_key => (redacted)')
865
+ expect(STDOUT).to receive(:puts)
866
+ .once.with('secret => (redacted)')
859
867
  expect(STDOUT).to receive(:puts).once.with('baz => blam')
860
868
  expect(STDOUT).to receive(:puts).once.with('foo => bar')
861
869
  expect(File).to receive(:open).once.with('file.tfvars.json', 'w')
@@ -917,6 +925,7 @@ describe TFWrapper::RakeTasks do
917
925
  Rake.application = rake_application
918
926
  end
919
927
  before do
928
+ subject.instance_variable_set('@tf_sensitive_vars', ['secret'])
920
929
  subject.instance_variable_set('@ns_prefix', 'foo')
921
930
  subject.install_write_tf_vars
922
931
  end
@@ -930,7 +939,8 @@ describe TFWrapper::RakeTasks do
930
939
  vars = {
931
940
  'foo' => 'bar',
932
941
  'baz' => 'blam',
933
- 'aws_access_key' => 'ak'
942
+ 'aws_access_key' => 'ak',
943
+ 'secret' => 'abc'
934
944
  }
935
945
  allow(subject).to receive(:terraform_vars).and_return(vars)
936
946
  allow(subject).to receive(:var_file_path)
@@ -943,6 +953,8 @@ describe TFWrapper::RakeTasks do
943
953
  expect(STDOUT).to receive(:puts).once.with('Terraform vars:')
944
954
  expect(STDOUT).to receive(:puts)
945
955
  .once.with('aws_access_key => (redacted)')
956
+ expect(STDOUT).to receive(:puts)
957
+ .once.with('secret => (redacted)')
946
958
  expect(STDOUT).to receive(:puts).once.with('baz => blam')
947
959
  expect(STDOUT).to receive(:puts).once.with('foo => bar')
948
960
  expect(File).to receive(:open).once.with('foo_file.tfvars.json', 'w')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tfwrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - jantman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-23 00:00:00.000000000 Z
11
+ date: 2020-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: retries
@@ -421,7 +421,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
421
421
  version: '0'
422
422
  requirements: []
423
423
  rubyforge_project:
424
- rubygems_version: 2.6.14
424
+ rubygems_version: 2.7.6
425
425
  signing_key:
426
426
  specification_version: 4
427
427
  summary: Rake tasks for running Hashicorp Terraform sanely