puppet 6.19.1 → 6.20.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +30 -25
  5. data/lib/puppet/application.rb +10 -6
  6. data/lib/puppet/application/agent.rb +1 -0
  7. data/lib/puppet/application/apply.rb +3 -2
  8. data/lib/puppet/application/device.rb +1 -0
  9. data/lib/puppet/application/filebucket.rb +2 -2
  10. data/lib/puppet/application/script.rb +1 -0
  11. data/lib/puppet/application_support.rb +7 -0
  12. data/lib/puppet/configurer.rb +28 -18
  13. data/lib/puppet/defaults.rb +24 -18
  14. data/lib/puppet/environments.rb +38 -54
  15. data/lib/puppet/face/config.rb +10 -0
  16. data/lib/puppet/face/epp.rb +12 -2
  17. data/lib/puppet/face/facts.rb +60 -0
  18. data/lib/puppet/ffi/posix.rb +10 -0
  19. data/lib/puppet/ffi/posix/constants.rb +14 -0
  20. data/lib/puppet/ffi/posix/functions.rb +24 -0
  21. data/lib/puppet/functions/epp.rb +1 -0
  22. data/lib/puppet/functions/inline_epp.rb +1 -0
  23. data/lib/puppet/indirector/fact_search.rb +60 -0
  24. data/lib/puppet/indirector/facts/json.rb +27 -0
  25. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  26. data/lib/puppet/indirector/json.rb +5 -1
  27. data/lib/puppet/indirector/node/json.rb +8 -0
  28. data/lib/puppet/indirector/report/json.rb +34 -0
  29. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  30. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  31. data/lib/puppet/network/formats.rb +2 -1
  32. data/lib/puppet/pal/pal_impl.rb +70 -17
  33. data/lib/puppet/parser/ast/leaf.rb +3 -2
  34. data/lib/puppet/parser/templatewrapper.rb +1 -1
  35. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  36. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -3
  37. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  38. data/lib/puppet/provider/package/apt.rb +4 -0
  39. data/lib/puppet/provider/user/aix.rb +2 -2
  40. data/lib/puppet/reference/configuration.rb +6 -5
  41. data/lib/puppet/settings.rb +33 -28
  42. data/lib/puppet/settings/alias_setting.rb +37 -0
  43. data/lib/puppet/settings/base_setting.rb +26 -2
  44. data/lib/puppet/util/autoload.rb +1 -8
  45. data/lib/puppet/util/fact_dif.rb +62 -0
  46. data/lib/puppet/util/posix.rb +54 -5
  47. data/lib/puppet/util/rubygems.rb +5 -1
  48. data/lib/puppet/version.rb +1 -1
  49. data/locales/puppet.pot +188 -164
  50. data/man/man5/puppet.conf.5 +6 -6
  51. data/man/man8/puppet-agent.8 +2 -2
  52. data/man/man8/puppet-apply.8 +2 -2
  53. data/man/man8/puppet-catalog.8 +1 -1
  54. data/man/man8/puppet-config.8 +1 -1
  55. data/man/man8/puppet-describe.8 +1 -1
  56. data/man/man8/puppet-device.8 +2 -2
  57. data/man/man8/puppet-doc.8 +1 -1
  58. data/man/man8/puppet-epp.8 +1 -1
  59. data/man/man8/puppet-facts.8 +32 -1
  60. data/man/man8/puppet-filebucket.8 +3 -3
  61. data/man/man8/puppet-generate.8 +1 -1
  62. data/man/man8/puppet-help.8 +1 -1
  63. data/man/man8/puppet-key.8 +1 -1
  64. data/man/man8/puppet-lookup.8 +1 -1
  65. data/man/man8/puppet-man.8 +1 -1
  66. data/man/man8/puppet-module.8 +1 -1
  67. data/man/man8/puppet-node.8 +4 -1
  68. data/man/man8/puppet-parser.8 +1 -1
  69. data/man/man8/puppet-plugin.8 +1 -1
  70. data/man/man8/puppet-report.8 +4 -1
  71. data/man/man8/puppet-resource.8 +1 -1
  72. data/man/man8/puppet-script.8 +2 -2
  73. data/man/man8/puppet-ssl.8 +1 -1
  74. data/man/man8/puppet-status.8 +1 -1
  75. data/man/man8/puppet.8 +2 -2
  76. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  77. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  78. data/spec/integration/application/agent_spec.rb +127 -3
  79. data/spec/integration/application/apply_spec.rb +19 -0
  80. data/spec/integration/defaults_spec.rb +0 -7
  81. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  82. data/spec/integration/resource/type_collection_spec.rb +2 -6
  83. data/spec/integration/transaction_spec.rb +4 -9
  84. data/spec/integration/util/windows/adsi_spec.rb +3 -1
  85. data/spec/integration/util/windows/registry_spec.rb +0 -10
  86. data/spec/lib/puppet_spec/settings.rb +6 -1
  87. data/spec/spec_helper.rb +1 -4
  88. data/spec/unit/agent_spec.rb +8 -6
  89. data/spec/unit/application/agent_spec.rb +0 -1
  90. data/spec/unit/application/config_spec.rb +224 -4
  91. data/spec/unit/application/filebucket_spec.rb +0 -2
  92. data/spec/unit/application_spec.rb +51 -9
  93. data/spec/unit/confine/feature_spec.rb +1 -1
  94. data/spec/unit/confine_spec.rb +8 -2
  95. data/spec/unit/defaults_spec.rb +20 -1
  96. data/spec/unit/environments_spec.rb +96 -19
  97. data/spec/unit/face/config_spec.rb +27 -32
  98. data/spec/unit/face/node_spec.rb +0 -11
  99. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
  100. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  101. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  102. data/spec/unit/forge/module_release_spec.rb +2 -7
  103. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  104. data/spec/unit/http/service/compiler_spec.rb +49 -0
  105. data/spec/unit/http/service_spec.rb +1 -1
  106. data/spec/unit/indirector/face_spec.rb +0 -1
  107. data/spec/unit/indirector/facts/facter_spec.rb +0 -1
  108. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  109. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  110. data/spec/unit/indirector/indirection_spec.rb +8 -12
  111. data/spec/unit/indirector/key/file_spec.rb +0 -1
  112. data/spec/unit/indirector/node/json_spec.rb +33 -0
  113. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  114. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  115. data/spec/unit/indirector_spec.rb +2 -2
  116. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  117. data/spec/unit/network/authconfig_spec.rb +0 -3
  118. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -9
  119. data/spec/unit/network/http/handler_spec.rb +0 -5
  120. data/spec/unit/parser/compiler_spec.rb +3 -19
  121. data/spec/unit/parser/resource_spec.rb +14 -8
  122. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  123. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  124. data/spec/unit/property_spec.rb +1 -0
  125. data/spec/unit/provider/nameservice_spec.rb +66 -65
  126. data/spec/unit/provider/package/apt_spec.rb +4 -8
  127. data/spec/unit/provider/package/base_spec.rb +6 -5
  128. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  129. data/spec/unit/provider/package/pip_spec.rb +6 -11
  130. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  131. data/spec/unit/provider/user/aix_spec.rb +5 -0
  132. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  133. data/spec/unit/provider/user/pw_spec.rb +2 -0
  134. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  135. data/spec/unit/provider_spec.rb +8 -10
  136. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  137. data/spec/unit/resource/capability_finder_spec.rb +6 -1
  138. data/spec/unit/resource/type_spec.rb +1 -1
  139. data/spec/unit/resource_spec.rb +11 -10
  140. data/spec/unit/settings_spec.rb +419 -242
  141. data/spec/unit/ssl/base_spec.rb +0 -1
  142. data/spec/unit/ssl/host_spec.rb +0 -5
  143. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  144. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  145. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  146. data/spec/unit/transaction_spec.rb +13 -4
  147. data/spec/unit/type/file/content_spec.rb +0 -1
  148. data/spec/unit/type/file/selinux_spec.rb +0 -2
  149. data/spec/unit/type/file_spec.rb +0 -6
  150. data/spec/unit/type/group_spec.rb +13 -6
  151. data/spec/unit/type/resources_spec.rb +7 -7
  152. data/spec/unit/type/service_spec.rb +1 -1
  153. data/spec/unit/type/tidy_spec.rb +0 -1
  154. data/spec/unit/type_spec.rb +2 -2
  155. data/spec/unit/util/at_fork_spec.rb +2 -2
  156. data/spec/unit/util/autoload_spec.rb +5 -1
  157. data/spec/unit/util/backups_spec.rb +1 -2
  158. data/spec/unit/util/execution_spec.rb +15 -11
  159. data/spec/unit/util/inifile_spec.rb +6 -14
  160. data/spec/unit/util/log_spec.rb +8 -7
  161. data/spec/unit/util/logging_spec.rb +3 -3
  162. data/spec/unit/util/posix_spec.rb +363 -15
  163. data/spec/unit/util/rubygems_spec.rb +2 -2
  164. data/spec/unit/util/selinux_spec.rb +76 -52
  165. data/spec/unit/util/storage_spec.rb +3 -1
  166. data/spec/unit/util/suidmanager_spec.rb +44 -41
  167. data/spec/unit/util_spec.rb +13 -6
  168. metadata +21 -10
  169. data/spec/integration/application/config_spec.rb +0 -74
  170. data/spec/unit/face/catalog_spec.rb +0 -6
  171. data/spec/unit/face/module_spec.rb +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 985de1bb38a0e514fd75418ce49b322bcfe4d2cd1944aacf5e68bfc9b5ab148d
4
- data.tar.gz: cb12244a887c251861a4ece670f880346825f866eec9c827a2f47adfed54d580
3
+ metadata.gz: 0147e6f254f297c9437fe69d05b915570ce5b431331501e895b4af3b360269ec
4
+ data.tar.gz: bc271ec416f471e43ffb7e858c94e47254746b774da09e3d690b0c53632b3671
5
5
  SHA512:
6
- metadata.gz: a743b1fa8c5f897a421e346f955004fbc720b894e919694cd05873efeb6c88652e81657277d47f615cf306f6be0026b636fa670c08fd9c9218c538f628569db1
7
- data.tar.gz: 96df128d7cfa12cd7452f5cfc9822ca9c5c44440210a0d198741ceb2757dba1fe8c3019b84cc1144c43f5659b977fa7cfc3e4d92c5835485e90ec2a190c7cd56
6
+ metadata.gz: c36c8a868ff0d2418a9bb051d8437787ef929f755c612dbbd81aca352874526cd1c5937db52ebdd90fcc47fe94a3cb5d414bdefe1b3f20002e0bd1de6a0251ef
7
+ data.tar.gz: 5c47dd924417e7ab34831df2f6908bbdbefa8e7d2c7cfb7945927cc4f94b37665ed3b6e6a0df229526bec24fbbe05a6607f96259820ae589e47b7e8e4fce8bf2
data/CODEOWNERS CHANGED
@@ -1,23 +1,9 @@
1
- # default to platform-core
2
- * @puppetlabs/platform-core @puppetlabs/puppetserver-maintainers
3
-
4
- # Night's Watch
5
- /lib/puppet/type/group @puppetlabs/night-s-watch
6
- /lib/puppet/type/package @puppetlabs/night-s-watch
7
- /lib/puppet/type/service @puppetlabs/night-s-watch
8
- /lib/puppet/type/user @puppetlabs/night-s-watch
9
- /lib/puppet/provider/group @puppetlabs/night-s-watch
10
- /lib/puppet/provider/package @puppetlabs/night-s-watch
11
- /lib/puppet/provider/service @puppetlabs/night-s-watch
12
- /lib/puppet/provider/user @puppetlabs/night-s-watch
1
+ # defaults
2
+ * @puppetlabs/platform-core @puppetlabs/puppetserver-maintainers @puppetlabs/night-s-watch
13
3
 
14
4
  # PAL
15
5
  /lib/puppet/pal @puppetlabs/bolt
16
6
 
17
- # puppet device
18
- /lib/puppet/application/device.rb @puppetlabs/networking
19
- /lib/puppet/util/network_device @puppetlabs/networking
20
-
21
7
  # puppet module
22
8
  /lib/puppet/application/module.rb @puppetlabs/pdk
23
9
  /lib/puppet/face/module @puppetlabs/pdk
data/Gemfile CHANGED
@@ -38,9 +38,11 @@ group(:features) do
38
38
  end
39
39
 
40
40
  group(:test) do
41
+ gem "ffi", require: false
41
42
  gem "json-schema", "~> 2.0", require: false
42
43
  gem "rake", *location_for(ENV['RAKE_LOCATION'] || '~> 12.2')
43
44
  gem "rspec", "~> 3.1", require: false
45
+ gem "rspec-expectations", ["~> 3.9", "!= 3.9.3"]
44
46
  gem "rspec-its", "~> 1.1", require: false
45
47
  gem 'vcr', '~> 5.0', require: false
46
48
  gem 'webmock', '~> 3.0', require: false
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- puppet (6.19.1)
4
+ puppet (6.20.0)
5
5
  CFPropertyList (~> 2.2)
6
6
  concurrent-ruby (~> 1.0)
7
7
  deep_merge (~> 1.0)
@@ -23,15 +23,17 @@ GEM
23
23
  ast (2.4.1)
24
24
  coderay (1.1.3)
25
25
  concurrent-ruby (1.1.7)
26
- crack (0.4.4)
26
+ crack (0.4.5)
27
+ rexml
27
28
  csv (3.1.5)
28
29
  deep_merge (1.2.1)
29
30
  diff-lcs (1.4.4)
30
31
  docopt (0.6.1)
31
- facter (4.0.44)
32
+ facter (4.0.49)
32
33
  hocon (~> 1.3)
33
34
  thor (>= 1.0.1, < 2.0)
34
35
  fast_gettext (1.1.2)
36
+ ffi (1.14.2)
35
37
  gettext (3.2.9)
36
38
  locale (>= 2.0.5)
37
39
  text (>= 1.3.0)
@@ -51,59 +53,60 @@ GEM
51
53
  json-schema (2.8.1)
52
54
  addressable (>= 2.4)
53
55
  locale (2.1.3)
54
- memory_profiler (0.9.14)
56
+ memory_profiler (1.0.0)
55
57
  method_source (1.0.0)
56
58
  minitar (0.9)
57
59
  msgpack (1.3.3)
58
60
  multi_json (1.15.0)
59
61
  mustache (1.1.1)
60
62
  optimist (3.0.1)
61
- packaging (0.99.71)
63
+ packaging (0.99.75)
62
64
  artifactory (~> 2)
63
65
  csv (= 3.1.5)
64
66
  rake (>= 12.3)
65
67
  release-metrics
66
- parallel (1.19.2)
68
+ parallel (1.20.1)
67
69
  parser (2.7.2.0)
68
70
  ast (~> 2.4.1)
69
- powerpack (0.1.2)
71
+ powerpack (0.1.3)
70
72
  pry (0.13.1)
71
73
  coderay (~> 1.1)
72
74
  method_source (~> 1.0)
73
75
  public_suffix (4.0.6)
74
76
  puppet-resource_api (1.8.13)
75
77
  hocon (>= 1.0)
76
- puppetserver-ca (1.8.0)
78
+ puppetserver-ca (1.9.1)
77
79
  facter (>= 2.0.1, < 5)
78
80
  racc (1.4.9)
79
81
  rainbow (2.2.2)
80
82
  rake
81
83
  rake (12.3.3)
82
84
  rdiscount (2.2.0.2)
83
- rdoc (6.2.1)
85
+ rdoc (6.3.0)
84
86
  release-metrics (1.1.0)
85
87
  csv
86
88
  docopt
89
+ rexml (3.2.4)
87
90
  ronn (0.7.3)
88
91
  hpricot (>= 0.8.2)
89
92
  mustache (>= 0.7.0)
90
93
  rdiscount (>= 1.5.8)
91
- rspec (3.9.0)
92
- rspec-core (~> 3.9.0)
93
- rspec-expectations (~> 3.9.0)
94
- rspec-mocks (~> 3.9.0)
95
- rspec-core (3.9.3)
96
- rspec-support (~> 3.9.3)
97
- rspec-expectations (3.9.2)
94
+ rspec (3.10.0)
95
+ rspec-core (~> 3.10.0)
96
+ rspec-expectations (~> 3.10.0)
97
+ rspec-mocks (~> 3.10.0)
98
+ rspec-core (3.10.1)
99
+ rspec-support (~> 3.10.0)
100
+ rspec-expectations (3.10.1)
98
101
  diff-lcs (>= 1.2.0, < 2.0)
99
- rspec-support (~> 3.9.0)
102
+ rspec-support (~> 3.10.0)
100
103
  rspec-its (1.3.0)
101
104
  rspec-core (>= 3.0.0)
102
105
  rspec-expectations (>= 3.0.0)
103
- rspec-mocks (3.9.1)
106
+ rspec-mocks (3.10.1)
104
107
  diff-lcs (>= 1.2.0, < 2.0)
105
- rspec-support (~> 3.9.0)
106
- rspec-support (3.9.3)
108
+ rspec-support (~> 3.10.0)
109
+ rspec-support (3.10.1)
107
110
  rubocop (0.49.1)
108
111
  parallel (~> 1.10)
109
112
  parser (>= 2.3.3.1, < 3.0)
@@ -113,24 +116,25 @@ GEM
113
116
  unicode-display_width (~> 1.0, >= 1.0.1)
114
117
  rubocop-i18n (1.2.0)
115
118
  rubocop (~> 0.49.0)
116
- ruby-prof (1.4.1)
117
- ruby-progressbar (1.10.1)
118
- semantic_puppet (1.0.2)
119
+ ruby-prof (1.4.2)
120
+ ruby-progressbar (1.11.0)
121
+ semantic_puppet (1.0.3)
119
122
  text (1.3.1)
120
123
  thor (1.0.1)
121
124
  unicode-display_width (1.7.0)
122
125
  vcr (5.1.0)
123
- webmock (3.9.3)
126
+ webmock (3.11.1)
124
127
  addressable (>= 2.3.6)
125
128
  crack (>= 0.3.2)
126
129
  hashdiff (>= 0.4.0, < 2.0.0)
127
- yard (0.9.25)
130
+ yard (0.9.26)
128
131
 
129
132
  PLATFORMS
130
133
  ruby
131
134
 
132
135
  DEPENDENCIES
133
136
  diff-lcs (~> 1.3)
137
+ ffi
134
138
  gettext-setup (~> 0.28)
135
139
  hiera-eyaml
136
140
  hocon (~> 1.0)
@@ -148,6 +152,7 @@ DEPENDENCIES
148
152
  rdoc (~> 6.0)
149
153
  ronn (~> 0.7.3)
150
154
  rspec (~> 3.1)
155
+ rspec-expectations (~> 3.9, != 3.9.3)
151
156
  rspec-its (~> 1.1)
152
157
  rubocop (~> 0.49)
153
158
  rubocop-i18n (~> 1.2.0)
@@ -420,12 +420,16 @@ class Application
420
420
  def handle_logdest_arg(arg)
421
421
  return if arg.nil?
422
422
 
423
- begin
424
- Puppet[:logdest] = arg
425
- Puppet::Util::Log.newdestination(arg)
426
- options[:setdest] = true
427
- rescue => detail
428
- Puppet.log_and_raise(detail, _("Could not set logdest to %{dest}.") % { dest: arg })
423
+ logdest = arg.split(',').map!(&:strip)
424
+ Puppet[:logdest] = arg
425
+
426
+ logdest.each do |dest|
427
+ begin
428
+ Puppet::Util::Log.newdestination(dest)
429
+ options[:setdest] = true
430
+ rescue => detail
431
+ Puppet.log_and_raise(detail, _("Could not set logdest to %{dest}.") % { dest: arg })
432
+ end
429
433
  end
430
434
  end
431
435
 
@@ -267,6 +267,7 @@ generated by running puppet agent with '--genconfig'.
267
267
  service), 'eventlog' (the Windows Event Log), 'console', or the path to a log
268
268
  file. If debugging or verbosity is enabled, this defaults to 'console'.
269
269
  Otherwise, it defaults to 'syslog' on POSIX systems and 'eventlog' on Windows.
270
+ Multiple destinations can be set using a comma separated list (eg: `/path/file1,console,/path/file2`)"
270
271
 
271
272
  A path ending with '.json' will receive structured output in JSON format. The
272
273
  log file will not have an ending ']' automatically written to it due to the
@@ -113,6 +113,7 @@ configuration options by running puppet with
113
113
  Where to send log messages. Choose between 'syslog' (the POSIX syslog
114
114
  service), 'eventlog' (the Windows Event Log), 'console', or the path to a log
115
115
  file. Defaults to 'console'.
116
+ Multiple destinations can be set using a comma separated list (eg: `/path/file1,console,/path/file2`)"
116
117
 
117
118
  A path ending with '.json' will receive structured output in JSON format. The
118
119
  log file will not have an ending ']' automatically written to it due to the
@@ -236,7 +237,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
236
237
  end
237
238
 
238
239
  # Resolve all deferred values and replace them / mutate the catalog
239
- Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, catalog)
240
+ Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, catalog, apply_environment)
240
241
 
241
242
  # Translate it to a RAL catalog
242
243
  catalog = catalog.to_ral
@@ -330,7 +331,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
330
331
  raise Puppet::Error, _("Could not deserialize catalog from %{format}: %{detail}") % { format: format, detail: detail }, detail.backtrace
331
332
  end
332
333
  # Resolve all deferred values and replace them / mutate the catalog
333
- Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, catalog)
334
+ Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, catalog, configured_environment)
334
335
 
335
336
  catalog.to_ral
336
337
  end
@@ -155,6 +155,7 @@ you can specify '--server <servername>' as an argument.
155
155
  Where to send log messages. Choose between 'syslog' (the POSIX syslog
156
156
  service), 'console', or the path to a log file. If debugging or verbosity is
157
157
  enabled, this defaults to 'console'. Otherwise, it defaults to 'syslog'.
158
+ Multiple destinations can be set using a comma separated list (eg: `/path/file1,console,/path/file2`)"
158
159
 
159
160
  A path ending with '.json' will receive structured output in JSON format. The
160
161
  log file will not have an ending ']' automatically written to it due to the
@@ -186,8 +186,8 @@ EXAMPLES
186
186
  $ puppet filebucket -b /tmp/TestBucket list
187
187
  d41d8cd98f00b204e9800998ecf8427e 2015-05-11 09:33:22 /tmp/TestFile2
188
188
 
189
- ## From a Puppet master, list files in the master bucketdir
190
- $ puppet filebucket -b $(puppet config print bucketdir --section master) list
189
+ ## From a Puppet Server, list files in the server bucketdir
190
+ $ puppet filebucket -b $(puppet config print bucketdir --section server) list
191
191
  d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
192
192
  7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile
193
193
 
@@ -71,6 +71,7 @@ configuration options can also be generated by running puppet with
71
71
  Where to send log messages. Choose between 'syslog' (the POSIX syslog
72
72
  service), 'eventlog' (the Windows Event Log), 'console', or the path to a log
73
73
  file. Defaults to 'console'.
74
+ Multiple destinations can be set using a comma separated list (eg: `/path/file1,console,/path/file2`)"
74
75
 
75
76
  A path ending with '.json' will receive structured output in JSON format. The
76
77
  log file will not have an ending ']' automatically written to it due to the
@@ -53,6 +53,13 @@ module Puppet
53
53
  route_file = Puppet[:route_file]
54
54
  if Puppet::FileSystem.exist?(route_file)
55
55
  routes = Puppet::Util::Yaml.safe_load_file(route_file, [Symbol])
56
+ if routes["server"] && routes["master"]
57
+ Puppet.warning("Route file #{route_file} contains both server and master route settings.")
58
+ elsif routes["server"] && !routes["master"]
59
+ routes["master"] = routes["server"]
60
+ elsif routes["master"] && !routes["server"]
61
+ routes["server"] = routes["master"]
62
+ end
56
63
  application_routes = routes[application_name]
57
64
  Puppet::Indirector.configure_routes(application_routes) if application_routes
58
65
  end
@@ -112,7 +112,7 @@ class Puppet::Configurer
112
112
  catalog_conversion_time = thinmark do
113
113
  # Will mutate the result and replace all Deferred values with resolved values
114
114
  if facts
115
- Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(facts, result)
115
+ Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(facts, result, Puppet.lookup(:current_environment))
116
116
  end
117
117
 
118
118
  catalog = result.to_ral
@@ -223,26 +223,23 @@ class Puppet::Configurer
223
223
  # mode. We shouldn't try to do any failover in that case.
224
224
  if options[:catalog].nil? && do_failover
225
225
  server, port = find_functional_server
226
- begin
227
- if server.nil?
228
- raise Puppet::Error, _("Could not select a functional puppet server from server_list: '%{server_list}'") % { server_list: Puppet.settings.value(:server_list, Puppet[:environment].to_sym, true) }
229
- else
230
- #TRANSLATORS 'server_list' is the name of a setting and should not be translated
231
- Puppet.debug _("Selected puppet server from the `server_list` setting: %{server}:%{port}") % { server: server, port: port }
232
- report.server_used = "#{server}:#{port}"
233
- end
234
- rescue Puppet::Error => detail
226
+ if server.nil?
227
+ detail = _("Could not select a functional puppet server from server_list: '%{server_list}'") % { server_list: Puppet.settings.value(:server_list, Puppet[:environment].to_sym, true) }
235
228
  if Puppet[:usecacheonfailure]
236
229
  options[:pluginsync] = false
237
230
  @running_failure = true
238
- if server.nil?
239
- server = Puppet[:server_list].first[0]
240
- port = Puppet[:server_list].first[1] || Puppet[:serverport]
241
- end
242
- Puppet.log_exception(detail)
231
+
232
+ server = Puppet[:server_list].first[0]
233
+ port = Puppet[:server_list].first[1] || Puppet[:serverport]
234
+
235
+ Puppet.err(detail)
243
236
  else
244
- raise detail
237
+ raise Puppet::Error, detail
245
238
  end
239
+ else
240
+ #TRANSLATORS 'server_list' is the name of a setting and should not be translated
241
+ Puppet.debug _("Selected puppet server from the `server_list` setting: %{server}:%{port}") % { server: server, port: port }
242
+ report.server_used = "#{server}:#{port}"
246
243
  end
247
244
  Puppet.override(server: server, serverport: port) do
248
245
  completed = run_internal(options)
@@ -400,16 +397,29 @@ class Puppet::Configurer
400
397
  if !cached_catalog && options[:catalog]
401
398
  ral_catalog = options[:catalog]
402
399
  else
400
+ # Ordering here matters. We have to resolve deferred resources in the
401
+ # resource catalog, convert the resource catalog to a RAL catalog (which
402
+ # triggers type/provider validation), and only if that is successful,
403
+ # should we cache the *original* resource catalog. However, deferred
404
+ # evaluation mutates the resource catalog, so we need to make a copy of
405
+ # it here. If PUP-9323 is ever implemented so that we resolve deferred
406
+ # resources in the RAL catalog as they are needed, then we could eliminate
407
+ # this step.
408
+ catalog_to_cache = Puppet.override(:rich_data => Puppet[:rich_data]) do
409
+ Puppet::Resource::Catalog.from_data_hash(catalog.to_data_hash)
410
+ end
411
+
403
412
  # REMIND @duration is the time spent loading the last catalog, and doesn't
404
413
  # account for things like we failed to download and fell back to the cache
405
414
  ral_catalog = convert_catalog(catalog, @duration, facts, options)
406
415
 
407
- # If not noop, commit the cached resource catalog (not ral catalog). Ideally
416
+ # Validation succeeded, so commit the `catalog_to_cache` for non-noop runs. Don't
417
+ # commit `catalog` since it contains the result of deferred evaluation. Ideally
408
418
  # we'd just copy the downloaded response body, instead of serializing the
409
419
  # in-memory catalog, but that's hard due to the indirector.
410
420
  indirection = Puppet::Resource::Catalog.indirection
411
421
  if !Puppet[:noop] && indirection.cache?
412
- request = indirection.request(:save, nil, catalog, environment: Puppet::Node::Environment.remote(catalog.environment))
422
+ request = indirection.request(:save, nil, catalog_to_cache, environment: Puppet::Node::Environment.remote(catalog_to_cache.environment))
413
423
  Puppet.info("Caching catalog for #{request.key}")
414
424
  indirection.cache.save(request)
415
425
  end
@@ -77,7 +77,8 @@ module Puppet
77
77
  the "facter-ng" gem). This is not necessary if Facter 3.x or later is installed.
78
78
  This setting is still experimental.',
79
79
  :hook => proc do |value|
80
- if value
80
+ value = munge(value)
81
+ if value && Puppet::Util::Package.versioncmp(Facter.value('facterversion'), '4.0.0') < 0
81
82
  begin
82
83
  original_facter = Object.const_get(:Facter)
83
84
  Object.send(:remove_const, :Facter)
@@ -632,7 +633,7 @@ module Puppet
632
633
  :http_proxy_password =>{
633
634
  :default => "none",
634
635
  :hook => proc do |value|
635
- if settings[:http_proxy_password] =~ /[@!# \/]/
636
+ if value =~ /[@!# \/]/
636
637
  raise "Passwords set in the http_proxy_password setting must be valid as part of a URL, and any reserved characters must be URL-encoded. We received: #{value}"
637
638
  end
638
639
  end,
@@ -841,7 +842,10 @@ Valid values are 0 (never cache) and 15 (15 second minimum wait time).
841
842
  **Note:** You must set the certname in the main section of the puppet.conf file. Setting it in a different section causes errors.
842
843
 
843
844
  Defaults to the node's fully qualified domain name.",
844
- :hook => proc { |value| raise(ArgumentError, _("Certificate names must be lower case")) unless value == value.downcase }},
845
+ :call_hook => :on_initialize_and_write,
846
+ :hook => proc { |value|
847
+ raise(ArgumentError, _("Certificate names must be lower case")) unless value == value.downcase
848
+ }},
845
849
  :dns_alt_names => {
846
850
  :default => '',
847
851
  :desc => <<EOT,
@@ -1124,7 +1128,7 @@ EOT
1124
1128
  :type => :string,
1125
1129
  :desc => "Where to send log messages. Choose between 'syslog' (the POSIX syslog
1126
1130
  service), 'eventlog' (the Windows Event Log), 'console', or the path to a log
1127
- file."
1131
+ file. Multiple destinations can be set using a comma separated list (eg: `/path/file1,console,/path/file2`)"
1128
1132
  # Sure would be nice to set the Puppet::Util::Log destination here in an :on_initialize_and_write hook,
1129
1133
  # unfortunately we have a large number of tests that rely on the logging not resetting itself when the
1130
1134
  # settings are initialized as they test what gets logged during settings initialization.
@@ -1367,23 +1371,15 @@ EOT
1367
1371
  by `puppet`, and should only be set if you're writing your own Puppet
1368
1372
  executable.",
1369
1373
  },
1370
- :serverport => {
1371
- :default => 8140,
1372
- :desc => "The default port puppet subcommands use to communicate
1373
- with Puppet Server. (eg `puppet facts upload`, `puppet agent`). May be
1374
- overridden by more specific settings (see `ca_port`, `report_port`).",
1375
- :hook => proc do |value|
1376
- Puppet[:masterport] = value unless Puppet.settings.set_by_config?(:masterport)
1377
- end
1378
- },
1379
1374
  :masterport => {
1380
1375
  :default => 8140,
1381
1376
  :desc => "The default port puppet subcommands use to communicate
1382
1377
  with Puppet Server. (eg `puppet facts upload`, `puppet agent`). May be
1383
1378
  overridden by more specific settings (see `ca_port`, `report_port`).",
1384
- :hook => proc do |value|
1385
- Puppet[:serverport] = value unless Puppet.settings.set_by_config?(:serverport)
1386
- end
1379
+ },
1380
+ :serverport => {
1381
+ :type => :alias,
1382
+ :alias_for => :masterport
1387
1383
  },
1388
1384
  :node_name => {
1389
1385
  :default => 'cert',
@@ -1874,7 +1870,11 @@ EOT
1874
1870
  :default => "$statedir/last_run_report.yaml",
1875
1871
  :type => :file,
1876
1872
  :mode => "0640",
1877
- :desc => "Where puppet agent stores the last run report in yaml format."
1873
+ :desc => "Where Puppet Agent stores the last run report, by default, in yaml format.
1874
+ The format of the report can be changed by setting the `cache` key of the `report` terminus
1875
+ in the [routes.yaml](https://puppet.com/docs/puppet/latest/config_file_routes.html) file.
1876
+ To avoid mismatches between content and file extension, this setting needs to be
1877
+ manually updated to reflect the terminus changes."
1878
1878
  },
1879
1879
  :graph => {
1880
1880
  :default => false,
@@ -2218,12 +2218,18 @@ EOT
2218
2218
  :func3x_check => {
2219
2219
  :default => true,
2220
2220
  :type => :boolean,
2221
- :desc => <<-'EOT'
2221
+ :desc => <<-'EOT',
2222
2222
  Causes validation of loaded legacy Ruby functions (3x API) to raise errors about illegal constructs that
2223
2223
  could cause harm or that simply does not work. This flag is on by default. This flag is made available
2224
2224
  so that the validation can be turned off in case the method of validation is faulty - if encountered, please
2225
2225
  file a bug report.
2226
2226
  EOT
2227
+ :call_hook => :on_initialize_and_write,
2228
+ :hook => proc do |value|
2229
+ unless value
2230
+ Puppet.deprecation_warning(_("The 'func3x_check' setting is deprecated and will be removed in a future release."))
2231
+ end
2232
+ end
2227
2233
  },
2228
2234
  :tasks => {
2229
2235
  :default => false,