minfra-cli 3.0.2 → 4.0.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 +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/minfra/cli/cli_starter.rb +7 -1
- data/lib/minfra/cli/env.rb +3 -2
- data/lib/minfra/cli/hiera_looker.rb +8 -1
- data/lib/minfra/cli/hiera_yaml_backend_patch.rb +50 -0
- data/lib/minfra/cli/version.rb +1 -1
- data/lib/orchparty/dsl_parser_kubernetes.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f3b63b9c6e391715e568fed4c5e113a7574afc4d8944b78bbed9b0a8f1fed28
|
4
|
+
data.tar.gz: 915a61225192f2f2d306b3736f02c5573e737932a7bab2ccdc64dffb6108eda1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8cea1d91de6744dd40eb6ae3d841b95fc0890723c953f9ac2af27b5c1e0e22af13be7bb1fc996bdd552cca9e1488e9eed24ae0f0c4d4479d97eb8a31ffd052a
|
7
|
+
data.tar.gz: 2d427efb9533341b778d700f44d5f7596972331a4cb8e0f2beb6e23af83cad67ce36445102bd5de9251de9d0be16941772de4dfa2475918c42372b50d7d277ce
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# 4.0.0
|
2
|
+
* in apply mode of secrets we prefix the name with the chart name
|
3
|
+
# 3.1.0
|
4
|
+
* overriding backends via MINFRA_HIERA_BACKENDS
|
5
|
+
* overriding Yaml Backend to allow :extension: setting
|
1
6
|
# 3.0.2
|
2
7
|
* removing complex dns manipulation and hardcoding google servers
|
3
8
|
# 3.0.1
|
data/README.md
CHANGED
@@ -17,7 +17,7 @@ Is a KIND (k8s in docker) based development environment.
|
|
17
17
|
| | | default_stacks | | env.stacks or env.roles |
|
18
18
|
| | | | | infra::allow_insecure_k8s_connections |
|
19
19
|
| when set to 'true' all hiera lookups are logged on debug level | MINFRA_DEBUG_HIERA_LOOKUPS | | | |
|
20
|
-
|
20
|
+
| to override the backends in the hiera file, comma separated | MINFRA_HIERA_BACKENDS | | | |
|
21
21
|
|
22
22
|
## Expected hiera data
|
23
23
|
|
@@ -150,7 +150,13 @@ module Minfra
|
|
150
150
|
root = base_path.join('hiera')
|
151
151
|
root.join('hieradata',env_path).glob('*.eyaml').sort.each do |path|
|
152
152
|
env_name = path.basename.sub(/(\..+)/,'').to_s
|
153
|
-
@envs[env_name]=Env.new(
|
153
|
+
@envs[env_name]=Env.new(
|
154
|
+
hiera_root: root,
|
155
|
+
hiera_env_path: env_path,
|
156
|
+
name: env_name,
|
157
|
+
hiera_debug_lookups: ENV['MINFRA_DEBUG_HIERA_LOOKUPS'] == 'true',
|
158
|
+
backends: ENV.fetch('MINFRA_HIERA_BACKENDS','').split(',')
|
159
|
+
)
|
154
160
|
end
|
155
161
|
@env = @envs[@env_name] # set the current env
|
156
162
|
end
|
data/lib/minfra/cli/env.rb
CHANGED
@@ -2,13 +2,14 @@ module Minfra
|
|
2
2
|
module Cli
|
3
3
|
class Env
|
4
4
|
attr_reader :name, :hiera
|
5
|
-
def initialize(name:, hiera_root:, hiera_env_path:, hiera_debug_lookups: )
|
5
|
+
def initialize(name:, hiera_root:, hiera_env_path:, hiera_debug_lookups:, backends: )
|
6
6
|
@name = name
|
7
7
|
@hiera = HieraLooker.new(
|
8
8
|
root: hiera_root,
|
9
9
|
env_name: name,
|
10
10
|
env_path: hiera_env_path,
|
11
|
-
debug_lookups: hiera_debug_lookups
|
11
|
+
debug_lookups: hiera_debug_lookups,
|
12
|
+
backends: backends
|
12
13
|
)
|
13
14
|
end
|
14
15
|
|
@@ -5,13 +5,20 @@ module Minfra
|
|
5
5
|
module Cli
|
6
6
|
class HieraLooker
|
7
7
|
include Logging
|
8
|
-
def initialize(root:, env_name:, env_path:, debug_lookups: false)
|
8
|
+
def initialize(root:, env_name:, env_path:, debug_lookups: false, backends: nil)
|
9
9
|
@root = Pathname.new(root)
|
10
10
|
@env_name = env_name
|
11
11
|
@cache = {}
|
12
12
|
|
13
13
|
@hiera = Hiera.new(config: @root.join('hiera.yaml').to_s)
|
14
|
+
# now that hiera has loaded the backends let's patch 'em
|
15
|
+
require 'minfra/cli/hiera_yaml_backend_patch' if defined?(Hiera::Backend::Yaml_backend)
|
16
|
+
|
14
17
|
Hiera.logger = :noop
|
18
|
+
if backends && !backends.empty?
|
19
|
+
@hiera.config[:backends] = backends
|
20
|
+
Hiera::Config.load_backends
|
21
|
+
end
|
15
22
|
|
16
23
|
hiera_main_path = @root.join("hieradata/#{env_path}/#{env_name}.eyaml")
|
17
24
|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class Hiera
|
2
|
+
module Backend
|
3
|
+
class Yaml_backend
|
4
|
+
|
5
|
+
def lookup(key, scope, order_override, resolution_type, context)
|
6
|
+
answer = nil
|
7
|
+
found = false
|
8
|
+
|
9
|
+
Hiera.debug("Looking up #{key} in YAML backend")
|
10
|
+
Backend.datasourcefiles(:yaml, scope, Config[:yaml][:extension] || "yaml", order_override) do |source, yamlfile|
|
11
|
+
data = @cache.read_file(yamlfile, Hash) do |data|
|
12
|
+
YAML.load(data) || {}
|
13
|
+
end
|
14
|
+
|
15
|
+
next if data.empty?
|
16
|
+
next unless data.include?(key)
|
17
|
+
found = true
|
18
|
+
|
19
|
+
# Extra logging that we found the key. This can be outputted
|
20
|
+
# multiple times if the resolution type is array or hash but that
|
21
|
+
# should be expected as the logging will then tell the user ALL the
|
22
|
+
# places where the key is found.
|
23
|
+
Hiera.debug("Found #{key} in #{source}")
|
24
|
+
|
25
|
+
# for array resolution we just append to the array whatever
|
26
|
+
# we find, we then goes onto the next file and keep adding to
|
27
|
+
# the array
|
28
|
+
#
|
29
|
+
# for priority searches we break after the first found data item
|
30
|
+
new_answer = Backend.parse_answer(data[key], scope, {}, context)
|
31
|
+
case resolution_type.is_a?(Hash) ? :hash : resolution_type
|
32
|
+
when :array
|
33
|
+
raise Exception, "Hiera type mismatch for key '#{key}': expected Array and got #{new_answer.class}" unless new_answer.kind_of? Array or new_answer.kind_of? String
|
34
|
+
answer ||= []
|
35
|
+
answer << new_answer
|
36
|
+
when :hash
|
37
|
+
raise Exception, "Hiera type mismatch for key '#{key}': expected Hash and got #{new_answer.class}" unless new_answer.kind_of? Hash
|
38
|
+
answer ||= {}
|
39
|
+
answer = Backend.merge_answer(new_answer, answer, resolution_type)
|
40
|
+
else
|
41
|
+
answer = new_answer
|
42
|
+
break
|
43
|
+
end
|
44
|
+
end
|
45
|
+
throw :no_such_key unless found
|
46
|
+
return answer
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/minfra/cli/version.rb
CHANGED
@@ -390,7 +390,7 @@ module Orchparty
|
|
390
390
|
result = ServiceBuilder.build(name, 'apply', block)
|
391
391
|
file = Tempfile.create(name)
|
392
392
|
result.tmp_file = file.path
|
393
|
-
file.puts "apiVersion: v1\nkind: Secret\nmetadata:\n name: #{name}\ntype: Opaque\ndata:"
|
393
|
+
file.puts "apiVersion: v1\nkind: Secret\nmetadata:\n name: #{@node.name}-#{name}\ntype: Opaque\ndata:"
|
394
394
|
result._.each do |key, value|
|
395
395
|
file.puts " #{key}: #{Base64.strict_encode64(value.respond_to?(:call) ? value.call : value)}"
|
396
396
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minfra-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Schrammel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-03-
|
11
|
+
date: 2024-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -205,6 +205,7 @@ files:
|
|
205
205
|
- lib/minfra/cli/errors.rb
|
206
206
|
- lib/minfra/cli/helm_runner.rb
|
207
207
|
- lib/minfra/cli/hiera_looker.rb
|
208
|
+
- lib/minfra/cli/hiera_yaml_backend_patch.rb
|
208
209
|
- lib/minfra/cli/hook.rb
|
209
210
|
- lib/minfra/cli/kubectl_runner.rb
|
210
211
|
- lib/minfra/cli/logging.rb
|