bolt 2.19.0 → 2.24.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bolt might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Puppetfile +3 -1
- data/bolt-modules/boltlib/lib/puppet/functions/download_file.rb +123 -0
- data/bolt-modules/boltlib/lib/puppet/functions/run_plan.rb +6 -0
- data/bolt-modules/ctrl/lib/puppet/functions/ctrl/do_until.rb +12 -6
- data/bolt-modules/dir/lib/puppet/functions/dir/children.rb +35 -0
- data/bolt-modules/out/lib/puppet/functions/out/message.rb +1 -1
- data/exe/bolt +1 -0
- data/guides/inventory.txt +19 -0
- data/guides/project.txt +22 -0
- data/lib/bolt/analytics.rb +5 -5
- data/lib/bolt/applicator.rb +4 -3
- data/lib/bolt/bolt_option_parser.rb +100 -27
- data/lib/bolt/catalog.rb +12 -3
- data/lib/bolt/cli.rb +356 -156
- data/lib/bolt/config.rb +2 -2
- data/lib/bolt/config/options.rb +18 -4
- data/lib/bolt/executor.rb +30 -7
- data/lib/bolt/inventory/group.rb +6 -5
- data/lib/bolt/inventory/inventory.rb +4 -3
- data/lib/bolt/logger.rb +3 -4
- data/lib/bolt/module.rb +2 -1
- data/lib/bolt/outputter.rb +56 -0
- data/lib/bolt/outputter/human.rb +10 -9
- data/lib/bolt/outputter/json.rb +11 -4
- data/lib/bolt/outputter/logger.rb +2 -2
- data/lib/bolt/outputter/rainbow.rb +18 -2
- data/lib/bolt/pal.rb +13 -11
- data/lib/bolt/pal/yaml_plan/evaluator.rb +22 -1
- data/lib/bolt/pal/yaml_plan/step.rb +24 -2
- data/lib/bolt/pal/yaml_plan/step/download.rb +38 -0
- data/lib/bolt/pal/yaml_plan/step/message.rb +30 -0
- data/lib/bolt/pal/yaml_plan/step/upload.rb +3 -3
- data/lib/bolt/pal/yaml_plan/transpiler.rb +11 -3
- data/lib/bolt/plugin/prompt.rb +3 -3
- data/lib/bolt/plugin/puppetdb.rb +3 -2
- data/lib/bolt/project.rb +7 -4
- data/lib/bolt/project_migrate.rb +138 -0
- data/lib/bolt/puppetdb/client.rb +2 -0
- data/lib/bolt/puppetdb/config.rb +16 -0
- data/lib/bolt/result.rb +7 -0
- data/lib/bolt/shell/bash.rb +31 -11
- data/lib/bolt/shell/powershell.rb +10 -4
- data/lib/bolt/transport/base.rb +24 -0
- data/lib/bolt/transport/docker.rb +8 -0
- data/lib/bolt/transport/docker/connection.rb +28 -10
- data/lib/bolt/transport/local/connection.rb +15 -2
- data/lib/bolt/transport/orch.rb +15 -3
- data/lib/bolt/transport/simple.rb +6 -0
- data/lib/bolt/transport/ssh/connection.rb +13 -5
- data/lib/bolt/transport/ssh/exec_connection.rb +24 -3
- data/lib/bolt/transport/winrm/connection.rb +125 -15
- data/lib/bolt/util.rb +27 -12
- data/lib/bolt/util/puppet_log_level.rb +4 -3
- data/lib/bolt/version.rb +1 -1
- data/lib/bolt_server/base_config.rb +1 -1
- data/lib/bolt_server/pe/pal.rb +1 -1
- data/lib/bolt_server/transport_app.rb +79 -2
- data/lib/bolt_spec/bolt_context.rb +7 -2
- data/lib/bolt_spec/plans.rb +16 -3
- data/lib/bolt_spec/plans/action_stubs.rb +3 -2
- data/lib/bolt_spec/plans/action_stubs/download_stub.rb +66 -0
- data/lib/bolt_spec/plans/mock_executor.rb +14 -1
- data/lib/bolt_spec/run.rb +22 -0
- data/libexec/apply_catalog.rb +2 -2
- data/libexec/bolt_catalog +4 -3
- data/libexec/custom_facts.rb +1 -1
- data/libexec/query_resources.rb +1 -1
- data/modules/secure_env_vars/plans/init.pp +20 -0
- metadata +11 -2
@@ -41,6 +41,7 @@ require 'bolt/plugin'
|
|
41
41
|
# - allow_command(cmd), expect_command(cmd): expect the exact command
|
42
42
|
# - allow_script(script), expect_script(script): expect the script as <module>/path/to/file
|
43
43
|
# - allow_task(task), expect_task(task): expect the named task
|
44
|
+
# - allow_download(file), expect_download(file): expect the identified source file
|
44
45
|
# - allow_upload(file), expect_upload(file): expect the identified source file
|
45
46
|
# - allow_out_message, expect_out_message: expect a message to be passed to out::message (only modifiers are
|
46
47
|
# be_called_times(n), with_params(params), and not_be_called)
|
@@ -52,19 +53,22 @@ require 'bolt/plugin'
|
|
52
53
|
# - with_targets(targets): target or list of targets that you expect to be passed to the action
|
53
54
|
# - with_params(params): list of params and metaparams (or options) that you expect to be passed to the action.
|
54
55
|
# Corresponds to the action's last argument.
|
55
|
-
# - with_destination(dest): for upload_file, the expected destination path
|
56
|
+
# - with_destination(dest): for upload_file and download_file, the expected destination path
|
56
57
|
# - always_return(value): return a Bolt::ResultSet of Bolt::Result objects with the specified value Hash
|
57
58
|
# command and script: only accept 'stdout' and 'stderr' keys
|
58
59
|
# upload: does not support this modifier
|
60
|
+
# download: does not support this modifier
|
59
61
|
# - return_for_targets(targets_to_values): return a Bolt::ResultSet of Bolt::Result objects from the Hash mapping
|
60
62
|
# targets to their value Hashes
|
61
63
|
# command and script: only accept 'stdout' and 'stderr' keys
|
62
64
|
# upload: does not support this modifier
|
65
|
+
# download: does not support this modifier
|
63
66
|
# - return(&block): invoke the block to construct a Bolt::ResultSet. The blocks parameters differ based on action
|
64
67
|
# command: `{ |targets:, command:, params:| ... }`
|
65
68
|
# script: `{ |targets:, script:, params:| ... }`
|
66
69
|
# task: `{ |targets:, task:, params:| ... }`
|
67
70
|
# upload: `{ |targets:, source:, destination:, params:| ... }`
|
71
|
+
# download: `{ |targets:, source:, destination:, params:| ... }`
|
68
72
|
# - error_with(err): return a failing Bolt::ResultSet, with Bolt::Result objects with the identified err hash
|
69
73
|
#
|
70
74
|
# Example:
|
@@ -190,8 +194,9 @@ module BoltSpec
|
|
190
194
|
# so it probably should be set separately
|
191
195
|
# def allow_script(script_name)
|
192
196
|
#
|
193
|
-
# file uploads have a single destination and no arguments
|
197
|
+
# file uploads and downloads have a single destination and no arguments
|
194
198
|
# def allow_file_upload(source_name)
|
199
|
+
# def allow_file_download(source_name)
|
195
200
|
#
|
196
201
|
# Most of the information in commands is in the command string itself
|
197
202
|
# we may need more flexible allows than just the name/command string
|
data/lib/bolt_spec/plans.rb
CHANGED
@@ -80,6 +80,7 @@ require 'bolt/pal'
|
|
80
80
|
# - allow_plan(plan), expect_plan(plan): expect the named plan
|
81
81
|
# - allow_script(script), expect_script(script): expect the script as <module>/path/to/file
|
82
82
|
# - allow_task(task), expect_task(task): expect the named task
|
83
|
+
# - allow_download(file), expect_download(file): expect the identified source file
|
83
84
|
# - allow_upload(file), expect_upload(file): expect the identified source file
|
84
85
|
# - allow_apply_prep: allows `apply_prep` to be invoked in the plan but does not allow modifiers
|
85
86
|
# - allow_apply: allows `apply` to be invoked in the plan but does not allow modifiers
|
@@ -94,15 +95,17 @@ require 'bolt/pal'
|
|
94
95
|
# plan: does not support this modifier
|
95
96
|
# - with_params(params): list of params and metaparams (or options) that you expect to be passed to the action.
|
96
97
|
# Corresponds to the action's last argument.
|
97
|
-
# - with_destination(dest): for upload_file, the expected destination path
|
98
|
+
# - with_destination(dest): for upload_file and download_file, the expected destination path
|
98
99
|
# - always_return(value): return a Bolt::ResultSet of Bolt::Result objects with the specified value Hash
|
99
100
|
# plan: returns a Bolt::PlanResult with the specified value with a status of 'success'
|
100
101
|
# command and script: only accept 'stdout' and 'stderr' keys
|
101
102
|
# upload: does not support this modifier
|
103
|
+
# download: does not support this modifier
|
102
104
|
# - return_for_targets(targets_to_values): return a Bolt::ResultSet of Bolt::Result objects from the Hash mapping
|
103
105
|
# targets to their value Hashes
|
104
106
|
# command and script: only accept 'stdout' and 'stderr' keys
|
105
107
|
# upload: does not support this modifier
|
108
|
+
# download: does not support this modifier
|
106
109
|
# plan: does not support this modifier
|
107
110
|
# - return(&block): invoke the block to construct a Bolt::ResultSet. The blocks parameters differ based on action
|
108
111
|
# command: `{ |targets:, command:, params:| ... }`
|
@@ -110,6 +113,7 @@ require 'bolt/pal'
|
|
110
113
|
# script: `{ |targets:, script:, params:| ... }`
|
111
114
|
# task: `{ |targets:, task:, params:| ... }`
|
112
115
|
# upload: `{ |targets:, source:, destination:, params:| ... }`
|
116
|
+
# download: `{ |targets:, source:, destination:, params:| ... }`
|
113
117
|
# - error_with(err): return a failing Bolt::ResultSet, with Bolt::Result objects with the identified err hash
|
114
118
|
# plans will throw a Bolt::PlanFailure that will be returned as the value of
|
115
119
|
# the Bolt::PlanResult object with a status of 'failure'.
|
@@ -202,7 +206,7 @@ module BoltSpec
|
|
202
206
|
Puppet[:tasks] = true
|
203
207
|
|
204
208
|
# Ensure logger is initialized with Puppet levels so 'notice' works when running plan specs.
|
205
|
-
Logging.init :debug, :info, :notice, :warn, :error, :fatal, :any
|
209
|
+
Logging.init :trace, :debug, :info, :notice, :warn, :error, :fatal, :any
|
206
210
|
end
|
207
211
|
|
208
212
|
# Provided as a class so expectations can be placed on it.
|
@@ -219,7 +223,16 @@ module BoltSpec
|
|
219
223
|
end
|
220
224
|
|
221
225
|
def run_plan(name, params)
|
222
|
-
pal = Bolt::PAL.new(
|
226
|
+
pal = Bolt::PAL.new(
|
227
|
+
config.modulepath,
|
228
|
+
config.hiera_config,
|
229
|
+
config.project.resource_types,
|
230
|
+
config.compile_concurrency,
|
231
|
+
config.trusted_external,
|
232
|
+
config.apply_settings,
|
233
|
+
config.project
|
234
|
+
)
|
235
|
+
|
223
236
|
result = executor.with_plan_allowed_exec(name, params) do
|
224
237
|
pal.run_plan(name, params, executor, inventory, puppetdb_client)
|
225
238
|
end
|
@@ -118,7 +118,7 @@ module BoltSpec
|
|
118
118
|
# Restricts the stub to only match invocations with
|
119
119
|
# the correct targets
|
120
120
|
def with_targets(targets)
|
121
|
-
targets =
|
121
|
+
targets = Array(targets)
|
122
122
|
@invocation[:targets] = targets.map do |target|
|
123
123
|
if target.is_a? String
|
124
124
|
target
|
@@ -177,7 +177,7 @@ module BoltSpec
|
|
177
177
|
if data['msg'] && data['kind'] && (data.keys - %w[msg kind details issue_code]).empty?
|
178
178
|
@data[:default] = clazz.new(data['msg'], data['kind'], data['details'], data['issue_code'])
|
179
179
|
else
|
180
|
-
|
180
|
+
$stderr.puts "In the future 'error_with()' may require msg and kind, and " \
|
181
181
|
"optionally accept only details and issue_code."
|
182
182
|
@data[:default] = data
|
183
183
|
end
|
@@ -193,3 +193,4 @@ require_relative 'action_stubs/plan_stub'
|
|
193
193
|
require_relative 'action_stubs/script_stub'
|
194
194
|
require_relative 'action_stubs/task_stub'
|
195
195
|
require_relative 'action_stubs/upload_stub'
|
196
|
+
require_relative 'action_stubs/download_stub'
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BoltSpec
|
4
|
+
module Plans
|
5
|
+
class DownloadStub < ActionStub
|
6
|
+
def matches(targets, _source, destination, options)
|
7
|
+
if @invocation[:targets] && Set.new(@invocation[:targets]) != Set.new(targets.map(&:name))
|
8
|
+
return false
|
9
|
+
end
|
10
|
+
|
11
|
+
if @invocation[:destination] && destination != @invocation[:destination]
|
12
|
+
return false
|
13
|
+
end
|
14
|
+
|
15
|
+
if @invocation[:options] && options != @invocation[:options]
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(targets, source, destination, options)
|
23
|
+
@calls += 1
|
24
|
+
if @return_block
|
25
|
+
results = @return_block.call(targets: targets, source: source, destination: destination, params: options)
|
26
|
+
check_resultset(results, source)
|
27
|
+
else
|
28
|
+
results = targets.map do |target|
|
29
|
+
if @data[:default].is_a?(Bolt::Error)
|
30
|
+
default_for(target)
|
31
|
+
else
|
32
|
+
download = File.join(destination, Bolt::Util.windows_basename(source))
|
33
|
+
Bolt::Result.for_download(target, source, destination, download)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
Bolt::ResultSet.new(results)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def parameters
|
41
|
+
@invocation[:options]
|
42
|
+
end
|
43
|
+
|
44
|
+
def result_for(_target, _data)
|
45
|
+
raise 'Download result cannot be changed'
|
46
|
+
end
|
47
|
+
|
48
|
+
# Public methods
|
49
|
+
|
50
|
+
def always_return(_data)
|
51
|
+
raise 'Download result cannot be changed'
|
52
|
+
end
|
53
|
+
|
54
|
+
def with_destination(destination)
|
55
|
+
@invocation[:destination] = destination
|
56
|
+
self
|
57
|
+
end
|
58
|
+
|
59
|
+
def with_params(params)
|
60
|
+
@invocation[:options] = params.select { |k, _v| k.start_with?('_') }
|
61
|
+
.transform_keys { |k| k.sub(/^_/, '').to_sym }
|
62
|
+
self
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -11,7 +11,7 @@ require 'set'
|
|
11
11
|
|
12
12
|
module BoltSpec
|
13
13
|
module Plans
|
14
|
-
MOCKED_ACTIONS = %i[command plan script task upload].freeze
|
14
|
+
MOCKED_ACTIONS = %i[command download plan script task upload].freeze
|
15
15
|
|
16
16
|
class UnexpectedInvocation < ArgumentError; end
|
17
17
|
|
@@ -90,6 +90,19 @@ module BoltSpec
|
|
90
90
|
result
|
91
91
|
end
|
92
92
|
|
93
|
+
def download_file(targets, source, destination, options = {})
|
94
|
+
result = nil
|
95
|
+
if (doub = @download_doubles[source] || @download_doubles[:default])
|
96
|
+
result = doub.process(targets, source, destination, options)
|
97
|
+
end
|
98
|
+
unless result
|
99
|
+
targets = targets.map(&:name)
|
100
|
+
@error_message = "Unexpected call to 'download_file(#{source}, #{destination}, #{targets}, #{options})'"
|
101
|
+
raise UnexpectedInvocation, @error_message
|
102
|
+
end
|
103
|
+
result
|
104
|
+
end
|
105
|
+
|
93
106
|
def upload_file(targets, source_path, destination, options = {})
|
94
107
|
source = module_file_id(source_path)
|
95
108
|
result = nil
|
data/lib/bolt_spec/run.rb
CHANGED
@@ -80,6 +80,22 @@ module BoltSpec
|
|
80
80
|
Bolt::Util.walk_keys(result, &:to_s)
|
81
81
|
end
|
82
82
|
|
83
|
+
def download_file(source, dest, targets, options: {}, config: nil, inventory: nil)
|
84
|
+
if config.nil? && defined?(bolt_config)
|
85
|
+
config = bolt_config
|
86
|
+
end
|
87
|
+
|
88
|
+
if inventory.nil? && defined?(bolt_inventory)
|
89
|
+
inventory = bolt_inventory
|
90
|
+
end
|
91
|
+
|
92
|
+
result = BoltRunner.with_runner(config, inventory) do |runner|
|
93
|
+
runner.download_file(source, dest, targets, options)
|
94
|
+
end
|
95
|
+
result = result.to_a
|
96
|
+
Bolt::Util.walk_keys(result, &:to_s)
|
97
|
+
end
|
98
|
+
|
83
99
|
def upload_file(source, dest, targets, options: {}, config: nil, inventory: nil)
|
84
100
|
if config.nil? && defined?(bolt_config)
|
85
101
|
config = bolt_config
|
@@ -194,6 +210,12 @@ module BoltSpec
|
|
194
210
|
executor.run_script(targets, script, arguments, options)
|
195
211
|
end
|
196
212
|
|
213
|
+
def download_file(source, dest, targets, options = {})
|
214
|
+
executor = Bolt::Executor.new(config.concurrency, @analytics)
|
215
|
+
targets = inventory.get_targets(targets)
|
216
|
+
executor.download_file(targets, source, dest, options)
|
217
|
+
end
|
218
|
+
|
197
219
|
def upload_file(source, dest, targets, options = {})
|
198
220
|
executor = Bolt::Executor.new(config.concurrency, @analytics)
|
199
221
|
targets = inventory.get_targets(targets)
|
data/libexec/apply_catalog.rb
CHANGED
@@ -9,7 +9,7 @@ require 'puppet/module_tool/tar'
|
|
9
9
|
require 'securerandom'
|
10
10
|
require 'tempfile'
|
11
11
|
|
12
|
-
args = JSON.parse(ARGV[0] ? File.read(ARGV[0]) :
|
12
|
+
args = JSON.parse(ARGV[0] ? File.read(ARGV[0]) : $stdin.read)
|
13
13
|
|
14
14
|
# Create temporary directories for all core Puppet settings so we don't clobber
|
15
15
|
# existing state or read from puppet.conf. Also create a temporary modulepath.
|
@@ -110,7 +110,7 @@ ensure
|
|
110
110
|
begin
|
111
111
|
FileUtils.remove_dir(puppet_root)
|
112
112
|
rescue Errno::ENOTEMPTY => e
|
113
|
-
|
113
|
+
$stderr.puts("Could not cleanup temporary directory: #{e}")
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
data/libexec/bolt_catalog
CHANGED
@@ -32,14 +32,15 @@ require 'json'
|
|
32
32
|
# }
|
33
33
|
|
34
34
|
command = ARGV[0]
|
35
|
-
|
35
|
+
case command
|
36
|
+
when "parse"
|
36
37
|
code = File.open(ARGV[1], &:read)
|
37
38
|
puts JSON.pretty_generate(Bolt::Catalog.new.generate_ast(code, ARGV[1]))
|
38
|
-
|
39
|
+
when "compile"
|
39
40
|
request = if ARGV[1]
|
40
41
|
File.open(ARGV[1]) { |fh| JSON.parse(fh.read) }
|
41
42
|
else
|
42
|
-
JSON.parse(
|
43
|
+
JSON.parse($stdin.read)
|
43
44
|
end
|
44
45
|
begin
|
45
46
|
catalog = Bolt::Catalog.new.compile_catalog(request)
|
data/libexec/custom_facts.rb
CHANGED
data/libexec/query_resources.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
plan secure_env_vars(
|
2
|
+
TargetSpec $targets,
|
3
|
+
Optional[String] $command = undef,
|
4
|
+
Optional[String] $script = undef
|
5
|
+
) {
|
6
|
+
$env_vars = parsejson(system::env('BOLT_ENV_VARS'))
|
7
|
+
unless type($command) == Undef or type($script) == Undef {
|
8
|
+
fail_plan('Cannot specify both script and command for secure_env_vars')
|
9
|
+
}
|
10
|
+
|
11
|
+
return if $command {
|
12
|
+
run_command($command, $targets, '_env_vars' => $env_vars)
|
13
|
+
}
|
14
|
+
elsif $script {
|
15
|
+
run_script($script, $targets, '_env_vars' => $env_vars)
|
16
|
+
}
|
17
|
+
else {
|
18
|
+
fail_plan('Must specify either script or command for secure_env_vars')
|
19
|
+
}
|
20
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bolt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.24.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -398,6 +398,7 @@ files:
|
|
398
398
|
- bolt-modules/boltlib/lib/puppet/functions/add_to_group.rb
|
399
399
|
- bolt-modules/boltlib/lib/puppet/functions/apply_prep.rb
|
400
400
|
- bolt-modules/boltlib/lib/puppet/functions/catch_errors.rb
|
401
|
+
- bolt-modules/boltlib/lib/puppet/functions/download_file.rb
|
401
402
|
- bolt-modules/boltlib/lib/puppet/functions/facts.rb
|
402
403
|
- bolt-modules/boltlib/lib/puppet/functions/fail_plan.rb
|
403
404
|
- bolt-modules/boltlib/lib/puppet/functions/get_resources.rb
|
@@ -426,6 +427,7 @@ files:
|
|
426
427
|
- bolt-modules/boltlib/types/targetspec.pp
|
427
428
|
- bolt-modules/ctrl/lib/puppet/functions/ctrl/do_until.rb
|
428
429
|
- bolt-modules/ctrl/lib/puppet/functions/ctrl/sleep.rb
|
430
|
+
- bolt-modules/dir/lib/puppet/functions/dir/children.rb
|
429
431
|
- bolt-modules/file/lib/puppet/functions/file/exists.rb
|
430
432
|
- bolt-modules/file/lib/puppet/functions/file/join.rb
|
431
433
|
- bolt-modules/file/lib/puppet/functions/file/read.rb
|
@@ -435,6 +437,8 @@ files:
|
|
435
437
|
- bolt-modules/prompt/lib/puppet/functions/prompt.rb
|
436
438
|
- bolt-modules/system/lib/puppet/functions/system/env.rb
|
437
439
|
- exe/bolt
|
440
|
+
- guides/inventory.txt
|
441
|
+
- guides/project.txt
|
438
442
|
- lib/bolt.rb
|
439
443
|
- lib/bolt/analytics.rb
|
440
444
|
- lib/bolt/applicator.rb
|
@@ -479,7 +483,9 @@ files:
|
|
479
483
|
- lib/bolt/pal/yaml_plan/parameter.rb
|
480
484
|
- lib/bolt/pal/yaml_plan/step.rb
|
481
485
|
- lib/bolt/pal/yaml_plan/step/command.rb
|
486
|
+
- lib/bolt/pal/yaml_plan/step/download.rb
|
482
487
|
- lib/bolt/pal/yaml_plan/step/eval.rb
|
488
|
+
- lib/bolt/pal/yaml_plan/step/message.rb
|
483
489
|
- lib/bolt/pal/yaml_plan/step/plan.rb
|
484
490
|
- lib/bolt/pal/yaml_plan/step/resources.rb
|
485
491
|
- lib/bolt/pal/yaml_plan/step/script.rb
|
@@ -494,6 +500,7 @@ files:
|
|
494
500
|
- lib/bolt/plugin/puppetdb.rb
|
495
501
|
- lib/bolt/plugin/task.rb
|
496
502
|
- lib/bolt/project.rb
|
503
|
+
- lib/bolt/project_migrate.rb
|
497
504
|
- lib/bolt/puppetdb.rb
|
498
505
|
- lib/bolt/puppetdb/client.rb
|
499
506
|
- lib/bolt/puppetdb/config.rb
|
@@ -550,6 +557,7 @@ files:
|
|
550
557
|
- lib/bolt_spec/plans.rb
|
551
558
|
- lib/bolt_spec/plans/action_stubs.rb
|
552
559
|
- lib/bolt_spec/plans/action_stubs/command_stub.rb
|
560
|
+
- lib/bolt_spec/plans/action_stubs/download_stub.rb
|
553
561
|
- lib/bolt_spec/plans/action_stubs/plan_stub.rb
|
554
562
|
- lib/bolt_spec/plans/action_stubs/script_stub.rb
|
555
563
|
- lib/bolt_spec/plans/action_stubs/task_stub.rb
|
@@ -573,6 +581,7 @@ files:
|
|
573
581
|
- modules/canary/lib/puppet/functions/canary/skip.rb
|
574
582
|
- modules/canary/plans/init.pp
|
575
583
|
- modules/puppetdb_fact/plans/init.pp
|
584
|
+
- modules/secure_env_vars/plans/init.pp
|
576
585
|
homepage: https://github.com/puppetlabs/bolt
|
577
586
|
licenses:
|
578
587
|
- Apache-2.0
|