minfra-cli 1.13.2 → 2.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/.github/workflows/ruby.yml +1 -2
- data/.rubocop.yml +31 -0
- data/CHANGELOG.md +18 -1
- data/Gemfile.lock +1 -1
- data/README.md +13 -1
- data/exe/minfra +1 -3
- data/lib/deep_merge.rb +35 -36
- data/lib/hash.rb +19 -18
- data/lib/minfra/cli/ask.rb +18 -16
- data/lib/minfra/cli/cli_starter.rb +173 -0
- data/lib/minfra/cli/command.rb +4 -1
- data/lib/minfra/cli/commands/dev.rb +26 -15
- data/lib/minfra/cli/commands/kube.rb +97 -88
- data/lib/minfra/cli/commands/plugin.rb +9 -8
- data/lib/minfra/cli/commands/project/branch.rb +7 -5
- data/lib/minfra/cli/commands/project/tag.rb +7 -6
- data/lib/minfra/cli/commands/project.rb +40 -40
- data/lib/minfra/cli/commands/setup.rb +18 -18
- data/lib/minfra/cli/commands/stack/app_template.rb +10 -13
- data/lib/minfra/cli/commands/stack/client_template.rb +10 -8
- data/lib/minfra/cli/commands/stack/kube_stack_template.rb +49 -51
- data/lib/minfra/cli/commands/stack.rb +55 -46
- data/lib/minfra/cli/commands/tag.rb +9 -8
- data/lib/minfra/cli/common.rb +7 -10
- data/lib/minfra/cli/config.rb +36 -63
- data/lib/minfra/cli/core_ext.rb +7 -0
- data/lib/minfra/cli/document.rb +5 -2
- data/lib/minfra/cli/env.rb +24 -0
- data/lib/minfra/cli/errors.rb +10 -0
- data/lib/minfra/cli/helm_runner.rb +3 -1
- data/lib/minfra/cli/hiera_looker.rb +54 -0
- data/lib/minfra/cli/hook.rb +36 -24
- data/lib/minfra/cli/kubectl_runner.rb +3 -1
- data/lib/minfra/cli/logging.rb +5 -1
- data/lib/minfra/cli/main_command.rb +2 -1
- data/lib/minfra/cli/plugin.rb +74 -0
- data/lib/minfra/cli/plugins.rb +18 -87
- data/lib/minfra/cli/runner.rb +23 -23
- data/lib/minfra/cli/templater.rb +17 -17
- data/lib/minfra/cli/version.rb +3 -1
- data/lib/minfra/cli.rb +20 -114
- data/lib/orchparty/ast.rb +13 -14
- data/lib/orchparty/cli.rb +35 -33
- data/lib/orchparty/context.rb +15 -15
- data/lib/orchparty/dsl_parser.rb +7 -11
- data/lib/orchparty/dsl_parser_kubernetes.rb +46 -56
- data/lib/orchparty/kubernetes_application.rb +2 -2
- data/lib/orchparty/plugin.rb +10 -9
- data/lib/orchparty/plugins/env.rb +14 -13
- data/lib/orchparty/transformations/all.rb +3 -1
- data/lib/orchparty/transformations/mixin.rb +24 -24
- data/lib/orchparty/transformations/remove_internal.rb +3 -2
- data/lib/orchparty/transformations/sort.rb +2 -1
- data/lib/orchparty/transformations/variable.rb +6 -5
- data/lib/orchparty/transformations.rb +2 -0
- data/lib/orchparty/version.rb +3 -1
- data/lib/orchparty.rb +14 -14
- metadata +9 -2
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
|
3
5
|
module Minfra
|
@@ -7,29 +9,29 @@ module Minfra
|
|
7
9
|
include ::Minfra::Cli::Logging
|
8
10
|
|
9
11
|
attr_reader :content, :path
|
12
|
+
|
10
13
|
def initialize(stack_name, client_name, config)
|
11
14
|
@stack_name = stack_name
|
12
15
|
@client_name = client_name
|
13
16
|
@config = OpenStruct.new
|
14
|
-
@path
|
17
|
+
@path = config.stacks_path.join(stack_name, "fxnet-client-#{client_name}-#{config.orch_env}.json")
|
15
18
|
read
|
16
19
|
end
|
17
20
|
|
18
21
|
def exist?
|
19
22
|
@path.exist?
|
20
23
|
end
|
21
|
-
|
24
|
+
|
22
25
|
def read
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
return unless exist?
|
27
|
+
|
28
|
+
t = Minfra::Cli::Templater.new(File.read(@path))
|
29
|
+
@content = Hashie::Mash.new(JSON.parse(t.render({})))
|
27
30
|
end
|
28
31
|
|
29
32
|
def to_s
|
30
|
-
JSON.generate(@content, {indent:
|
33
|
+
JSON.generate(@content, { indent: ' ', object_nl: "\n" })
|
31
34
|
end
|
32
|
-
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
@@ -1,75 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
module Minfra
|
3
5
|
module Cli
|
4
6
|
module StackM
|
5
7
|
class KubeStackTemplate
|
6
|
-
|
8
|
+
include ::Minfra::Cli::Logging
|
7
9
|
|
8
|
-
|
9
|
-
def initialize(name, config, deployment: '', cluster:)
|
10
|
-
@name = name
|
11
|
-
@config_path = config.stacks_path.join(name)
|
12
|
-
@errors = []
|
13
|
-
@config = config
|
14
|
-
@env = config.orch_env
|
15
|
-
@deployment = deployment.freeze
|
16
|
-
@cluster = cluster.freeze || l!("cluster").id
|
17
|
-
@result_path = config.status_path.join('stacks', @cluster, name)
|
18
|
-
debug "Stack selection: #{@name}, #{@config_path}, #{@cluster}, #{@result_path}"
|
19
|
-
end
|
10
|
+
attr_reader :name, :env, :deployment, :config_path
|
20
11
|
|
21
|
-
|
22
|
-
|
23
|
-
|
12
|
+
def initialize(name, config, cluster:, deployment: '')
|
13
|
+
@name = name
|
14
|
+
@config_path = config.stacks_path.join(name)
|
15
|
+
@errors = []
|
16
|
+
@config = config
|
17
|
+
@env = config.orch_env
|
18
|
+
@deployment = deployment.freeze
|
19
|
+
@cluster = cluster.freeze || l!('cluster').id
|
20
|
+
@result_path = config.status_path.join('stacks', @cluster, name)
|
21
|
+
debug "Stack selection: #{@name}, #{@config_path}, #{@cluster}, #{@result_path}"
|
22
|
+
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
def cluster_name
|
25
|
+
@cluster
|
26
|
+
end
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
@errors << "stack path #{@config_path} doesn't exist"
|
28
|
+
def mixin_env
|
29
|
+
"#{@env}#{dashed(@deployment)}"
|
32
30
|
end
|
33
31
|
|
34
|
-
|
35
|
-
@errors << "stack
|
32
|
+
def valid?
|
33
|
+
@errors << "stack path #{@config_path} doesn't exist" unless @config_path.exist?
|
34
|
+
|
35
|
+
@errors << "stack.rb file #{stack_rb_path} doesn't exist" unless stack_rb_path.exist?
|
36
|
+
@errors.empty?
|
36
37
|
end
|
37
|
-
@errors.empty?
|
38
|
-
end
|
39
38
|
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
def stack_rb_path
|
40
|
+
config_path.join('stack.rb')
|
41
|
+
end
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
43
|
+
def compose_path(blank: false)
|
44
|
+
if blank
|
45
|
+
release_path.join('compose.yaml')
|
46
|
+
elsif @cluster
|
47
|
+
release_path.join("compose#{dashed(@cluster)}.yaml")
|
48
|
+
else
|
49
|
+
release_path.join("compose#{dashed(@env)}#{dashed(@deployment)}.yaml")
|
50
|
+
end
|
51
51
|
end
|
52
|
-
end
|
53
52
|
|
54
|
-
|
55
|
-
|
56
|
-
|
53
|
+
def error_message
|
54
|
+
@errors.join(";\n")
|
55
|
+
end
|
57
56
|
|
58
|
-
|
59
|
-
|
60
|
-
|
57
|
+
def release_path
|
58
|
+
@result_path
|
59
|
+
end
|
61
60
|
|
61
|
+
def check_plan
|
62
|
+
[]
|
63
|
+
end
|
62
64
|
|
63
|
-
|
64
|
-
errors = []
|
65
|
-
errors
|
66
|
-
end
|
65
|
+
private
|
67
66
|
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
def dashed(sth, set = nil)
|
68
|
+
sth.nil? || sth.empty? ? '' : "-#{set || sth}"
|
69
|
+
end
|
71
70
|
end
|
72
71
|
end
|
73
72
|
end
|
74
73
|
end
|
75
|
-
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'fileutils'
|
2
4
|
require_relative 'stack/app_template'
|
3
5
|
require_relative 'stack/client_template'
|
@@ -6,24 +8,23 @@ require_relative 'stack/kube_stack_template'
|
|
6
8
|
module Minfra
|
7
9
|
module Cli
|
8
10
|
class Stack < Command
|
9
|
-
|
10
|
-
desc "describe","get information about a stack"
|
11
|
+
desc 'describe', 'get information about a stack'
|
11
12
|
option :environment, aliases: ['-e']
|
12
13
|
def describe
|
13
|
-
pp minfra_config.describe(options[
|
14
|
+
pp minfra_config.describe(options['environment'])
|
14
15
|
end
|
15
16
|
|
16
|
-
desc
|
17
|
+
desc 'dashboard <stack_name>', 'openening a dashboard for a stack'
|
17
18
|
option :environment, aliases: ['-e']
|
18
19
|
option :deployment, aliases: ['-d']
|
19
20
|
option :cluster, aliases: ['-c']
|
20
|
-
def dashboard(stack_name='all')
|
21
|
+
def dashboard(stack_name = 'all')
|
21
22
|
kube.dashboard(stack_name, options[:environment], options[:deployment], options[:cluster])
|
22
23
|
end
|
23
24
|
|
24
|
-
desc "deploy <stack_name> '<message> (optional)'",
|
25
|
+
desc "deploy <stack_name> '<message> (optional)'", 'deploy a complete stack'
|
25
26
|
option :environment, aliases: ['-e']
|
26
|
-
# option :deployment, aliases: ['-d']
|
27
|
+
# option :deployment, aliases: ['-d']
|
27
28
|
option :cluster, aliases: ['-c']
|
28
29
|
option :dev, type: :boolean # currently, about to be changed
|
29
30
|
option :explain, type: :boolean
|
@@ -31,45 +32,52 @@ module Minfra
|
|
31
32
|
option :test, type: :boolean
|
32
33
|
option :opts
|
33
34
|
option :force, type: :boolean
|
34
|
-
def deploy(stack_name, message='')
|
35
|
-
|
35
|
+
def deploy(stack_name, message = '')
|
36
|
+
stacks = l('env.roles') || l('env.stacks') || []
|
37
|
+
default_stacks = minfra_config.project.default_stacks || []
|
38
|
+
stacks = stacks.concat(default_stacks)
|
39
|
+
if stacks.include?(stack_name) || options[:force] || options[:test]
|
40
|
+
kube.deploy(stack_name, message)
|
41
|
+
else
|
42
|
+
exit_error("project:default_stacks or hiera:env.roles or hiera:env.stacks has to include '#{stack_name}' or use --force or --test")
|
43
|
+
end
|
36
44
|
end
|
37
45
|
|
38
|
-
desc
|
46
|
+
desc 'rollback <extraargs>', 'rollback a deployment'
|
39
47
|
option :environment, aliases: ['-e']
|
40
48
|
option :deployment, aliases: ['-d']
|
41
49
|
option :cluster, aliases: ['-c']
|
42
|
-
def rollback(*
|
43
|
-
|
50
|
+
def rollback(*_args)
|
51
|
+
warn 'needs implementation'
|
44
52
|
exit 1
|
45
|
-
#kube.rollback(stack_name, options[:environment], options[:deployment], options[:cluster], args)
|
53
|
+
# kube.rollback(stack_name, options[:environment], options[:deployment], options[:cluster], args)
|
46
54
|
end
|
47
55
|
|
48
|
-
desc
|
56
|
+
desc 'destroy', 'remove the whole stack'
|
49
57
|
option :environment, aliases: ['-e']
|
50
58
|
option :cluster, aliases: ['-c']
|
51
59
|
def destroy(stack_name)
|
52
60
|
kube.destroy(stack_name)
|
53
61
|
end
|
54
62
|
|
55
|
-
desc
|
63
|
+
desc 'list', 'list all stacks in an environment'
|
56
64
|
option :environment, aliases: ['-e']
|
57
65
|
option :cluster, aliases: ['-c']
|
58
66
|
def list
|
59
67
|
kube.list
|
60
68
|
end
|
61
69
|
|
62
|
-
desc
|
70
|
+
desc 'app', 'show the app a stack provides'
|
63
71
|
option :environment, aliases: ['-e']
|
64
72
|
def app(stack_name)
|
65
|
-
cluster=nil
|
66
|
-
deployment=nil
|
73
|
+
cluster = nil
|
74
|
+
deployment = nil
|
67
75
|
template = Minfra::Cli::StackM::AppTemplate.new(stack_name, minfra_config)
|
68
76
|
template.read
|
69
|
-
puts "Template: #{template.app_path}\n#{template
|
70
|
-
apps = AppResource.all(filter: {identifier: template.app.identifier}
|
77
|
+
puts "Template: #{template.app_path}\n#{template}"
|
78
|
+
apps = AppResource.all(filter: { identifier: template.app.identifier }).data
|
71
79
|
if apps.empty?
|
72
|
-
puts
|
80
|
+
puts 'Auth: app uninstalled'
|
73
81
|
atts = {
|
74
82
|
identifier: template.app.identifier,
|
75
83
|
name: template.app.name,
|
@@ -79,43 +87,44 @@ module Minfra
|
|
79
87
|
start_url: template.app.start_url,
|
80
88
|
public: template.app.public
|
81
89
|
}
|
82
|
-
app_res=AppResource.build(
|
90
|
+
app_res = AppResource.build({ data: { attributes: atts, type: 'apps' } })
|
83
91
|
app_res.save
|
84
92
|
app = app_res.data
|
85
93
|
else
|
86
|
-
app = apps.first
|
87
|
-
end
|
94
|
+
app = apps.first
|
95
|
+
end
|
88
96
|
puts "Auth: app installed #{app.id}"
|
89
97
|
|
90
|
-
clients = OauthClientResource.all(filter: {app_id: app.id}).data
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
native: template.client.native, ppid: template.client.ppid, name: template.client.name, app_id: app.id}
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
98
|
+
clients = OauthClientResource.all(filter: { app_id: app.id }).data
|
99
|
+
if clients.empty?
|
100
|
+
puts 'Auth: client not registered'
|
101
|
+
atts = { redirect_uris: template.client.redirect_uris.map { |r| "#{app.start_url}#{r}" },
|
102
|
+
native: template.client.native, ppid: template.client.ppid, name: template.client.name, app_id: app.id }
|
103
|
+
client_res = OauthClientResource.build({ data: { attributes: atts, type: 'oauth_clients' } })
|
104
|
+
client_res.save
|
105
|
+
client = client_res.data
|
106
|
+
else
|
107
|
+
client = clients.first
|
108
|
+
end
|
109
|
+
puts "Auth: client registered #{client.id}"
|
102
110
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
111
|
+
client_template = Minfra::Cli::StackM::ClientTemplate.new(stack_name, client.name, minfra_config)
|
112
|
+
return if client_template.exist?
|
113
|
+
|
114
|
+
File.write(client_template.path.to_s,
|
115
|
+
{ name: client.name, identifier: client.identifier, secret: client.secret }.to_json)
|
108
116
|
|
109
117
|
# TODO: create app configuration
|
110
118
|
# TODO: create provider
|
111
119
|
end
|
112
120
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
121
|
+
private
|
122
|
+
|
123
|
+
def kube
|
124
|
+
Kube.new(options, minfra_config)
|
125
|
+
end
|
117
126
|
end
|
118
127
|
end
|
119
128
|
end
|
120
129
|
|
121
|
-
Minfra::Cli.register(
|
130
|
+
Minfra::Cli.register('stack', 'dealing wit stacks', Minfra::Cli::Stack)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Minfra
|
3
4
|
module Cli
|
4
5
|
class Tag
|
@@ -22,10 +23,10 @@ module Minfra
|
|
22
23
|
info 'Checking that the current commit is present on the remote.'
|
23
24
|
output = run_cmd(cmd_ensure_commit_is_pushed)
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
return unless output.empty?
|
27
|
+
|
28
|
+
exit_error "The current commit is not present on the remote.\n" \
|
29
|
+
'Please push your changes to origin and try again.'
|
29
30
|
end
|
30
31
|
|
31
32
|
def cmd_ensure_commit_is_pushed
|
@@ -45,7 +46,7 @@ module Minfra
|
|
45
46
|
end
|
46
47
|
|
47
48
|
def cmd_push
|
48
|
-
|
49
|
+
'git push'
|
49
50
|
end
|
50
51
|
|
51
52
|
def cmd_push_tag
|
@@ -55,8 +56,8 @@ module Minfra
|
|
55
56
|
def git_current_branch
|
56
57
|
`git rev-parse --abbrev-ref HEAD`.strip
|
57
58
|
end
|
58
|
-
|
59
|
-
#TBD: this should be more flexible
|
59
|
+
|
60
|
+
# TBD: this should be more flexible
|
60
61
|
def tag_name
|
61
62
|
"#{git_current_branch}-REL-#{@now.strftime(@format)}"
|
62
63
|
end
|
@@ -68,4 +69,4 @@ module Minfra
|
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
71
|
-
#Minfra::Cli.register("tag", "creating tags", Minfra::Cli::Tag)
|
72
|
+
# Minfra::Cli.register("tag", "creating tags", Minfra::Cli::Tag)
|
data/lib/minfra/cli/common.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
|
3
5
|
module Minfra
|
4
6
|
module Cli
|
5
7
|
module Common
|
6
|
-
|
7
|
-
def exit_error(msg)
|
8
|
-
STDERR.puts("ERROR: #{msg}" )
|
9
|
-
exit 1
|
10
|
-
end
|
8
|
+
include Minfra::Cli::Logging
|
11
9
|
|
12
10
|
def run_cmd(cmd, type = :non_system, silence: false)
|
13
11
|
debug(cmd)
|
@@ -15,12 +13,12 @@ module Minfra
|
|
15
13
|
when :exec
|
16
14
|
Kernel.exec(cmd)
|
17
15
|
when :bash
|
18
|
-
res = system(%
|
19
|
-
exit_error(
|
16
|
+
res = system(%(bash -c "#{Array.new(cmd).join(' && ')}"))
|
17
|
+
exit_error('failed!') unless res
|
20
18
|
nil # no output!
|
21
19
|
when :system
|
22
20
|
res = system(cmd)
|
23
|
-
exit_error(
|
21
|
+
exit_error('failed!') unless res
|
24
22
|
nil # no output!
|
25
23
|
else
|
26
24
|
`#{cmd}` # with output!
|
@@ -28,14 +26,13 @@ module Minfra
|
|
28
26
|
end
|
29
27
|
|
30
28
|
def parse_cmd(cmd, silence: false)
|
31
|
-
reply = JSON.parse(run_cmd(cmd, silence:
|
29
|
+
reply = JSON.parse(run_cmd(cmd, silence:))
|
32
30
|
rescue JSON::ParserError, TypeError
|
33
31
|
error "ERROR: #{$ERROR_INFO.message}"
|
34
32
|
error reply
|
35
33
|
error "command was: #{cmd}"
|
36
34
|
exit 1
|
37
35
|
end
|
38
|
-
|
39
36
|
end
|
40
37
|
end
|
41
38
|
end
|
data/lib/minfra/cli/config.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
require 'hashie/mash'
|
3
5
|
require 'json'
|
@@ -8,90 +10,61 @@ module Minfra
|
|
8
10
|
class Config
|
9
11
|
class ConfigNotFoundError < StandardError
|
10
12
|
end
|
13
|
+
|
11
14
|
class EnvironmentNotFoundError < StandardError
|
12
15
|
end
|
13
16
|
|
14
|
-
attr_reader :base_path
|
15
|
-
|
16
|
-
attr_reader :stacks_path
|
17
|
-
attr_reader :status_path
|
18
|
-
attr_reader :me_path
|
19
|
-
attr_reader :kube_path
|
20
|
-
attr_reader :kube_config_path
|
21
|
-
attr_reader :kind_config_path
|
22
|
-
|
23
|
-
attr_reader :orch_env
|
24
|
-
attr_reader :orch_env_config
|
25
|
-
attr_reader :config
|
26
|
-
attr_reader :project
|
17
|
+
attr_reader :base_path, :config_path, :stacks_path, :status_path, :me_path, :kube_path, :kube_config_path,
|
18
|
+
:kind_config_path, :orch_env, :orch_env_config, :config, :project
|
27
19
|
|
28
|
-
def
|
29
|
-
|
20
|
+
def initialize(base_path_str, orch_env)
|
21
|
+
init!(base_path_str, orch_env)
|
30
22
|
end
|
31
23
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
def init!(base_path_str=nil)
|
37
|
-
@base_path = Pathname.new(base_path_str || ENV["MINFRA_PATH"]).expand_path
|
24
|
+
def init!(base_path_str, orch_env)
|
25
|
+
@orch_env = orch_env
|
26
|
+
@base_path = Pathname.new(base_path_str).expand_path
|
38
27
|
@me_path = @base_path.join('me')
|
39
|
-
@project_config_path
|
40
|
-
@config_path =
|
28
|
+
@project_config_path = @base_path.join('config', 'project.json')
|
29
|
+
@config_path = @me_path.join('config.json')
|
41
30
|
@stacks_path = @base_path.join('stacks')
|
42
31
|
@status_path = @base_path.join('state')
|
43
|
-
@kube_path
|
44
|
-
@kube_config_path
|
45
|
-
@kind_config_path
|
46
|
-
|
47
|
-
# @project_minfrarc_path = @base_path.join("config",'minfrarc.rb')
|
48
|
-
# require @project_minfrarc_path if @project_minfrarc_path.exist?
|
49
|
-
# @me_minfrarc_path = @me_path.join('minfrarc.rb')
|
50
|
-
# require @me_minfrarc_path if @me_minfrarc_path.exist?
|
32
|
+
@kube_path = @me_path.join('kube')
|
33
|
+
@kube_config_path = @kube_path.join('config')
|
34
|
+
@kind_config_path = @me_path.join('kind.yaml')
|
51
35
|
|
52
36
|
if config_path.exist?
|
53
|
-
@config = Hashie::Mash.new(JSON.parse(Minfra::Cli::Templater.render(File.read(config_path),{})))
|
37
|
+
@config = Hashie::Mash.new(JSON.parse(Minfra::Cli::Templater.render(File.read(config_path), {})))
|
54
38
|
else
|
55
39
|
warn("personal minfra configuration file '#{config_path}' not found, you might have to run 'minfra setup dev'")
|
56
40
|
@config = Hashie::Mash.new({})
|
57
41
|
end
|
58
|
-
@project = Hashie::Mash.new(JSON.parse(Minfra::Cli::Templater.render(File.read(@project_config_path),{})))
|
59
|
-
@project= @project
|
60
|
-
|
61
|
-
# deep_merge(@project.environments[@orch_env]).
|
62
|
-
# deep_merge(@orch_env_config)
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
def load(orch_env)
|
67
|
-
return self if defined?(@orch_env)
|
68
|
-
@orch_env = orch_env
|
69
|
-
@orch_env_config=Hashie::Mash.new
|
70
|
-
@orch_env_config['env']=@orch_env
|
71
|
-
self
|
42
|
+
@project = Hashie::Mash.new(JSON.parse(Minfra::Cli::Templater.render(File.read(@project_config_path), {})))
|
43
|
+
@project = @project
|
44
|
+
.deep_merge(@config)
|
72
45
|
end
|
73
46
|
|
74
47
|
def name
|
75
48
|
@project.name
|
76
49
|
end
|
77
50
|
|
78
|
-
def describe(
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
}
|
51
|
+
def describe(_environment)
|
52
|
+
{
|
53
|
+
env: {
|
54
|
+
minfra_name: ENV.fetch('MINFRA_NAME', nil),
|
55
|
+
minfra_path: ENV.fetch('MINFRA_PATH', nil)
|
56
|
+
},
|
57
|
+
base_path: base_path.to_s,
|
58
|
+
me_path: me_path.to_s,
|
59
|
+
kube_path: kube_path.to_s,
|
60
|
+
config_path: config_path.to_s,
|
61
|
+
config: @config.to_h,
|
62
|
+
project: @project
|
63
|
+
}
|
92
64
|
end
|
65
|
+
|
93
66
|
def dev?
|
94
|
-
@orch_env=='dev'
|
67
|
+
@orch_env == 'dev'
|
95
68
|
end
|
96
69
|
|
97
70
|
def email
|
@@ -103,8 +76,8 @@ module Minfra
|
|
103
76
|
end
|
104
77
|
|
105
78
|
def endpoint(name)
|
106
|
-
Hashie::Mash.new({
|
107
|
-
rescue
|
79
|
+
Hashie::Mash.new({ api_key: }).deep_merge(@project.endpoints[name])
|
80
|
+
rescue StandardError
|
108
81
|
raise("endpoint #{name} is undefinded please add <env>:endpoints:#{name} to you #{config_path} file ")
|
109
82
|
end
|
110
83
|
end
|
data/lib/minfra/cli/document.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Minfra
|
2
4
|
module Cli
|
3
5
|
class Document
|
@@ -9,9 +11,10 @@ module Minfra
|
|
9
11
|
@config = config
|
10
12
|
end
|
11
13
|
|
12
|
-
def document(
|
14
|
+
def document(_message)
|
13
15
|
return true if @config.dev?
|
14
|
-
|
16
|
+
|
17
|
+
puts 'TBD: calling documentation hooks'
|
15
18
|
true
|
16
19
|
end
|
17
20
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Minfra
|
2
|
+
module Cli
|
3
|
+
class Env
|
4
|
+
attr_reader :name, :hiera
|
5
|
+
def initialize(name:, hiera_root:, hiera_env_path:)
|
6
|
+
@name = name
|
7
|
+
@hiera = HieraLooker.new(
|
8
|
+
root: hiera_root,
|
9
|
+
env_name: name,
|
10
|
+
env_path: hiera_env_path
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
def l(key, value = nil)
|
15
|
+
@hiera.l(key,value)
|
16
|
+
end
|
17
|
+
|
18
|
+
def l!(key, value = nil)
|
19
|
+
@hiera.l!(key, value)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Minfra
|
2
4
|
module Cli
|
3
5
|
class HelmRunner < Runner
|
4
6
|
def initialize(cmd, **args)
|
5
|
-
insecure_flag = l(
|
7
|
+
insecure_flag = l('infra::allow_insecure_k8s_connections') ? '--kube-insecure-skip-tls-verify' : ''
|
6
8
|
cmd = "helm #{insecure_flag} #{cmd}"
|
7
9
|
super(cmd, **args)
|
8
10
|
end
|