openbolt 5.0.0.rc1 → 5.1.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/Puppetfile +18 -12
- data/bolt-modules/boltlib/lib/puppet/functions/apply_prep.rb +5 -3
- data/bolt-modules/boltlib/lib/puppet/functions/download_file.rb +1 -0
- data/bolt-modules/boltlib/lib/puppet/functions/get_resources.rb +2 -0
- data/bolt-modules/boltlib/lib/puppet/functions/puppetdb_command.rb +1 -1
- data/bolt-modules/boltlib/lib/puppet/functions/run_container.rb +2 -2
- data/bolt-modules/boltlib/lib/puppet/functions/run_script.rb +1 -0
- data/bolt-modules/boltlib/lib/puppet/functions/set_resources.rb +2 -2
- data/bolt-modules/boltlib/lib/puppet/functions/upload_file.rb +1 -0
- data/bolt-modules/boltlib/lib/puppet/functions/wait.rb +1 -1
- data/bolt-modules/boltlib/lib/puppet/functions/wait_until_available.rb +1 -0
- data/bolt-modules/ctrl/lib/puppet/functions/ctrl/do_until.rb +1 -0
- data/lib/bolt/analytics.rb +1 -1
- data/lib/bolt/application.rb +17 -22
- data/lib/bolt/applicator.rb +4 -0
- data/lib/bolt/bolt_option_parser.rb +10 -8
- data/lib/bolt/cli.rb +7 -6
- data/lib/bolt/config/options.rb +59 -67
- data/lib/bolt/config/transport/base.rb +1 -0
- data/lib/bolt/config/transport/options.rb +59 -59
- data/lib/bolt/config.rb +8 -6
- data/lib/bolt/executor.rb +9 -24
- data/lib/bolt/fiber_executor.rb +3 -1
- data/lib/bolt/inventory/group.rb +3 -0
- data/lib/bolt/inventory/inventory.rb +2 -0
- data/lib/bolt/inventory/options.rb +7 -7
- data/lib/bolt/inventory/target.rb +3 -2
- data/lib/bolt/inventory.rb +1 -0
- data/lib/bolt/logger.rb +2 -0
- data/lib/bolt/module.rb +1 -0
- data/lib/bolt/module_installer/puppetfile.rb +4 -4
- data/lib/bolt/module_installer/resolver.rb +2 -2
- data/lib/bolt/module_installer/specs/forge_spec.rb +4 -4
- data/lib/bolt/module_installer/specs/git_spec.rb +6 -6
- data/lib/bolt/module_installer/specs/id/gitclone.rb +1 -0
- data/lib/bolt/module_installer/specs/id/github.rb +2 -1
- data/lib/bolt/module_installer/specs/id/gitlab.rb +2 -1
- data/lib/bolt/module_installer.rb +3 -1
- data/lib/bolt/outputter/human.rb +9 -4
- data/lib/bolt/outputter/rainbow.rb +1 -0
- data/lib/bolt/pal/yaml_plan/parameter.rb +2 -2
- data/lib/bolt/pal/yaml_plan/step/resources.rb +1 -1
- data/lib/bolt/pal.rb +7 -4
- data/lib/bolt/plan_creator.rb +5 -4
- data/lib/bolt/plugin/cache.rb +2 -0
- data/lib/bolt/plugin/module.rb +7 -0
- data/lib/bolt/plugin/puppet_connect_data.rb +1 -0
- data/lib/bolt/plugin/task.rb +3 -0
- data/lib/bolt/plugin.rb +4 -0
- data/lib/bolt/project.rb +3 -3
- data/lib/bolt/project_manager/config_migrator.rb +3 -3
- data/lib/bolt/project_manager/inventory_migrator.rb +1 -1
- data/lib/bolt/project_manager/module_migrator.rb +7 -6
- data/lib/bolt/project_manager.rb +11 -11
- data/lib/bolt/puppetdb/config.rb +4 -0
- data/lib/bolt/puppetdb/instance.rb +1 -0
- data/lib/bolt/rerun.rb +1 -0
- data/lib/bolt/resource_instance.rb +1 -1
- data/lib/bolt/result.rb +2 -1
- data/lib/bolt/shell/bash.rb +2 -1
- data/lib/bolt/shell/powershell.rb +4 -3
- data/lib/bolt/shell.rb +1 -1
- data/lib/bolt/task/run.rb +1 -0
- data/lib/bolt/task.rb +3 -0
- data/lib/bolt/transport/docker/connection.rb +2 -0
- data/lib/bolt/transport/jail/connection.rb +2 -0
- data/lib/bolt/transport/lxd/connection.rb +2 -0
- data/lib/bolt/transport/lxd.rb +1 -1
- data/lib/bolt/transport/podman/connection.rb +2 -0
- data/lib/bolt/transport/remote.rb +1 -0
- data/lib/bolt/transport/ssh/connection.rb +1 -1
- data/lib/bolt/transport/winrm/connection.rb +4 -3
- data/lib/bolt/util/format.rb +1 -0
- data/lib/bolt/util.rb +7 -4
- data/lib/bolt/validator.rb +1 -1
- data/lib/bolt/version.rb +1 -1
- data/lib/bolt_spec/plans/action_stubs.rb +5 -0
- data/lib/bolt_spec/plans/mock_executor.rb +2 -4
- data/libexec/apply_catalog.rb +2 -1
- data/libexec/custom_facts.rb +1 -1
- data/libexec/query_resources.rb +1 -1
- metadata +63 -77
- data/lib/bolt/config/transport/orch.rb +0 -41
- data/lib/bolt/transport/orch/connection.rb +0 -111
- data/lib/bolt/transport/orch.rb +0 -271
- data/lib/bolt_server/acl.rb +0 -39
- data/lib/bolt_server/base_config.rb +0 -112
- data/lib/bolt_server/config.rb +0 -64
- data/lib/bolt_server/file_cache.rb +0 -200
- data/lib/bolt_server/request_error.rb +0 -11
- data/lib/bolt_server/schemas/action-check_node_connections.json +0 -14
- data/lib/bolt_server/schemas/action-run_command.json +0 -12
- data/lib/bolt_server/schemas/action-run_script.json +0 -47
- data/lib/bolt_server/schemas/action-run_task.json +0 -20
- data/lib/bolt_server/schemas/action-upload_file.json +0 -47
- data/lib/bolt_server/schemas/partials/target-any.json +0 -10
- data/lib/bolt_server/schemas/partials/target-ssh.json +0 -88
- data/lib/bolt_server/schemas/partials/target-winrm.json +0 -67
- data/lib/bolt_server/schemas/partials/task.json +0 -94
- data/lib/bolt_server/schemas/transport-ssh.json +0 -25
- data/lib/bolt_server/schemas/transport-winrm.json +0 -19
- data/lib/bolt_server/transport_app.rb +0 -554
data/lib/bolt/validator.rb
CHANGED
|
@@ -172,7 +172,7 @@ module Bolt
|
|
|
172
172
|
private def plugin_reference?(value, plugin_supported)
|
|
173
173
|
if value.is_a?(Hash) && value.key?('_plugin')
|
|
174
174
|
unless plugin_supported
|
|
175
|
-
@errors << "Value at '#{path}' is a plugin reference, which is unsupported at "\
|
|
175
|
+
@errors << "Value at '#{path}' is a plugin reference, which is unsupported at " \
|
|
176
176
|
"this location"
|
|
177
177
|
end
|
|
178
178
|
|
data/lib/bolt/version.rb
CHANGED
|
@@ -103,6 +103,7 @@ module BoltSpec
|
|
|
103
103
|
unless result_set.is_a?(Bolt::ResultSet)
|
|
104
104
|
raise "Return block for #{object} did not return a Bolt::ResultSet"
|
|
105
105
|
end
|
|
106
|
+
|
|
106
107
|
result_set
|
|
107
108
|
end
|
|
108
109
|
|
|
@@ -110,6 +111,7 @@ module BoltSpec
|
|
|
110
111
|
unless plan_result.is_a?(Bolt::PlanResult)
|
|
111
112
|
raise "Return block for #{plan_clj.closure_name} did not return a Bolt::PlanResult"
|
|
112
113
|
end
|
|
114
|
+
|
|
113
115
|
plan_result
|
|
114
116
|
end
|
|
115
117
|
|
|
@@ -144,6 +146,7 @@ module BoltSpec
|
|
|
144
146
|
|
|
145
147
|
def return(&block)
|
|
146
148
|
raise "Cannot set return values and return block." if @data_set
|
|
149
|
+
|
|
147
150
|
@return_block = block
|
|
148
151
|
self
|
|
149
152
|
end
|
|
@@ -153,12 +156,14 @@ module BoltSpec
|
|
|
153
156
|
def return_for_targets(data)
|
|
154
157
|
data.each_with_object(@data) do |(target, result), hsh|
|
|
155
158
|
raise "Mocked results must be hashes: #{target}: #{result}" unless result.is_a? Hash
|
|
159
|
+
|
|
156
160
|
# set the inventory from the BoltSpec::Plans, otherwise if we try to convert
|
|
157
161
|
# this target to a string, it will fail to string conversion because the
|
|
158
162
|
# inventory is nil
|
|
159
163
|
hsh[target] = result_for(Bolt::Target.new(target, @inventory), **Bolt::Util.walk_keys(result, &:to_sym))
|
|
160
164
|
end
|
|
161
165
|
raise "Cannot set return values and return block." if @return_block
|
|
166
|
+
|
|
162
167
|
@data_set = true
|
|
163
168
|
self
|
|
164
169
|
end
|
|
@@ -251,11 +251,13 @@ module BoltSpec
|
|
|
251
251
|
|
|
252
252
|
def queue_execute(targets)
|
|
253
253
|
raise "Unexpected call to apply(#{targets})" unless @allow_apply
|
|
254
|
+
|
|
254
255
|
targets
|
|
255
256
|
end
|
|
256
257
|
|
|
257
258
|
def await_results(promises)
|
|
258
259
|
raise "Unexpected call to apply(#{targets})" unless @allow_apply
|
|
260
|
+
|
|
259
261
|
Bolt::ResultSet.new(promises.map { |target| Bolt::ApplyResult.new(target) })
|
|
260
262
|
end
|
|
261
263
|
# End Apply mocking
|
|
@@ -329,8 +331,6 @@ module BoltSpec
|
|
|
329
331
|
|
|
330
332
|
def batch_execute(_targets); end
|
|
331
333
|
|
|
332
|
-
def finish_plan(_plan_result); end
|
|
333
|
-
|
|
334
334
|
def handle_event(_event); end
|
|
335
335
|
|
|
336
336
|
def prompt(_prompt, _options); end
|
|
@@ -349,8 +349,6 @@ module BoltSpec
|
|
|
349
349
|
|
|
350
350
|
def shutdown; end
|
|
351
351
|
|
|
352
|
-
def start_plan(_plan_context); end
|
|
353
|
-
|
|
354
352
|
def subscribe(_subscriber, _types = nil); end
|
|
355
353
|
|
|
356
354
|
def unsubscribe(_subscriber, _types = nil); end
|
data/libexec/apply_catalog.rb
CHANGED
|
@@ -57,6 +57,7 @@ begin
|
|
|
57
57
|
# explicitly packaged plugins should take precedence
|
|
58
58
|
args['bolt_builtin_content'].each do |builtin_dir|
|
|
59
59
|
next unless Dir.exist?(builtin_dir)
|
|
60
|
+
|
|
60
61
|
Dir.foreach(builtin_dir) do |dir|
|
|
61
62
|
unless ['.', '..'].include? dir
|
|
62
63
|
full_path = File.join(builtin_dir, dir, 'lib')
|
|
@@ -74,7 +75,7 @@ begin
|
|
|
74
75
|
begin
|
|
75
76
|
require 'puppet/resource_api/transport'
|
|
76
77
|
rescue LoadError
|
|
77
|
-
msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api "\
|
|
78
|
+
msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api " \
|
|
78
79
|
"gem version 1.8.0 or greater is required on the proxy target"
|
|
79
80
|
puts msg
|
|
80
81
|
exit 1
|
data/libexec/custom_facts.rb
CHANGED
|
@@ -39,7 +39,7 @@ Dir.mktmpdir do |puppet_root|
|
|
|
39
39
|
begin
|
|
40
40
|
require 'puppet/resource_api/transport'
|
|
41
41
|
rescue LoadError
|
|
42
|
-
msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api "\
|
|
42
|
+
msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api " \
|
|
43
43
|
"gem version 1.8.0 or greater is required on the proxy target"
|
|
44
44
|
puts msg
|
|
45
45
|
exit 1
|
data/libexec/query_resources.rb
CHANGED
|
@@ -46,7 +46,7 @@ Dir.mktmpdir do |puppet_root|
|
|
|
46
46
|
begin
|
|
47
47
|
require 'puppet/resource_api/transport'
|
|
48
48
|
rescue LoadError
|
|
49
|
-
msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api "\
|
|
49
|
+
msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api " \
|
|
50
50
|
"gem version 1.8.0 or greater is required on the proxy target"
|
|
51
51
|
puts msg
|
|
52
52
|
exit 1
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: openbolt
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenVox Project
|
|
@@ -89,32 +89,38 @@ dependencies:
|
|
|
89
89
|
name: hiera-eyaml
|
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
|
91
91
|
requirements:
|
|
92
|
-
- - "
|
|
92
|
+
- - ">="
|
|
93
|
+
- !ruby/object:Gem::Version
|
|
94
|
+
version: 3.0.0
|
|
95
|
+
- - "<"
|
|
93
96
|
- !ruby/object:Gem::Version
|
|
94
|
-
version:
|
|
97
|
+
version: 5.0.0
|
|
95
98
|
type: :runtime
|
|
96
99
|
prerelease: false
|
|
97
100
|
version_requirements: !ruby/object:Gem::Requirement
|
|
98
101
|
requirements:
|
|
99
|
-
- - "
|
|
102
|
+
- - ">="
|
|
100
103
|
- !ruby/object:Gem::Version
|
|
101
|
-
version:
|
|
104
|
+
version: 3.0.0
|
|
105
|
+
- - "<"
|
|
106
|
+
- !ruby/object:Gem::Version
|
|
107
|
+
version: 5.0.0
|
|
102
108
|
- !ruby/object:Gem::Dependency
|
|
103
|
-
name:
|
|
109
|
+
name: json
|
|
104
110
|
requirement: !ruby/object:Gem::Requirement
|
|
105
111
|
requirements:
|
|
106
112
|
- - "~>"
|
|
107
113
|
- !ruby/object:Gem::Version
|
|
108
|
-
version: '2.
|
|
114
|
+
version: '2.12'
|
|
109
115
|
type: :runtime
|
|
110
116
|
prerelease: false
|
|
111
117
|
version_requirements: !ruby/object:Gem::Requirement
|
|
112
118
|
requirements:
|
|
113
119
|
- - "~>"
|
|
114
120
|
- !ruby/object:Gem::Version
|
|
115
|
-
version: '2.
|
|
121
|
+
version: '2.12'
|
|
116
122
|
- !ruby/object:Gem::Dependency
|
|
117
|
-
name:
|
|
123
|
+
name: jwt
|
|
118
124
|
requirement: !ruby/object:Gem::Requirement
|
|
119
125
|
requirements:
|
|
120
126
|
- - "~>"
|
|
@@ -128,19 +134,19 @@ dependencies:
|
|
|
128
134
|
- !ruby/object:Gem::Version
|
|
129
135
|
version: '2.2'
|
|
130
136
|
- !ruby/object:Gem::Dependency
|
|
131
|
-
name:
|
|
137
|
+
name: logging
|
|
132
138
|
requirement: !ruby/object:Gem::Requirement
|
|
133
139
|
requirements:
|
|
134
140
|
- - "~>"
|
|
135
141
|
- !ruby/object:Gem::Version
|
|
136
|
-
version: '
|
|
142
|
+
version: '2.2'
|
|
137
143
|
type: :runtime
|
|
138
144
|
prerelease: false
|
|
139
145
|
version_requirements: !ruby/object:Gem::Requirement
|
|
140
146
|
requirements:
|
|
141
147
|
- - "~>"
|
|
142
148
|
- !ruby/object:Gem::Version
|
|
143
|
-
version: '
|
|
149
|
+
version: '2.2'
|
|
144
150
|
- !ruby/object:Gem::Dependency
|
|
145
151
|
name: net-scp
|
|
146
152
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -196,33 +202,39 @@ dependencies:
|
|
|
196
202
|
- !ruby/object:Gem::Version
|
|
197
203
|
version: '0.5'
|
|
198
204
|
- !ruby/object:Gem::Dependency
|
|
199
|
-
name:
|
|
205
|
+
name: openvox
|
|
200
206
|
requirement: !ruby/object:Gem::Requirement
|
|
201
207
|
requirements:
|
|
202
208
|
- - "~>"
|
|
203
209
|
- !ruby/object:Gem::Version
|
|
204
|
-
version: '0
|
|
210
|
+
version: '8.0'
|
|
205
211
|
type: :runtime
|
|
206
212
|
prerelease: false
|
|
207
213
|
version_requirements: !ruby/object:Gem::Requirement
|
|
208
214
|
requirements:
|
|
209
215
|
- - "~>"
|
|
210
216
|
- !ruby/object:Gem::Version
|
|
211
|
-
version: '0
|
|
217
|
+
version: '8.0'
|
|
212
218
|
- !ruby/object:Gem::Dependency
|
|
213
|
-
name:
|
|
219
|
+
name: openvox-strings
|
|
214
220
|
requirement: !ruby/object:Gem::Requirement
|
|
215
221
|
requirements:
|
|
216
222
|
- - ">="
|
|
217
223
|
- !ruby/object:Gem::Version
|
|
218
|
-
version:
|
|
224
|
+
version: '5.0'
|
|
225
|
+
- - "<"
|
|
226
|
+
- !ruby/object:Gem::Version
|
|
227
|
+
version: '7'
|
|
219
228
|
type: :runtime
|
|
220
229
|
prerelease: false
|
|
221
230
|
version_requirements: !ruby/object:Gem::Requirement
|
|
222
231
|
requirements:
|
|
223
232
|
- - ">="
|
|
224
233
|
- !ruby/object:Gem::Version
|
|
225
|
-
version:
|
|
234
|
+
version: '5.0'
|
|
235
|
+
- - "<"
|
|
236
|
+
- !ruby/object:Gem::Version
|
|
237
|
+
version: '7'
|
|
226
238
|
- !ruby/object:Gem::Dependency
|
|
227
239
|
name: puppetfile-resolver
|
|
228
240
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -257,26 +269,6 @@ dependencies:
|
|
|
257
269
|
- - ">="
|
|
258
270
|
- !ruby/object:Gem::Version
|
|
259
271
|
version: 1.8.1
|
|
260
|
-
- !ruby/object:Gem::Dependency
|
|
261
|
-
name: puppet-strings
|
|
262
|
-
requirement: !ruby/object:Gem::Requirement
|
|
263
|
-
requirements:
|
|
264
|
-
- - ">="
|
|
265
|
-
- !ruby/object:Gem::Version
|
|
266
|
-
version: 2.3.0
|
|
267
|
-
- - "<"
|
|
268
|
-
- !ruby/object:Gem::Version
|
|
269
|
-
version: '5.0'
|
|
270
|
-
type: :runtime
|
|
271
|
-
prerelease: false
|
|
272
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
273
|
-
requirements:
|
|
274
|
-
- - ">="
|
|
275
|
-
- !ruby/object:Gem::Version
|
|
276
|
-
version: 2.3.0
|
|
277
|
-
- - "<"
|
|
278
|
-
- !ruby/object:Gem::Version
|
|
279
|
-
version: '5.0'
|
|
280
272
|
- !ruby/object:Gem::Dependency
|
|
281
273
|
name: r10k
|
|
282
274
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -286,7 +278,7 @@ dependencies:
|
|
|
286
278
|
version: '3.10'
|
|
287
279
|
- - "<"
|
|
288
280
|
- !ruby/object:Gem::Version
|
|
289
|
-
version: '
|
|
281
|
+
version: '6'
|
|
290
282
|
type: :runtime
|
|
291
283
|
prerelease: false
|
|
292
284
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -296,7 +288,7 @@ dependencies:
|
|
|
296
288
|
version: '3.10'
|
|
297
289
|
- - "<"
|
|
298
290
|
- !ruby/object:Gem::Version
|
|
299
|
-
version: '
|
|
291
|
+
version: '6'
|
|
300
292
|
- !ruby/object:Gem::Dependency
|
|
301
293
|
name: ruby_smb
|
|
302
294
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -388,65 +380,79 @@ dependencies:
|
|
|
388
380
|
- !ruby/object:Gem::Version
|
|
389
381
|
version: '9'
|
|
390
382
|
- !ruby/object:Gem::Dependency
|
|
391
|
-
name:
|
|
383
|
+
name: rake
|
|
392
384
|
requirement: !ruby/object:Gem::Requirement
|
|
393
385
|
requirements:
|
|
394
386
|
- - ">="
|
|
395
387
|
- !ruby/object:Gem::Version
|
|
396
|
-
version: '
|
|
388
|
+
version: '12.0'
|
|
397
389
|
- - "<"
|
|
398
390
|
- !ruby/object:Gem::Version
|
|
399
|
-
version: '
|
|
391
|
+
version: '14'
|
|
400
392
|
type: :development
|
|
401
393
|
prerelease: false
|
|
402
394
|
version_requirements: !ruby/object:Gem::Requirement
|
|
403
395
|
requirements:
|
|
404
396
|
- - ">="
|
|
405
397
|
- !ruby/object:Gem::Version
|
|
406
|
-
version: '
|
|
398
|
+
version: '12.0'
|
|
407
399
|
- - "<"
|
|
408
400
|
- !ruby/object:Gem::Version
|
|
409
|
-
version: '
|
|
401
|
+
version: '14'
|
|
410
402
|
- !ruby/object:Gem::Dependency
|
|
411
|
-
name:
|
|
403
|
+
name: rspec
|
|
412
404
|
requirement: !ruby/object:Gem::Requirement
|
|
413
405
|
requirements:
|
|
414
406
|
- - ">="
|
|
415
407
|
- !ruby/object:Gem::Version
|
|
416
|
-
version: '
|
|
408
|
+
version: '3.0'
|
|
417
409
|
- - "<"
|
|
418
410
|
- !ruby/object:Gem::Version
|
|
419
|
-
version: '
|
|
411
|
+
version: '4'
|
|
420
412
|
type: :development
|
|
421
413
|
prerelease: false
|
|
422
414
|
version_requirements: !ruby/object:Gem::Requirement
|
|
423
415
|
requirements:
|
|
424
416
|
- - ">="
|
|
425
417
|
- !ruby/object:Gem::Version
|
|
426
|
-
version: '
|
|
418
|
+
version: '3.0'
|
|
427
419
|
- - "<"
|
|
428
420
|
- !ruby/object:Gem::Version
|
|
429
|
-
version: '
|
|
421
|
+
version: '4'
|
|
430
422
|
- !ruby/object:Gem::Dependency
|
|
431
|
-
name:
|
|
423
|
+
name: voxpupuli-rubocop
|
|
424
|
+
requirement: !ruby/object:Gem::Requirement
|
|
425
|
+
requirements:
|
|
426
|
+
- - "~>"
|
|
427
|
+
- !ruby/object:Gem::Version
|
|
428
|
+
version: 5.0.0
|
|
429
|
+
type: :development
|
|
430
|
+
prerelease: false
|
|
431
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
432
|
+
requirements:
|
|
433
|
+
- - "~>"
|
|
434
|
+
- !ruby/object:Gem::Version
|
|
435
|
+
version: 5.0.0
|
|
436
|
+
- !ruby/object:Gem::Dependency
|
|
437
|
+
name: minitar
|
|
432
438
|
requirement: !ruby/object:Gem::Requirement
|
|
433
439
|
requirements:
|
|
434
440
|
- - ">="
|
|
435
441
|
- !ruby/object:Gem::Version
|
|
436
|
-
version: '
|
|
442
|
+
version: '0.6'
|
|
437
443
|
- - "<"
|
|
438
444
|
- !ruby/object:Gem::Version
|
|
439
|
-
version: '
|
|
440
|
-
type: :
|
|
445
|
+
version: '2.0'
|
|
446
|
+
type: :runtime
|
|
441
447
|
prerelease: false
|
|
442
448
|
version_requirements: !ruby/object:Gem::Requirement
|
|
443
449
|
requirements:
|
|
444
450
|
- - ">="
|
|
445
451
|
- !ruby/object:Gem::Version
|
|
446
|
-
version: '
|
|
452
|
+
version: '0.6'
|
|
447
453
|
- - "<"
|
|
448
454
|
- !ruby/object:Gem::Version
|
|
449
|
-
version: '
|
|
455
|
+
version: '2.0'
|
|
450
456
|
description: Execute commands remotely over SSH and WinRM
|
|
451
457
|
email:
|
|
452
458
|
- openvox@voxpupuli.org
|
|
@@ -549,7 +555,6 @@ files:
|
|
|
549
555
|
- lib/bolt/config/transport/local.rb
|
|
550
556
|
- lib/bolt/config/transport/lxd.rb
|
|
551
557
|
- lib/bolt/config/transport/options.rb
|
|
552
|
-
- lib/bolt/config/transport/orch.rb
|
|
553
558
|
- lib/bolt/config/transport/podman.rb
|
|
554
559
|
- lib/bolt/config/transport/remote.rb
|
|
555
560
|
- lib/bolt/config/transport/ssh.rb
|
|
@@ -649,8 +654,6 @@ files:
|
|
|
649
654
|
- lib/bolt/transport/local/connection.rb
|
|
650
655
|
- lib/bolt/transport/lxd.rb
|
|
651
656
|
- lib/bolt/transport/lxd/connection.rb
|
|
652
|
-
- lib/bolt/transport/orch.rb
|
|
653
|
-
- lib/bolt/transport/orch/connection.rb
|
|
654
657
|
- lib/bolt/transport/podman.rb
|
|
655
658
|
- lib/bolt/transport/podman/connection.rb
|
|
656
659
|
- lib/bolt/transport/remote.rb
|
|
@@ -665,23 +668,6 @@ files:
|
|
|
665
668
|
- lib/bolt/util/puppet_log_level.rb
|
|
666
669
|
- lib/bolt/validator.rb
|
|
667
670
|
- lib/bolt/version.rb
|
|
668
|
-
- lib/bolt_server/acl.rb
|
|
669
|
-
- lib/bolt_server/base_config.rb
|
|
670
|
-
- lib/bolt_server/config.rb
|
|
671
|
-
- lib/bolt_server/file_cache.rb
|
|
672
|
-
- lib/bolt_server/request_error.rb
|
|
673
|
-
- lib/bolt_server/schemas/action-check_node_connections.json
|
|
674
|
-
- lib/bolt_server/schemas/action-run_command.json
|
|
675
|
-
- lib/bolt_server/schemas/action-run_script.json
|
|
676
|
-
- lib/bolt_server/schemas/action-run_task.json
|
|
677
|
-
- lib/bolt_server/schemas/action-upload_file.json
|
|
678
|
-
- lib/bolt_server/schemas/partials/target-any.json
|
|
679
|
-
- lib/bolt_server/schemas/partials/target-ssh.json
|
|
680
|
-
- lib/bolt_server/schemas/partials/target-winrm.json
|
|
681
|
-
- lib/bolt_server/schemas/partials/task.json
|
|
682
|
-
- lib/bolt_server/schemas/transport-ssh.json
|
|
683
|
-
- lib/bolt_server/schemas/transport-winrm.json
|
|
684
|
-
- lib/bolt_server/transport_app.rb
|
|
685
671
|
- lib/bolt_spec/bolt_context.rb
|
|
686
672
|
- lib/bolt_spec/plans.rb
|
|
687
673
|
- lib/bolt_spec/plans/action_stubs.rb
|
|
@@ -729,7 +715,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
729
715
|
- !ruby/object:Gem::Version
|
|
730
716
|
version: '0'
|
|
731
717
|
requirements: []
|
|
732
|
-
rubygems_version: 3.6.
|
|
718
|
+
rubygems_version: 3.6.9
|
|
733
719
|
specification_version: 4
|
|
734
720
|
summary: Execute commands remotely over SSH and WinRM
|
|
735
721
|
test_files: []
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative '../../../bolt/error'
|
|
4
|
-
require_relative '../../../bolt/config/transport/base'
|
|
5
|
-
|
|
6
|
-
module Bolt
|
|
7
|
-
class Config
|
|
8
|
-
module Transport
|
|
9
|
-
class Orch < Base
|
|
10
|
-
OPTIONS = %w[
|
|
11
|
-
cacert
|
|
12
|
-
host
|
|
13
|
-
job-poll-interval
|
|
14
|
-
job-poll-timeout
|
|
15
|
-
read-timeout
|
|
16
|
-
service-url
|
|
17
|
-
task-environment
|
|
18
|
-
token-file
|
|
19
|
-
].freeze
|
|
20
|
-
|
|
21
|
-
DEFAULTS = {
|
|
22
|
-
"task-environment" => "production"
|
|
23
|
-
}.freeze
|
|
24
|
-
|
|
25
|
-
private def validate
|
|
26
|
-
super
|
|
27
|
-
|
|
28
|
-
if @config['cacert']
|
|
29
|
-
@config['cacert'] = File.expand_path(@config['cacert'], @project)
|
|
30
|
-
Bolt::Util.validate_file('cacert', @config['cacert'])
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
if @config['token-file']
|
|
34
|
-
@config['token-file'] = File.expand_path(@config['token-file'], @project)
|
|
35
|
-
Bolt::Util.validate_file('token-file', @config['token-file'])
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Bolt
|
|
4
|
-
module Transport
|
|
5
|
-
class Orch < Base
|
|
6
|
-
class Connection
|
|
7
|
-
attr_reader :logger, :key
|
|
8
|
-
|
|
9
|
-
CONTEXT_KEYS = Set.new(%i[plan_name description params sensitive]).freeze
|
|
10
|
-
|
|
11
|
-
def self.get_key(opts)
|
|
12
|
-
[
|
|
13
|
-
opts['service-url'],
|
|
14
|
-
opts['task-environment'],
|
|
15
|
-
opts['token-file']
|
|
16
|
-
].join('-')
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def initialize(opts, plan_context, logger)
|
|
20
|
-
require 'addressable/uri'
|
|
21
|
-
|
|
22
|
-
@logger = logger
|
|
23
|
-
@key = self.class.get_key(opts)
|
|
24
|
-
client_opts = opts.slice('token-file', 'cacert', 'job-poll-interval', 'job-poll-timeout', 'read-timeout')
|
|
25
|
-
|
|
26
|
-
if opts['service-url']
|
|
27
|
-
uri = Addressable::URI.parse(opts['service-url'])
|
|
28
|
-
uri&.port ||= 8143
|
|
29
|
-
client_opts['service-url'] = uri.to_s
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
client_opts['User-Agent'] = "Bolt/#{VERSION}"
|
|
33
|
-
|
|
34
|
-
%w[token-file cacert].each do |f|
|
|
35
|
-
client_opts[f] = File.expand_path(client_opts[f]) if client_opts[f]
|
|
36
|
-
end
|
|
37
|
-
logger.debug("Creating orchestrator client for #{client_opts}")
|
|
38
|
-
@client = OrchestratorClient.new(client_opts, true)
|
|
39
|
-
@plan_context = plan_context
|
|
40
|
-
@plan_job = start_plan(@plan_context)
|
|
41
|
-
logger.debug("Started plan #{@plan_job}")
|
|
42
|
-
@environment = opts["task-environment"]
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def start_plan(plan_context)
|
|
46
|
-
if plan_context
|
|
47
|
-
begin
|
|
48
|
-
opts = plan_context.select { |k, _| CONTEXT_KEYS.include? k }
|
|
49
|
-
opts[:params] = opts[:params].reject { |k, _| plan_context[:sensitive].include?(k) }
|
|
50
|
-
@client.command.plan_start(opts)['name']
|
|
51
|
-
rescue OrchestratorClient::ApiError => e
|
|
52
|
-
if e.code == '404'
|
|
53
|
-
@logger.debug("Orchestrator #{key} does not support plans")
|
|
54
|
-
else
|
|
55
|
-
@logger.error("Failed to start a plan with orchestrator #{key}: #{e.message}")
|
|
56
|
-
end
|
|
57
|
-
nil
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def finish_plan(plan_result)
|
|
63
|
-
if @plan_job
|
|
64
|
-
@client.command.plan_finish(
|
|
65
|
-
plan_job: @plan_job,
|
|
66
|
-
result: plan_result.value || '',
|
|
67
|
-
status: plan_result.status
|
|
68
|
-
)
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def get_certnames(targets)
|
|
73
|
-
targets.map { |t| t.host || t.name }
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def build_request(targets, task, arguments, description = nil)
|
|
77
|
-
body = { task: task.name,
|
|
78
|
-
environment: @environment,
|
|
79
|
-
noop: arguments['_noop'],
|
|
80
|
-
params: arguments.reject { |k, _| k.start_with?('_') },
|
|
81
|
-
scope: {
|
|
82
|
-
nodes: get_certnames(targets)
|
|
83
|
-
} }
|
|
84
|
-
body[:description] = description if description
|
|
85
|
-
body[:plan_job] = @plan_job if @plan_job
|
|
86
|
-
body
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def run_task(targets, task, arguments, options)
|
|
90
|
-
body = build_request(targets, task, arguments, options[:description])
|
|
91
|
-
@client.run_task(body)
|
|
92
|
-
rescue OrchestratorClient::ApiError => e
|
|
93
|
-
if e.data['kind'] == 'puppetlabs.orchestrator/plan-already-finished'
|
|
94
|
-
@logger.debug("Retrying the task")
|
|
95
|
-
# Instead of recursing, just retry once
|
|
96
|
-
@plan_job = start_plan(@plan_context)
|
|
97
|
-
# Rebuild the request with the new plan job ID
|
|
98
|
-
body = build_request(targets, task, arguments, options[:description])
|
|
99
|
-
@client.run_task(body)
|
|
100
|
-
else
|
|
101
|
-
raise e
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def query_inventory(targets)
|
|
106
|
-
@client.post('inventory', nodes: get_certnames(targets))
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
end
|