bolt 2.31.0 → 2.35.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.

Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/Puppetfile +7 -7
  3. data/bolt-modules/boltlib/lib/puppet/functions/catch_errors.rb +1 -3
  4. data/bolt-modules/boltlib/lib/puppet/functions/download_file.rb +17 -6
  5. data/bolt-modules/boltlib/lib/puppet/functions/facts.rb +6 -0
  6. data/bolt-modules/boltlib/lib/puppet/functions/parallelize.rb +56 -0
  7. data/bolt-modules/boltlib/lib/puppet/functions/puppetdb_query.rb +2 -2
  8. data/bolt-modules/boltlib/lib/puppet/functions/run_command.rb +24 -6
  9. data/bolt-modules/boltlib/lib/puppet/functions/run_script.rb +27 -8
  10. data/bolt-modules/boltlib/lib/puppet/functions/run_task.rb +21 -1
  11. data/bolt-modules/boltlib/lib/puppet/functions/run_task_with.rb +18 -1
  12. data/bolt-modules/boltlib/lib/puppet/functions/upload_file.rb +24 -6
  13. data/bolt-modules/out/lib/puppet/functions/out/message.rb +44 -1
  14. data/bolt-modules/prompt/lib/puppet/functions/prompt.rb +3 -0
  15. data/guides/logging.txt +18 -0
  16. data/guides/module.txt +19 -0
  17. data/guides/modulepath.txt +25 -0
  18. data/lib/bolt/bolt_option_parser.rb +6 -1
  19. data/lib/bolt/cli.rb +70 -144
  20. data/lib/bolt/config/options.rb +35 -17
  21. data/lib/bolt/config/transport/options.rb +1 -1
  22. data/lib/bolt/error.rb +37 -3
  23. data/lib/bolt/executor.rb +111 -13
  24. data/lib/bolt/inventory/group.rb +2 -1
  25. data/lib/bolt/module_installer.rb +71 -115
  26. data/lib/bolt/{puppetfile → module_installer}/installer.rb +3 -2
  27. data/lib/bolt/module_installer/puppetfile.rb +117 -0
  28. data/lib/bolt/module_installer/puppetfile/forge_module.rb +54 -0
  29. data/lib/bolt/module_installer/puppetfile/git_module.rb +37 -0
  30. data/lib/bolt/module_installer/puppetfile/module.rb +26 -0
  31. data/lib/bolt/module_installer/resolver.rb +76 -0
  32. data/lib/bolt/module_installer/specs.rb +93 -0
  33. data/lib/bolt/module_installer/specs/forge_spec.rb +85 -0
  34. data/lib/bolt/module_installer/specs/git_spec.rb +179 -0
  35. data/lib/bolt/outputter.rb +0 -47
  36. data/lib/bolt/outputter/human.rb +23 -11
  37. data/lib/bolt/outputter/json.rb +1 -1
  38. data/lib/bolt/pal.rb +48 -30
  39. data/lib/bolt/pal/yaml_plan.rb +11 -2
  40. data/lib/bolt/pal/yaml_plan/evaluator.rb +23 -1
  41. data/lib/bolt/pal/yaml_plan/loader.rb +14 -9
  42. data/lib/bolt/plan_creator.rb +160 -0
  43. data/lib/bolt/plugin.rb +1 -1
  44. data/lib/bolt/project.rb +5 -10
  45. data/lib/bolt/project_migrator/config.rb +2 -1
  46. data/lib/bolt/project_migrator/inventory.rb +2 -2
  47. data/lib/bolt/project_migrator/modules.rb +10 -8
  48. data/lib/bolt/puppetdb/client.rb +3 -2
  49. data/lib/bolt/puppetdb/config.rb +8 -6
  50. data/lib/bolt/result.rb +23 -11
  51. data/lib/bolt/shell/bash.rb +11 -6
  52. data/lib/bolt/shell/powershell.rb +12 -7
  53. data/lib/bolt/task/run.rb +1 -1
  54. data/lib/bolt/transport/base.rb +18 -18
  55. data/lib/bolt/transport/docker.rb +23 -6
  56. data/lib/bolt/transport/orch.rb +23 -19
  57. data/lib/bolt/transport/orch/connection.rb +10 -3
  58. data/lib/bolt/transport/remote.rb +3 -3
  59. data/lib/bolt/transport/simple.rb +6 -6
  60. data/lib/bolt/util.rb +5 -0
  61. data/lib/bolt/version.rb +1 -1
  62. data/lib/bolt/yarn.rb +23 -0
  63. data/lib/bolt_server/file_cache.rb +2 -0
  64. data/lib/bolt_server/schemas/partials/task.json +17 -2
  65. data/lib/bolt_server/transport_app.rb +38 -7
  66. data/lib/bolt_spec/plans/action_stubs/command_stub.rb +1 -1
  67. data/lib/bolt_spec/plans/action_stubs/script_stub.rb +1 -1
  68. data/lib/bolt_spec/plans/mock_executor.rb +9 -6
  69. metadata +25 -8
  70. data/lib/bolt/puppetfile.rb +0 -149
  71. data/lib/bolt/puppetfile/module.rb +0 -93
  72. data/modules/secure_env_vars/plans/init.pp +0 -20
@@ -17,13 +17,20 @@ module Bolt
17
17
  end
18
18
 
19
19
  def initialize(opts, plan_context, logger)
20
+ require 'addressable/uri'
21
+
20
22
  @logger = logger
21
23
  @key = self.class.get_key(opts)
22
- client_keys = %w[service-url token-file cacert job-poll-interval job-poll-timeout]
23
- client_opts = client_keys.each_with_object({}) do |k, acc|
24
- acc[k] = opts[k] if opts.include?(k)
24
+ client_opts = opts.slice('token-file', 'cacert', 'job-poll-interval', 'job-poll-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
25
30
  end
31
+
26
32
  client_opts['User-Agent'] = "Bolt/#{VERSION}"
33
+
27
34
  %w[token-file cacert].each do |f|
28
35
  client_opts[f] = File.expand_path(client_opts[f]) if client_opts[f]
29
36
  end
@@ -26,14 +26,14 @@ module Bolt
26
26
  end
27
27
 
28
28
  # Cannot batch because arugments differ
29
- def run_task(target, task, arguments, options = {})
29
+ def run_task(target, task, arguments, options = {}, position = [])
30
30
  proxy_target = get_proxy(target)
31
31
  transport = @executor.transport(proxy_target.transport)
32
- arguments = arguments.merge('_target' => target.to_h.reject { |_, v| v.nil? })
32
+ arguments = arguments.merge('_target' => target.to_h.compact)
33
33
 
34
34
  remote_task = task.remote_instance
35
35
 
36
- result = transport.run_task(proxy_target, remote_task, arguments, options)
36
+ result = transport.run_task(proxy_target, remote_task, arguments, options, position)
37
37
  Bolt::Result.new(target, value: result.value, action: 'task', object: task.name)
38
38
  end
39
39
  end
@@ -20,9 +20,9 @@ module Bolt
20
20
  false
21
21
  end
22
22
 
23
- def run_command(target, command, options = {})
23
+ def run_command(target, command, options = {}, position = [])
24
24
  with_connection(target) do |conn|
25
- conn.shell.run_command(command, options)
25
+ conn.shell.run_command(command, options, position)
26
26
  end
27
27
  end
28
28
 
@@ -38,15 +38,15 @@ module Bolt
38
38
  end
39
39
  end
40
40
 
41
- def run_script(target, script, arguments, options = {})
41
+ def run_script(target, script, arguments, options = {}, position = [])
42
42
  with_connection(target) do |conn|
43
- conn.shell.run_script(script, arguments, options)
43
+ conn.shell.run_script(script, arguments, options, position)
44
44
  end
45
45
  end
46
46
 
47
- def run_task(target, task, arguments, options = {})
47
+ def run_task(target, task, arguments, options = {}, position = [])
48
48
  with_connection(target) do |conn|
49
- conn.shell.run_task(task, arguments, options)
49
+ conn.shell.run_task(task, arguments, options, position)
50
50
  end
51
51
  end
52
52
  end
@@ -273,6 +273,11 @@ module Bolt
273
273
  !!File::ALT_SEPARATOR
274
274
  end
275
275
 
276
+ # Returns true if running in PowerShell.
277
+ def powershell?
278
+ !!ENV['PSModulePath']
279
+ end
280
+
276
281
  # Accept hash and return hash with top level keys of type "String" converted to symbols.
277
282
  def symbolize_top_level_keys(hsh)
278
283
  hsh.each_with_object({}) { |(k, v), h| k.is_a?(String) ? h[k.to_sym] = v : h[k] = v }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bolt
4
- VERSION = '2.31.0'
4
+ VERSION = '2.35.0'
5
5
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fiber'
4
+
5
+ module Bolt
6
+ class Yarn
7
+ attr_reader :fiber, :value, :index
8
+
9
+ def initialize(fiber, index)
10
+ @fiber = fiber
11
+ @index = index
12
+ @value = nil
13
+ end
14
+
15
+ def alive?
16
+ fiber.alive?
17
+ end
18
+
19
+ def resume
20
+ @value = fiber.resume
21
+ end
22
+ end
23
+ end
@@ -63,6 +63,7 @@ module BoltServer
63
63
  end
64
64
 
65
65
  def client
66
+ # rubocop:disable Naming/VariableNumber
66
67
  @client ||= begin
67
68
  uri = URI(@config['file-server-uri'])
68
69
  https = Net::HTTP.new(uri.host, uri.port)
@@ -75,6 +76,7 @@ module BoltServer
75
76
  https.open_timeout = @config['file-server-conn-timeout']
76
77
  https
77
78
  end
79
+ # rubocop:enable Naming/VariableNumber
78
80
  end
79
81
 
80
82
  def request_file(path, params, file)
@@ -63,9 +63,24 @@
63
63
  "environment": {
64
64
  "description": "Environment the task is in",
65
65
  "type": "string"
66
+ },
67
+ "project": {
68
+ "description": "Project the task is in",
69
+ "type": "string"
66
70
  }
67
71
  },
68
- "required": ["environment"],
72
+ "oneOf": [
73
+ {
74
+ "required": [
75
+ "environment"
76
+ ]
77
+ },
78
+ {
79
+ "required": [
80
+ "project"
81
+ ]
82
+ }
83
+ ],
69
84
  "additionalProperties": true
70
85
  }
71
86
  },
@@ -90,5 +105,5 @@
90
105
  }
91
106
  },
92
107
  "required": ["name", "files"],
93
- "additionalProperties": false
108
+ "additionalProperties": true
94
109
  }
@@ -48,6 +48,10 @@ module BoltServer
48
48
  # See the `orchestrator.bolt.codedir` tk config setting.
49
49
  DEFAULT_BOLT_CODEDIR = '/opt/puppetlabs/server/data/orchestration-services/code'
50
50
 
51
+ MISSING_PROJECT_REF_RESPONSE = [
52
+ 400, Bolt::ValidationError.new('`project_ref` is a required argument').to_json
53
+ ].freeze
54
+
51
55
  def initialize(config)
52
56
  @config = config
53
57
  @schemas = Hash[REQUEST_SCHEMAS.map do |basename|
@@ -261,13 +265,16 @@ module BoltServer
261
265
  end
262
266
  end
263
267
 
264
- def in_bolt_project(bolt_project)
265
- return [400, '`project_ref` is a required argument'] if bolt_project.nil?
266
- project_dir = File.join(@config['projects-dir'], bolt_project)
267
- return [400, "`project_ref`: #{project_dir} does not exist"] unless Dir.exist?(project_dir)
268
+ def config_from_project(project_ref)
269
+ project_dir = File.join(@config['projects-dir'], project_ref)
270
+ raise Bolt::ValidationError, "`project_ref`: #{project_dir} does not exist" unless Dir.exist?(project_dir)
271
+ project = Bolt::Project.create_project(project_dir)
272
+ Bolt::Config.from_project(project, { log: { 'bolt-debug.log' => 'disable' } })
273
+ end
274
+
275
+ def in_bolt_project(project_ref)
268
276
  @pal_mutex.synchronize do
269
- project = Bolt::Project.create_project(project_dir)
270
- bolt_config = Bolt::Config.from_project(project, { log: { 'bolt-debug.log' => 'disable' } })
277
+ bolt_config = config_from_project(project_ref)
271
278
  modulepath_object = Bolt::Config::Modulepath.new(
272
279
  bolt_config.modulepath,
273
280
  boltlib_path: [PE_BOLTLIB_PATH, Bolt::Config::Modulepath::BOLTLIB_PATH]
@@ -508,6 +515,7 @@ module BoltServer
508
515
  #
509
516
  # @param project_ref [String] the project to fetch the plan from
510
517
  get '/project_plans/:module_name/:plan_name' do
518
+ return MISSING_PROJECT_REF_RESPONSE if params['project_ref'].nil?
511
519
  in_bolt_project(params['project_ref']) do |context|
512
520
  plan_info = pe_plan_info(context[:pal], params[:module_name], params[:plan_name])
513
521
  plan_info = allowed_helper(plan_info, context[:config].project.plans)
@@ -532,6 +540,7 @@ module BoltServer
532
540
  #
533
541
  # @param bolt_project_ref [String] the reference to the bolt-project directory to load task metadata from
534
542
  get '/project_tasks/:module_name/:task_name' do
543
+ return MISSING_PROJECT_REF_RESPONSE if params['project_ref'].nil?
535
544
  in_bolt_project(params['project_ref']) do |context|
536
545
  ps_parameters = {
537
546
  'project' => params['project_ref']
@@ -570,6 +579,7 @@ module BoltServer
570
579
  #
571
580
  # @param project_ref [String] the project to fetch the list of plans from
572
581
  get '/project_plans' do
582
+ return MISSING_PROJECT_REF_RESPONSE if params['project_ref'].nil?
573
583
  in_bolt_project(params['project_ref']) do |context|
574
584
  plans_response = plan_list(context[:pal])
575
585
 
@@ -603,6 +613,7 @@ module BoltServer
603
613
  #
604
614
  # @param project_ref [String] the project to fetch the list of tasks from
605
615
  get '/project_tasks' do
616
+ return MISSING_PROJECT_REF_RESPONSE if params['project_ref'].nil?
606
617
  in_bolt_project(params['project_ref']) do |context|
607
618
  tasks_response = task_list(context[:pal])
608
619
 
@@ -621,6 +632,7 @@ module BoltServer
621
632
  #
622
633
  # @param project_ref [String] the project_ref to fetch the file metadatas from
623
634
  get '/project_file_metadatas/:module_name/*' do
635
+ return MISSING_PROJECT_REF_RESPONSE if params['project_ref'].nil?
624
636
  in_bolt_project(params['project_ref']) do |context|
625
637
  file = params[:splat].first
626
638
  metadatas = file_metadatas(context[:pal], params[:module_name], file)
@@ -630,13 +642,32 @@ module BoltServer
630
642
  [400, e.message]
631
643
  end
632
644
 
645
+ # Returns a list of targets parsed from a Project inventory
646
+ #
647
+ # @param project_ref [String] the project_ref to compute the inventory from
648
+ get '/project_inventory_targets' do
649
+ return MISSING_PROJECT_REF_RESPONSE if params['project_ref'].nil?
650
+ bolt_config = config_from_project(params['project_ref'])
651
+ if bolt_config.inventoryfile && bolt_config.project.inventory_file.to_s != bolt_config.inventoryfile
652
+ raise Bolt::ValidationError, "Project inventory must be defined in the " \
653
+ "inventory.yaml file at the root of the project directory"
654
+ end
655
+ plugins = Bolt::Plugin.setup(bolt_config, nil)
656
+ inventory = Bolt::Inventory.from_config(bolt_config, plugins)
657
+ target_list = inventory.get_targets('all').map { |targ| targ.to_h.merge({ 'transport' => targ.transport }) }
658
+
659
+ [200, target_list.to_json]
660
+ rescue Bolt::Error => e
661
+ [500, e.to_json]
662
+ end
663
+
633
664
  error 404 do
634
665
  err = Bolt::Error.new("Could not find route #{request.path}",
635
666
  'boltserver/not-found')
636
667
  [404, err.to_json]
637
668
  end
638
669
 
639
- error 500 do
670
+ error StandardError do
640
671
  e = env['sinatra.error']
641
672
  err = Bolt::Error.new("500: Unknown error: #{e.message}",
642
673
  'boltserver/server-error')
@@ -29,7 +29,7 @@ module BoltSpec
29
29
  end
30
30
 
31
31
  def result_for(target, stdout: '', stderr: '')
32
- Bolt::Result.for_command(target, stdout, stderr, 0, 'command', '')
32
+ Bolt::Result.for_command(target, stdout, stderr, 0, 'command', '', [])
33
33
  end
34
34
 
35
35
  # Public methods
@@ -35,7 +35,7 @@ module BoltSpec
35
35
  end
36
36
 
37
37
  def result_for(target, stdout: '', stderr: '')
38
- Bolt::Result.for_command(target, stdout, stderr, 0, 'script', '')
38
+ Bolt::Result.for_command(target, stdout, stderr, 0, 'script', '', [])
39
39
  end
40
40
 
41
41
  # Public methods
@@ -17,12 +17,13 @@ module BoltSpec
17
17
 
18
18
  # Nothing on the executor is 'public'
19
19
  class MockExecutor
20
- attr_reader :noop, :error_message
20
+ attr_reader :noop, :error_message, :in_parallel
21
21
  attr_accessor :run_as, :transport_features, :execute_any_plan
22
22
 
23
23
  def initialize(modulepath)
24
24
  @noop = false
25
25
  @run_as = nil
26
+ @in_parallel = false
26
27
  @error_message = nil
27
28
  @allow_apply = false
28
29
  @modulepath = [modulepath].flatten.map { |path| File.absolute_path(path) }
@@ -48,7 +49,7 @@ module BoltSpec
48
49
  ([segments[0]] + segments[2..-1]).join('/')
49
50
  end
50
51
 
51
- def run_command(targets, command, options = {})
52
+ def run_command(targets, command, options = {}, _position = [])
52
53
  result = nil
53
54
  if (doub = @command_doubles[command] || @command_doubles[:default])
54
55
  result = doub.process(targets, command, options)
@@ -61,7 +62,7 @@ module BoltSpec
61
62
  result
62
63
  end
63
64
 
64
- def run_script(targets, script_path, arguments, options = {})
65
+ def run_script(targets, script_path, arguments, options = {}, _position = [])
65
66
  script = module_file_id(script_path)
66
67
  result = nil
67
68
  if (doub = @script_doubles[script] || @script_doubles[:default])
@@ -76,7 +77,7 @@ module BoltSpec
76
77
  result
77
78
  end
78
79
 
79
- def run_task(targets, task, arguments, options = {})
80
+ def run_task(targets, task, arguments, options = {}, _position = [])
80
81
  result = nil
81
82
  if (doub = @task_doubles[task.name] || @task_doubles[:default])
82
83
  result = doub.process(targets, task.name, arguments, options)
@@ -90,7 +91,7 @@ module BoltSpec
90
91
  result
91
92
  end
92
93
 
93
- def download_file(targets, source, destination, options = {})
94
+ def download_file(targets, source, destination, options = {}, _position = [])
94
95
  result = nil
95
96
  if (doub = @download_doubles[source] || @download_doubles[:default])
96
97
  result = doub.process(targets, source, destination, options)
@@ -103,7 +104,7 @@ module BoltSpec
103
104
  result
104
105
  end
105
106
 
106
- def upload_file(targets, source_path, destination, options = {})
107
+ def upload_file(targets, source_path, destination, options = {}, _position = [])
107
108
  source = module_file_id(source_path)
108
109
  result = nil
109
110
  if (doub = @upload_doubles[source] || @upload_doubles[:default])
@@ -133,6 +134,7 @@ module BoltSpec
133
134
  # through to another conditional statement
134
135
  doub = @plan_doubles[plan_name] || @plan_doubles[:default]
135
136
 
137
+ # rubocop:disable Lint/DuplicateBranch
136
138
  # High level:
137
139
  # - If we've explicitly allowed execution of the plan (normally the main plan
138
140
  # passed into BoltSpec::Plan::run_plan()), then execute it
@@ -165,6 +167,7 @@ module BoltSpec
165
167
  @error_message = "Unexpected call to 'run_plan(#{plan_name}, #{params_str})'"
166
168
  raise UnexpectedInvocation, @error_message
167
169
  end
170
+ # rubocop:enable Lint/DuplicateBranch
168
171
  result
169
172
  end
170
173
 
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.31.0
4
+ version: 2.35.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-10-19 00:00:00.000000000 Z
11
+ date: 2020-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -182,16 +182,22 @@ dependencies:
182
182
  name: puppet
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - '='
185
+ - - ">="
186
186
  - !ruby/object:Gem::Version
187
187
  version: 6.18.0
188
+ - - "<"
189
+ - !ruby/object:Gem::Version
190
+ version: '6.20'
188
191
  type: :runtime
189
192
  prerelease: false
190
193
  version_requirements: !ruby/object:Gem::Requirement
191
194
  requirements:
192
- - - '='
195
+ - - ">="
193
196
  - !ruby/object:Gem::Version
194
197
  version: 6.18.0
198
+ - - "<"
199
+ - !ruby/object:Gem::Version
200
+ version: '6.20'
195
201
  - !ruby/object:Gem::Dependency
196
202
  name: puppetfile-resolver
197
203
  requirement: !ruby/object:Gem::Requirement
@@ -398,6 +404,7 @@ files:
398
404
  - bolt-modules/boltlib/lib/puppet/functions/get_resources.rb
399
405
  - bolt-modules/boltlib/lib/puppet/functions/get_target.rb
400
406
  - bolt-modules/boltlib/lib/puppet/functions/get_targets.rb
407
+ - bolt-modules/boltlib/lib/puppet/functions/parallelize.rb
401
408
  - bolt-modules/boltlib/lib/puppet/functions/puppetdb_fact.rb
402
409
  - bolt-modules/boltlib/lib/puppet/functions/puppetdb_query.rb
403
410
  - bolt-modules/boltlib/lib/puppet/functions/remove_from_group.rb
@@ -432,6 +439,9 @@ files:
432
439
  - bolt-modules/system/lib/puppet/functions/system/env.rb
433
440
  - exe/bolt
434
441
  - guides/inventory.txt
442
+ - guides/logging.txt
443
+ - guides/module.txt
444
+ - guides/modulepath.txt
435
445
  - guides/project.txt
436
446
  - lib/bolt.rb
437
447
  - lib/bolt/analytics.rb
@@ -463,6 +473,15 @@ files:
463
473
  - lib/bolt/logger.rb
464
474
  - lib/bolt/module.rb
465
475
  - lib/bolt/module_installer.rb
476
+ - lib/bolt/module_installer/installer.rb
477
+ - lib/bolt/module_installer/puppetfile.rb
478
+ - lib/bolt/module_installer/puppetfile/forge_module.rb
479
+ - lib/bolt/module_installer/puppetfile/git_module.rb
480
+ - lib/bolt/module_installer/puppetfile/module.rb
481
+ - lib/bolt/module_installer/resolver.rb
482
+ - lib/bolt/module_installer/specs.rb
483
+ - lib/bolt/module_installer/specs/forge_spec.rb
484
+ - lib/bolt/module_installer/specs/git_spec.rb
466
485
  - lib/bolt/node/errors.rb
467
486
  - lib/bolt/node/output.rb
468
487
  - lib/bolt/outputter.rb
@@ -488,6 +507,7 @@ files:
488
507
  - lib/bolt/pal/yaml_plan/step/task.rb
489
508
  - lib/bolt/pal/yaml_plan/step/upload.rb
490
509
  - lib/bolt/pal/yaml_plan/transpiler.rb
510
+ - lib/bolt/plan_creator.rb
491
511
  - lib/bolt/plan_result.rb
492
512
  - lib/bolt/plugin.rb
493
513
  - lib/bolt/plugin/env_var.rb
@@ -504,9 +524,6 @@ files:
504
524
  - lib/bolt/puppetdb.rb
505
525
  - lib/bolt/puppetdb/client.rb
506
526
  - lib/bolt/puppetdb/config.rb
507
- - lib/bolt/puppetfile.rb
508
- - lib/bolt/puppetfile/installer.rb
509
- - lib/bolt/puppetfile/module.rb
510
527
  - lib/bolt/r10k_log_proxy.rb
511
528
  - lib/bolt/rerun.rb
512
529
  - lib/bolt/resource_instance.rb
@@ -539,6 +556,7 @@ files:
539
556
  - lib/bolt/util.rb
540
557
  - lib/bolt/util/puppet_log_level.rb
541
558
  - lib/bolt/version.rb
559
+ - lib/bolt/yarn.rb
542
560
  - lib/bolt_server/acl.rb
543
561
  - lib/bolt_server/base_config.rb
544
562
  - lib/bolt_server/config.rb
@@ -583,7 +601,6 @@ files:
583
601
  - modules/canary/lib/puppet/functions/canary/skip.rb
584
602
  - modules/canary/plans/init.pp
585
603
  - modules/puppetdb_fact/plans/init.pp
586
- - modules/secure_env_vars/plans/init.pp
587
604
  homepage: https://github.com/puppetlabs/bolt
588
605
  licenses:
589
606
  - Apache-2.0