terraspace_plugin_azurerm 0.3.2 → 0.3.3

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: bfebfed0cf4e44986ab752e4ff8f642da04b3037b37c869811a49f4cdb6f4959
4
- data.tar.gz: 7525c37602f54facae4281a53961a3531f8238aa2931e76cf11e0535a1042fe2
3
+ metadata.gz: 33dd9bb20fc1cc57ccd1e31f46e52621838ad043b118e67061b0c7b0bf96bf9c
4
+ data.tar.gz: c3721a61c30ad15870c1858ada72199380c9628572f80a3a0576750266a65b90
5
5
  SHA512:
6
- metadata.gz: 194ee7307c72d33dabab6067386240c32cadaa995fd064fc25aa9fc61a6027919fe33919afa6b1fc365daf915a7899ef36425516a5ba6ab81fb933143c266dd8
7
- data.tar.gz: 4a7a9e4f831682a3e2b0d902537d6a9bab1fea6658dfad7f55115cadb1ea8552cc01ea3cb99e6803c90c1d5577ad8e8aed7fafa455d625d11fd38250ce6c5fd5
6
+ metadata.gz: 442becc7f22e2b5b3bf1dc6c621a1dd52af1d4696934c3e6fd9dfc83e4f5d723fb5b5aceb29d24ef47b5b7be939a2676d8d205f77422618a31c8f381ce5d468a
7
+ data.tar.gz: 3e10754d0616e4877c34435cf30da1452eb58cafa938d82d3326ded07670b01cf202d11410ea114a3bb21dc177acadaf9dc4a05b3a524108bb5865ad3fe16d62
data/CHANGELOG.md CHANGED
@@ -3,6 +3,9 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [0.3.3] - 2022-01-04
7
+ - [#10](https://github.com/boltops-tools/terraspace_plugin_azurerm/pull/10) azure_secret support expansion automatically
8
+
6
9
  ## [0.3.2] - 2021-11-29
7
10
  - [#9](https://github.com/boltops-tools/terraspace_plugin_azurerm/pull/9) change starter resource_group_name to have env
8
11
 
@@ -4,11 +4,14 @@ class TerraspacePluginAzurerm::Interfaces::Helper::Secret
4
4
  class Fetcher
5
5
  class Error < StandardError; end
6
6
  class VaultNotFoundError < Error; end
7
+ class VaultNotConfiguredError < Error; end
7
8
 
8
9
  include TerraspacePluginAzurerm::Logging
9
10
  include TerraspacePluginAzurerm::Clients::Options
11
+ extend Memoist
10
12
 
11
- def initialize
13
+ def initialize(mod, options={})
14
+ @mod, @options = mod, options
12
15
  o = base_client_options
13
16
  @client_id = o[:client_id]
14
17
  @client_secret = o[:client_secret]
@@ -20,16 +23,21 @@ class TerraspacePluginAzurerm::Interfaces::Helper::Secret
20
23
  get_secret(name, opts)
21
24
  end
22
25
 
23
- def get_secret(name, vault: nil, version: nil)
26
+ def get_secret(name, options={})
27
+ vault = options[:vault]
28
+ version = options[:version]
24
29
  unless token
25
30
  return "ERROR: Unable to authorize and get the temporary token. Double check your ARM_ env variables."
26
31
  end
27
32
 
28
33
  version = "/#{version}" if version
34
+ check_vault_configured!(vault)
29
35
  vault_subdomain = vault.downcase
30
36
  # Using Azure REST API since the old gem doesnt support secrets https://github.com/Azure/azure-sdk-for-ruby
31
37
  # https://docs.microsoft.com/en-us/rest/api/keyvault/getsecret/getsecret
38
+ name = expansion(name) if expand?
32
39
  url = "https://#{vault_subdomain}.vault.azure.net/secrets/#{name}#{version}?api-version=7.1"
40
+ logger.debug "Azure vault url #{url}"
33
41
  uri = URI(url)
34
42
  req = Net::HTTP::Get.new(uri)
35
43
  req["Authorization"] = token
@@ -55,6 +63,23 @@ class TerraspacePluginAzurerm::Interfaces::Helper::Secret
55
63
  end
56
64
  end
57
65
 
66
+ def check_vault_configured!(vault)
67
+ return if vault
68
+ logger.error "ERROR: Vault has not been configured or vault option not passed in the azure_secret helper method.".color(:red)
69
+ logger.error <<~EOL
70
+ Please configure the Azure KeyVault you want to use. Example:
71
+
72
+ config/plugins/azurerm.rb
73
+
74
+ TerraspacePluginAzurerm.configure do |config|
75
+ config.secrets.vault = "REPLACE_WITH_YOUR_VAULT_NAME"
76
+ end
77
+
78
+ Docs: https://terraspace.cloud/docs/helpers/azure/secrets/
79
+ EOL
80
+ raise VaultNotConfiguredError.new
81
+ end
82
+
58
83
  def send_request(uri, req)
59
84
  http = Net::HTTP.new(uri.host, uri.port)
60
85
  http.open_timeout = http.read_timeout = 30
@@ -108,5 +133,16 @@ class TerraspacePluginAzurerm::Interfaces::Helper::Secret
108
133
  @@token = false
109
134
  end
110
135
  end
136
+
137
+ private
138
+ delegate :expansion, to: :expander
139
+ def expander
140
+ TerraspacePluginAzurerm::Interfaces::Expander.new(@mod)
141
+ end
142
+ memoize :expander
143
+
144
+ def expand?
145
+ !(@options[:expansion] == false || @options[:expand] == false)
146
+ end
111
147
  end
112
148
  end
@@ -6,8 +6,8 @@ module TerraspacePluginAzurerm::Interfaces::Helper
6
6
  include TerraspacePluginAzurerm::Logging
7
7
  include TerraspacePluginAzurerm::Clients::Options
8
8
 
9
- def initialize(options={})
10
- @options = options
9
+ def initialize(mod, options={})
10
+ @mod, @options = mod, options
11
11
  @base64 = options[:base64]
12
12
  end
13
13
 
@@ -19,7 +19,7 @@ module TerraspacePluginAzurerm::Interfaces::Helper
19
19
  end
20
20
 
21
21
  def fetcher
22
- Fetcher.new
22
+ Fetcher.new(@mod, @options)
23
23
  end
24
24
  memoize :fetcher
25
25
  end
@@ -3,7 +3,7 @@ module TerraspacePluginAzurerm::Interfaces
3
3
  include Terraspace::Plugin::Helper::Interface
4
4
 
5
5
  def azure_secret(name, options={})
6
- Secret.new(options).fetch(name, options)
6
+ Secret.new(@mod, options).fetch(name, options)
7
7
  end
8
8
  cache_helper :azure_secret
9
9
  end
@@ -1,3 +1,3 @@
1
1
  module TerraspacePluginAzurerm
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraspace_plugin_azurerm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-29 00:00:00.000000000 Z
11
+ date: 2022-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: azure-storage-blob
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  requirements: []
182
- rubygems_version: 3.1.6
182
+ rubygems_version: 3.2.32
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Terraspace Azurerm Cloud Plugin