puppet 6.16.0-x86-mingw32 → 6.20.0-x86-mingw32

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 (458) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +6 -2
  4. data/Gemfile.lock +40 -36
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/lib/puppet/agent.rb +2 -2
  8. data/lib/puppet/agent/locker.rb +0 -7
  9. data/lib/puppet/application.rb +10 -6
  10. data/lib/puppet/application/agent.rb +23 -6
  11. data/lib/puppet/application/apply.rb +20 -21
  12. data/lib/puppet/application/device.rb +1 -0
  13. data/lib/puppet/application/doc.rb +1 -1
  14. data/lib/puppet/application/filebucket.rb +2 -2
  15. data/lib/puppet/application/lookup.rb +16 -4
  16. data/lib/puppet/application/script.rb +1 -0
  17. data/lib/puppet/application_support.rb +7 -0
  18. data/lib/puppet/configurer.rb +70 -20
  19. data/lib/puppet/configurer/downloader.rb +31 -10
  20. data/lib/puppet/confine.rb +2 -2
  21. data/lib/puppet/confine/any.rb +1 -1
  22. data/lib/puppet/defaults.rb +113 -46
  23. data/lib/puppet/environments.rb +84 -59
  24. data/lib/puppet/face/catalog.rb +1 -1
  25. data/lib/puppet/face/config.rb +56 -16
  26. data/lib/puppet/face/epp.rb +12 -2
  27. data/lib/puppet/face/facts.rb +60 -0
  28. data/lib/puppet/face/node.rb +3 -3
  29. data/lib/puppet/face/node/clean.rb +2 -2
  30. data/lib/puppet/face/status.rb +1 -1
  31. data/lib/puppet/feature/base.rb +1 -1
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/file_bucket/dipper.rb +1 -1
  36. data/lib/puppet/file_serving/http_metadata.rb +13 -1
  37. data/lib/puppet/file_serving/metadata.rb +4 -1
  38. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  39. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  40. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  41. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  42. data/lib/puppet/file_system/file_impl.rb +4 -4
  43. data/lib/puppet/file_system/uniquefile.rb +8 -16
  44. data/lib/puppet/forge.rb +1 -1
  45. data/lib/puppet/forge/cache.rb +1 -1
  46. data/lib/puppet/forge/repository.rb +3 -7
  47. data/lib/puppet/functions/epp.rb +1 -0
  48. data/lib/puppet/functions/inline_epp.rb +1 -0
  49. data/lib/puppet/functions/lstrip.rb +4 -4
  50. data/lib/puppet/functions/new.rb +8 -3
  51. data/lib/puppet/functions/reverse_each.rb +1 -1
  52. data/lib/puppet/functions/rstrip.rb +4 -4
  53. data/lib/puppet/functions/step.rb +1 -1
  54. data/lib/puppet/functions/strip.rb +4 -4
  55. data/lib/puppet/gettext/config.rb +5 -5
  56. data/lib/puppet/gettext/module_translations.rb +4 -4
  57. data/lib/puppet/http.rb +1 -0
  58. data/lib/puppet/http/client.rb +6 -1
  59. data/lib/puppet/http/redirector.rb +9 -7
  60. data/lib/puppet/http/resolver.rb +5 -8
  61. data/lib/puppet/http/resolver/server_list.rb +18 -36
  62. data/lib/puppet/http/resolver/settings.rb +4 -4
  63. data/lib/puppet/http/resolver/srv.rb +5 -5
  64. data/lib/puppet/http/response.rb +19 -0
  65. data/lib/puppet/http/service.rb +3 -1
  66. data/lib/puppet/http/service/compiler.rb +1 -1
  67. data/lib/puppet/http/service/file_server.rb +1 -1
  68. data/lib/puppet/http/service/puppetserver.rb +39 -0
  69. data/lib/puppet/http/session.rb +5 -4
  70. data/lib/puppet/indirector.rb +1 -1
  71. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  72. data/lib/puppet/indirector/exec.rb +1 -1
  73. data/lib/puppet/indirector/fact_search.rb +60 -0
  74. data/lib/puppet/indirector/facts/facter.rb +3 -3
  75. data/lib/puppet/indirector/facts/json.rb +27 -0
  76. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  77. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  78. data/lib/puppet/indirector/file_metadata/http.rb +25 -5
  79. data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
  80. data/lib/puppet/indirector/hiera.rb +4 -0
  81. data/lib/puppet/indirector/indirection.rb +1 -1
  82. data/lib/puppet/indirector/json.rb +5 -1
  83. data/lib/puppet/indirector/msgpack.rb +1 -1
  84. data/lib/puppet/indirector/node/json.rb +8 -0
  85. data/lib/puppet/indirector/report/json.rb +34 -0
  86. data/lib/puppet/indirector/report/processor.rb +2 -2
  87. data/lib/puppet/indirector/request.rb +5 -5
  88. data/lib/puppet/indirector/yaml.rb +1 -1
  89. data/lib/puppet/module.rb +1 -2
  90. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  91. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  92. data/lib/puppet/network/format_support.rb +2 -2
  93. data/lib/puppet/network/formats.rb +2 -1
  94. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  95. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  96. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  97. data/lib/puppet/network/http/connection_adapter.rb +6 -4
  98. data/lib/puppet/network/http/route.rb +2 -2
  99. data/lib/puppet/node/environment.rb +12 -5
  100. data/lib/puppet/node/facts.rb +17 -0
  101. data/lib/puppet/pal/pal_impl.rb +90 -13
  102. data/lib/puppet/parameter.rb +1 -1
  103. data/lib/puppet/parser/ast/leaf.rb +7 -6
  104. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  105. data/lib/puppet/parser/compiler.rb +1 -1
  106. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  107. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  108. data/lib/puppet/parser/environment_compiler.rb +4 -1
  109. data/lib/puppet/parser/functions.rb +21 -17
  110. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  111. data/lib/puppet/parser/resource.rb +3 -2
  112. data/lib/puppet/parser/resource/param.rb +6 -0
  113. data/lib/puppet/parser/templatewrapper.rb +1 -1
  114. data/lib/puppet/parser/type_loader.rb +2 -2
  115. data/lib/puppet/pops/adaptable.rb +7 -13
  116. data/lib/puppet/pops/adapters.rb +8 -4
  117. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  118. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  119. data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -8
  120. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  121. data/lib/puppet/pops/issues.rb +5 -0
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  123. data/lib/puppet/pops/loaders.rb +18 -11
  124. data/lib/puppet/pops/lookup/context.rb +1 -1
  125. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  126. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  127. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  128. data/lib/puppet/pops/types/iterable.rb +34 -8
  129. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  130. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  131. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  132. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  133. data/lib/puppet/provider/file/windows.rb +1 -1
  134. data/lib/puppet/provider/package/apt.rb +38 -0
  135. data/lib/puppet/provider/package/aptitude.rb +1 -1
  136. data/lib/puppet/provider/package/dpkg.rb +1 -1
  137. data/lib/puppet/provider/package/gem.rb +4 -2
  138. data/lib/puppet/provider/package/pip2.rb +17 -0
  139. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  140. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  141. data/lib/puppet/provider/package/yum.rb +2 -1
  142. data/lib/puppet/provider/package/zypper.rb +3 -0
  143. data/lib/puppet/provider/service/windows.rb +23 -7
  144. data/lib/puppet/provider/user/aix.rb +3 -3
  145. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  146. data/lib/puppet/provider/user/useradd.rb +11 -4
  147. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  148. data/lib/puppet/reference/configuration.rb +6 -5
  149. data/lib/puppet/reports/http.rb +2 -0
  150. data/lib/puppet/resource.rb +2 -1
  151. data/lib/puppet/resource/type.rb +10 -1
  152. data/lib/puppet/rest/route.rb +2 -2
  153. data/lib/puppet/settings.rb +63 -21
  154. data/lib/puppet/settings/alias_setting.rb +37 -0
  155. data/lib/puppet/settings/base_setting.rb +26 -2
  156. data/lib/puppet/ssl/ssl_context.rb +2 -2
  157. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  158. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  159. data/lib/puppet/test/test_helper.rb +18 -13
  160. data/lib/puppet/transaction.rb +2 -2
  161. data/lib/puppet/transaction/persistence.rb +1 -1
  162. data/lib/puppet/transaction/report.rb +12 -8
  163. data/lib/puppet/trusted_external.rb +29 -1
  164. data/lib/puppet/type.rb +15 -7
  165. data/lib/puppet/type/file.rb +40 -15
  166. data/lib/puppet/type/file/checksum.rb +4 -4
  167. data/lib/puppet/type/file/source.rb +32 -12
  168. data/lib/puppet/type/filebucket.rb +1 -1
  169. data/lib/puppet/type/notify.rb +2 -2
  170. data/lib/puppet/type/service.rb +53 -0
  171. data/lib/puppet/type/user.rb +18 -3
  172. data/lib/puppet/util.rb +41 -3
  173. data/lib/puppet/util/autoload.rb +10 -15
  174. data/lib/puppet/util/character_encoding.rb +9 -5
  175. data/lib/puppet/util/checksums.rb +19 -4
  176. data/lib/puppet/util/connection.rb +8 -8
  177. data/lib/puppet/util/execution.rb +2 -2
  178. data/lib/puppet/util/fact_dif.rb +62 -0
  179. data/lib/puppet/util/fileparsing.rb +2 -2
  180. data/lib/puppet/util/posix.rb +54 -5
  181. data/lib/puppet/util/provider_features.rb +1 -1
  182. data/lib/puppet/util/reference.rb +1 -1
  183. data/lib/puppet/util/rubygems.rb +5 -1
  184. data/lib/puppet/util/run_mode.rb +5 -1
  185. data/lib/puppet/util/windows.rb +1 -0
  186. data/lib/puppet/util/windows/api_types.rb +60 -33
  187. data/lib/puppet/util/windows/eventlog.rb +1 -6
  188. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  189. data/lib/puppet/util/windows/principal.rb +8 -6
  190. data/lib/puppet/util/windows/registry.rb +11 -11
  191. data/lib/puppet/util/windows/security.rb +4 -4
  192. data/lib/puppet/util/windows/service.rb +43 -26
  193. data/lib/puppet/util/windows/user.rb +242 -8
  194. data/lib/puppet/version.rb +1 -1
  195. data/locales/puppet.pot +501 -443
  196. data/man/man5/puppet.conf.5 +70 -24
  197. data/man/man8/puppet-agent.8 +8 -5
  198. data/man/man8/puppet-apply.8 +2 -2
  199. data/man/man8/puppet-catalog.8 +1 -1
  200. data/man/man8/puppet-config.8 +6 -6
  201. data/man/man8/puppet-describe.8 +1 -1
  202. data/man/man8/puppet-device.8 +2 -2
  203. data/man/man8/puppet-doc.8 +1 -1
  204. data/man/man8/puppet-epp.8 +1 -1
  205. data/man/man8/puppet-facts.8 +32 -1
  206. data/man/man8/puppet-filebucket.8 +3 -3
  207. data/man/man8/puppet-generate.8 +1 -1
  208. data/man/man8/puppet-help.8 +1 -1
  209. data/man/man8/puppet-key.8 +1 -1
  210. data/man/man8/puppet-lookup.8 +2 -2
  211. data/man/man8/puppet-man.8 +1 -1
  212. data/man/man8/puppet-module.8 +1 -1
  213. data/man/man8/puppet-node.8 +7 -4
  214. data/man/man8/puppet-parser.8 +1 -1
  215. data/man/man8/puppet-plugin.8 +1 -1
  216. data/man/man8/puppet-report.8 +4 -1
  217. data/man/man8/puppet-resource.8 +1 -1
  218. data/man/man8/puppet-script.8 +2 -2
  219. data/man/man8/puppet-ssl.8 +1 -1
  220. data/man/man8/puppet-status.8 +2 -2
  221. data/man/man8/puppet.8 +2 -2
  222. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  223. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  224. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  225. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  226. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  227. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  228. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  229. data/spec/integration/application/agent_spec.rb +263 -54
  230. data/spec/integration/application/apply_spec.rb +168 -149
  231. data/spec/integration/application/doc_spec.rb +16 -6
  232. data/spec/integration/application/filebucket_spec.rb +70 -21
  233. data/spec/integration/application/help_spec.rb +42 -0
  234. data/spec/integration/application/lookup_spec.rb +13 -0
  235. data/spec/integration/application/module_spec.rb +68 -0
  236. data/spec/integration/application/plugin_spec.rb +53 -3
  237. data/spec/integration/configurer_spec.rb +14 -0
  238. data/spec/integration/data_binding_spec.rb +82 -0
  239. data/spec/integration/defaults_spec.rb +20 -3
  240. data/spec/integration/directory_environments_spec.rb +17 -17
  241. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  242. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  243. data/spec/integration/network/http_pool_spec.rb +26 -9
  244. data/spec/integration/node/environment_spec.rb +1 -1
  245. data/spec/integration/parser/compiler_spec.rb +11 -0
  246. data/spec/integration/resource/type_collection_spec.rb +2 -6
  247. data/spec/integration/transaction_spec.rb +4 -9
  248. data/spec/integration/type/file_spec.rb +1 -1
  249. data/spec/integration/util/execution_spec.rb +22 -0
  250. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  251. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  252. data/spec/integration/util/windows/process_spec.rb +26 -32
  253. data/spec/integration/util/windows/registry_spec.rb +7 -17
  254. data/spec/integration/util/windows/user_spec.rb +47 -5
  255. data/spec/integration/util_spec.rb +7 -33
  256. data/spec/lib/puppet_spec/matchers.rb +0 -80
  257. data/spec/lib/puppet_spec/puppetserver.rb +8 -0
  258. data/spec/lib/puppet_spec/settings.rb +6 -1
  259. data/spec/shared_contexts/types_setup.rb +2 -0
  260. data/spec/spec_helper.rb +1 -4
  261. data/spec/unit/agent_spec.rb +8 -6
  262. data/spec/unit/application/agent_spec.rb +3 -5
  263. data/spec/unit/application/config_spec.rb +224 -4
  264. data/spec/unit/application/doc_spec.rb +2 -2
  265. data/spec/unit/application/face_base_spec.rb +6 -4
  266. data/spec/unit/application/facts_spec.rb +41 -10
  267. data/spec/unit/application/filebucket_spec.rb +0 -2
  268. data/spec/unit/application/man_spec.rb +52 -0
  269. data/spec/unit/application/resource_spec.rb +3 -1
  270. data/spec/unit/application/ssl_spec.rb +15 -2
  271. data/spec/unit/application_spec.rb +60 -13
  272. data/spec/unit/configurer/downloader_spec.rb +10 -0
  273. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  274. data/spec/unit/configurer_spec.rb +86 -37
  275. data/spec/unit/confine/feature_spec.rb +1 -1
  276. data/spec/unit/confine_spec.rb +10 -3
  277. data/spec/unit/context/trusted_information_spec.rb +10 -4
  278. data/spec/unit/defaults_spec.rb +20 -1
  279. data/spec/unit/environments_spec.rb +176 -32
  280. data/spec/unit/face/config_spec.rb +65 -12
  281. data/spec/unit/face/node_spec.rb +2 -13
  282. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
  283. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  284. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  285. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  286. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  287. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  288. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  289. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  290. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  291. data/spec/unit/file_system_spec.rb +1 -2
  292. data/spec/unit/forge/module_release_spec.rb +2 -7
  293. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  294. data/spec/unit/http/client_spec.rb +64 -9
  295. data/spec/unit/http/resolver_spec.rb +24 -5
  296. data/spec/unit/http/response_spec.rb +6 -0
  297. data/spec/unit/http/service/ca_spec.rb +2 -3
  298. data/spec/unit/http/service/compiler_spec.rb +51 -3
  299. data/spec/unit/http/service/file_server_spec.rb +2 -3
  300. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  301. data/spec/unit/http/service/report_spec.rb +2 -3
  302. data/spec/unit/http/service_spec.rb +1 -2
  303. data/spec/unit/http/session_spec.rb +8 -21
  304. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  305. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  306. data/spec/unit/indirector/face_spec.rb +0 -1
  307. data/spec/unit/indirector/facts/facter_spec.rb +0 -1
  308. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  309. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  310. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  311. data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
  312. data/spec/unit/indirector/indirection_spec.rb +8 -12
  313. data/spec/unit/indirector/json_spec.rb +8 -8
  314. data/spec/unit/indirector/key/file_spec.rb +0 -1
  315. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  316. data/spec/unit/indirector/node/json_spec.rb +33 -0
  317. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  318. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  319. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  320. data/spec/unit/indirector/request_spec.rb +5 -5
  321. data/spec/unit/indirector/rest_spec.rb +1 -1
  322. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  323. data/spec/unit/indirector/yaml_spec.rb +7 -7
  324. data/spec/unit/indirector_spec.rb +2 -2
  325. data/spec/unit/interface_spec.rb +3 -3
  326. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  327. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  328. data/spec/unit/network/authconfig_spec.rb +0 -3
  329. data/spec/unit/network/format_support_spec.rb +3 -2
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -10
  331. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  332. data/spec/unit/network/http/connection_spec.rb +42 -32
  333. data/spec/unit/network/http/handler_spec.rb +0 -5
  334. data/spec/unit/node/environment_spec.rb +18 -1
  335. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  336. data/spec/unit/parser/compiler_spec.rb +3 -19
  337. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  338. data/spec/unit/parser/resource_spec.rb +14 -8
  339. data/spec/unit/parser/scope_spec.rb +1 -1
  340. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  341. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  342. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  344. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  345. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  346. data/spec/unit/property_spec.rb +1 -0
  347. data/spec/unit/provider/exec_spec.rb +4 -3
  348. data/spec/unit/provider/nameservice_spec.rb +66 -65
  349. data/spec/unit/provider/package/apt_spec.rb +76 -3
  350. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  351. data/spec/unit/provider/package/base_spec.rb +6 -5
  352. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  353. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  354. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  355. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  356. data/spec/unit/provider/package/pip_spec.rb +6 -11
  357. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  358. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  359. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  360. data/spec/unit/provider/package/yum_spec.rb +31 -0
  361. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  362. data/spec/unit/provider/service/base_spec.rb +2 -4
  363. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  364. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  365. data/spec/unit/provider/service/debian_spec.rb +3 -5
  366. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  367. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  368. data/spec/unit/provider/service/init_spec.rb +45 -5
  369. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  370. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  371. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  372. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  373. data/spec/unit/provider/service/runit_spec.rb +2 -1
  374. data/spec/unit/provider/service/smf_spec.rb +1 -1
  375. data/spec/unit/provider/service/src_spec.rb +3 -5
  376. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  377. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  378. data/spec/unit/provider/service/windows_spec.rb +50 -14
  379. data/spec/unit/provider/user/aix_spec.rb +5 -0
  380. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  381. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  382. data/spec/unit/provider/user/pw_spec.rb +2 -0
  383. data/spec/unit/provider/user/useradd_spec.rb +23 -16
  384. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  385. data/spec/unit/provider_spec.rb +8 -10
  386. data/spec/unit/puppet_pal_2pec.rb +40 -0
  387. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  388. data/spec/unit/reports/store_spec.rb +17 -13
  389. data/spec/unit/resource/capability_finder_spec.rb +6 -1
  390. data/spec/unit/resource/type_spec.rb +1 -1
  391. data/spec/unit/resource_spec.rb +14 -13
  392. data/spec/unit/rest/route_spec.rb +4 -4
  393. data/spec/unit/settings_spec.rb +576 -239
  394. data/spec/unit/ssl/base_spec.rb +0 -1
  395. data/spec/unit/ssl/host_spec.rb +0 -5
  396. data/spec/unit/ssl/ssl_provider_spec.rb +82 -50
  397. data/spec/unit/test/test_helper_spec.rb +17 -0
  398. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  399. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  400. data/spec/unit/transaction/persistence_spec.rb +15 -0
  401. data/spec/unit/transaction/report_spec.rb +3 -1
  402. data/spec/unit/transaction_spec.rb +13 -4
  403. data/spec/unit/type/file/content_spec.rb +0 -1
  404. data/spec/unit/type/file/selinux_spec.rb +0 -2
  405. data/spec/unit/type/file/source_spec.rb +4 -4
  406. data/spec/unit/type/file_spec.rb +122 -102
  407. data/spec/unit/type/filebucket_spec.rb +1 -1
  408. data/spec/unit/type/group_spec.rb +13 -6
  409. data/spec/unit/type/resources_spec.rb +7 -7
  410. data/spec/unit/type/service_spec.rb +210 -1
  411. data/spec/unit/type/tidy_spec.rb +0 -1
  412. data/spec/unit/type/user_spec.rb +31 -2
  413. data/spec/unit/type_spec.rb +52 -2
  414. data/spec/unit/util/at_fork_spec.rb +2 -2
  415. data/spec/unit/util/autoload_spec.rb +5 -1
  416. data/spec/unit/util/backups_spec.rb +1 -2
  417. data/spec/unit/util/character_encoding_spec.rb +4 -4
  418. data/spec/unit/util/checksums_spec.rb +16 -0
  419. data/spec/unit/util/command_line_spec.rb +11 -6
  420. data/spec/unit/util/execution_spec.rb +15 -11
  421. data/spec/unit/util/inifile_spec.rb +6 -14
  422. data/spec/unit/util/log_spec.rb +8 -7
  423. data/spec/unit/util/logging_spec.rb +3 -3
  424. data/spec/unit/util/posix_spec.rb +363 -15
  425. data/spec/unit/util/rubygems_spec.rb +2 -2
  426. data/spec/unit/util/run_mode_spec.rb +6 -6
  427. data/spec/unit/util/selinux_spec.rb +76 -52
  428. data/spec/unit/util/storage_spec.rb +3 -1
  429. data/spec/unit/util/suidmanager_spec.rb +44 -41
  430. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  431. data/spec/unit/util/windows/service_spec.rb +4 -4
  432. data/spec/unit/util_spec.rb +16 -9
  433. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  434. metadata +52 -53
  435. data/spec/integration/faces/config_spec.rb +0 -91
  436. data/spec/integration/faces/documentation_spec.rb +0 -57
  437. data/spec/integration/file_bucket/file_spec.rb +0 -50
  438. data/spec/integration/file_serving/content_spec.rb +0 -7
  439. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  440. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  441. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  442. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  443. data/spec/integration/module_tool/forge_spec.rb +0 -51
  444. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  445. data/spec/integration/provider/service/init_spec.rb +0 -48
  446. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  447. data/spec/integration/provider/service/windows_spec.rb +0 -50
  448. data/spec/integration/reference/providers_spec.rb +0 -21
  449. data/spec/integration/reports_spec.rb +0 -13
  450. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  451. data/spec/integration/ssl/host_spec.rb +0 -72
  452. data/spec/integration/ssl/key_spec.rb +0 -99
  453. data/spec/integration/test/test_helper_spec.rb +0 -31
  454. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  455. data/spec/unit/face/catalog_spec.rb +0 -6
  456. data/spec/unit/face/man_spec.rb +0 -25
  457. data/spec/unit/face/module_spec.rb +0 -3
  458. data/spec/unit/man_spec.rb +0 -31
@@ -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
@@ -1,7 +1,7 @@
1
1
  require 'puppet/application'
2
2
 
3
3
  class Puppet::Application::Doc < Puppet::Application
4
- run_mode :master
4
+ run_mode :server
5
5
 
6
6
  attr_accessor :unknown_args, :manifest
7
7
 
@@ -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
 
@@ -8,7 +8,7 @@ class Puppet::Application::Lookup < Puppet::Application
8
8
  RUN_HELP = _("Run 'puppet lookup --help' for more details").freeze
9
9
  DEEP_MERGE_OPTIONS = '--knock-out-prefix, --sort-merged-arrays, and --merge-hash-arrays'.freeze
10
10
 
11
- run_mode :master
11
+ run_mode :server
12
12
 
13
13
  # Options for lookup
14
14
  option('--merge TYPE') do |arg|
@@ -90,7 +90,13 @@ class Puppet::Application::Lookup < Puppet::Application
90
90
 
91
91
  exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs?
92
92
 
93
- Puppet.settings.use :main, :master, :ssl, :metrics
93
+ if options[:node]
94
+ Puppet::Util.skip_external_facts do
95
+ Puppet.settings.use :main, :server, :ssl, :metrics
96
+ end
97
+ else
98
+ Puppet.settings.use :main, :server, :ssl, :metrics
99
+ end
94
100
 
95
101
  setup_terminuses
96
102
  end
@@ -102,7 +108,7 @@ class Puppet::Application::Lookup < Puppet::Application
102
108
  def help
103
109
  <<-HELP
104
110
 
105
- puppet lookup(8) -- #{summary}
111
+ puppet-lookup(8) -- #{summary}
106
112
  ========
107
113
 
108
114
  SYNOPSIS
@@ -364,6 +370,12 @@ Copyright (c) 2015 Puppet Inc., LLC Licensed under the Apache 2.0 License
364
370
 
365
371
  Puppet[:code] = 'undef' unless options[:compile]
366
372
  compiler = Puppet::Parser::Compiler.new(node)
367
- compiler.compile { |catalog| yield(compiler.topscope); catalog }
373
+ if options[:node]
374
+ Puppet::Util.skip_external_facts do
375
+ compiler.compile { |catalog| yield(compiler.topscope); catalog }
376
+ end
377
+ else
378
+ compiler.compile { |catalog| yield(compiler.topscope); catalog }
379
+ end
368
380
  end
369
381
  end
@@ -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
@@ -53,6 +53,7 @@ class Puppet::Configurer
53
53
  def initialize(transaction_uuid = nil, job_id = nil)
54
54
  @running = false
55
55
  @splayed = false
56
+ @running_failure = false
56
57
  @cached_catalog_status = 'not_used'
57
58
  @environment = Puppet[:environment]
58
59
  @transaction_uuid = transaction_uuid || SecureRandom.uuid
@@ -65,9 +66,16 @@ class Puppet::Configurer
65
66
  # Get the remote catalog, yo. Returns nil if no catalog can be found.
66
67
  def retrieve_catalog(facts, query_options)
67
68
  query_options ||= {}
68
- result = retrieve_catalog_from_cache(query_options) if Puppet[:use_cached_catalog]
69
+ if Puppet[:use_cached_catalog] || @running_failure
70
+ result = retrieve_catalog_from_cache(query_options)
71
+ end
72
+
69
73
  if result
70
- @cached_catalog_status = 'explicitly_requested'
74
+ if Puppet[:use_cached_catalog]
75
+ @cached_catalog_status = 'explicitly_requested'
76
+ elsif @running_failure
77
+ @cached_catalog_status = 'on_failure'
78
+ end
71
79
 
72
80
  Puppet.info _("Using cached catalog from environment '%{environment}'") % { environment: result.environment }
73
81
  else
@@ -104,7 +112,7 @@ class Puppet::Configurer
104
112
  catalog_conversion_time = thinmark do
105
113
  # Will mutate the result and replace all Deferred values with resolved values
106
114
  if facts
107
- Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(facts, result)
115
+ Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(facts, result, Puppet.lookup(:current_environment))
108
116
  end
109
117
 
110
118
  catalog = result.to_ral
@@ -216,9 +224,22 @@ class Puppet::Configurer
216
224
  if options[:catalog].nil? && do_failover
217
225
  server, port = find_functional_server
218
226
  if server.nil?
219
- raise Puppet::Error, _("Could not select a functional puppet master from server_list: '%{server_list}'") % { server_list: Puppet.settings.value(:server_list, Puppet[:environment].to_sym, true) }
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) }
228
+ if Puppet[:usecacheonfailure]
229
+ options[:pluginsync] = false
230
+ @running_failure = true
231
+
232
+ server = Puppet[:server_list].first[0]
233
+ port = Puppet[:server_list].first[1] || Puppet[:serverport]
234
+
235
+ Puppet.err(detail)
236
+ else
237
+ raise Puppet::Error, detail
238
+ end
220
239
  else
221
- report.master_used = "#{server}:#{port}"
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}"
222
243
  end
223
244
  Puppet.override(server: server, serverport: port) do
224
245
  completed = run_internal(options)
@@ -303,6 +324,15 @@ class Puppet::Configurer
303
324
  report.environment = @environment
304
325
  query_options = nil
305
326
  facts = nil
327
+
328
+ new_env = Puppet::Node::Environment.remote(@environment)
329
+ Puppet.push_context(
330
+ {
331
+ current_environment: new_env,
332
+ loaders: Puppet::Pops::Loaders.new(new_env, true)
333
+ },
334
+ "Local node environment #{@environment} for configurer transaction"
335
+ )
306
336
  else
307
337
  Puppet.info _("Using configured environment '%{env}'") % { env: @environment }
308
338
  end
@@ -313,19 +343,18 @@ class Puppet::Configurer
313
343
  end
314
344
  end
315
345
 
316
- current_environment = Puppet.lookup(:current_environment)
317
- if current_environment.name == @environment.intern
318
- local_node_environment = current_environment
319
- else
320
- local_node_environment = Puppet::Node::Environment.create(@environment,
321
- current_environment.modulepath,
322
- current_environment.manifest,
323
- current_environment.config_version)
346
+ # This is to maintain compatibility with anyone using this class
347
+ # aside from agent, apply, device.
348
+ unless Puppet.lookup(:loaders) { nil }
349
+ new_env = Puppet::Node::Environment.remote(@environment)
350
+ Puppet.push_context(
351
+ {
352
+ current_environment: new_env,
353
+ loaders: Puppet::Pops::Loaders.new(new_env, true)
354
+ },
355
+ "Local node environment #{@environment} for configurer transaction"
356
+ )
324
357
  end
325
- Puppet.push_context({
326
- :current_environment => local_node_environment,
327
- :loaders => Puppet::Pops::Loaders.new(local_node_environment, true)
328
- }, "Local node environment for configurer transaction")
329
358
 
330
359
  query_options, facts = get_facts(options) unless query_options
331
360
  query_options[:configured_environment] = configured_environment
@@ -368,16 +397,29 @@ class Puppet::Configurer
368
397
  if !cached_catalog && options[:catalog]
369
398
  ral_catalog = options[:catalog]
370
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
+
371
412
  # REMIND @duration is the time spent loading the last catalog, and doesn't
372
413
  # account for things like we failed to download and fell back to the cache
373
414
  ral_catalog = convert_catalog(catalog, @duration, facts, options)
374
415
 
375
- # 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
376
418
  # we'd just copy the downloaded response body, instead of serializing the
377
419
  # in-memory catalog, but that's hard due to the indirector.
378
420
  indirection = Puppet::Resource::Catalog.indirection
379
421
  if !Puppet[:noop] && indirection.cache?
380
- 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))
381
423
  Puppet.info("Caching catalog for #{request.key}")
382
424
  indirection.cache.save(request)
383
425
  end
@@ -530,6 +572,14 @@ class Puppet::Configurer
530
572
  end
531
573
 
532
574
  def download_plugins(remote_environment_for_plugins)
533
- @handler.download_plugins(remote_environment_for_plugins)
575
+ begin
576
+ @handler.download_plugins(remote_environment_for_plugins)
577
+ rescue Puppet::Error => detail
578
+ if !Puppet[:ignore_plugin_errors] && Puppet[:usecacheonfailure]
579
+ @running_failure = true
580
+ else
581
+ raise detail
582
+ end
583
+ end
534
584
  end
535
585
  end
@@ -11,32 +11,53 @@ class Puppet::Configurer::Downloader
11
11
  files = []
12
12
  begin
13
13
  catalog.apply do |trans|
14
+ unless Puppet[:ignore_plugin_errors]
15
+ # Propagate the first failure associated with the transaction. The any_failed?
16
+ # method returns the first resource status that failed or nil, not a boolean.
17
+ first_failure = trans.any_failed?
18
+ if first_failure
19
+ event = (first_failure.events || []).first
20
+ detail = event ? event.message : 'unknown'
21
+ raise Puppet::Error.new(_("Failed to retrieve %{name}: %{detail}") % { name: name, detail: detail })
22
+ end
23
+ end
24
+
14
25
  trans.changed?.each do |resource|
15
26
  yield resource if block_given?
16
27
  files << resource[:path]
17
28
  end
18
29
  end
19
30
  rescue Puppet::Error => detail
20
- Puppet.log_exception(detail, _("Could not retrieve %{name}: %{detail}") % { name: name, detail: detail })
31
+ if Puppet[:ignore_plugin_errors]
32
+ Puppet.log_exception(detail, _("Could not retrieve %{name}: %{detail}") % { name: name, detail: detail })
33
+ else
34
+ raise detail
35
+ end
21
36
  end
22
37
  files
23
38
  end
24
39
 
25
40
  def initialize(name, path, source, ignore = nil, environment = nil, source_permissions = :ignore)
26
41
  @name, @path, @source, @ignore, @environment, @source_permissions = name, path, source, ignore, environment, source_permissions
27
- end
28
42
 
29
- def catalog
30
- catalog = Puppet::Resource::Catalog.new("PluginSync", @environment)
31
- catalog.host_config = false
32
- catalog.add_resource(file)
33
- catalog
34
43
  end
35
44
 
36
45
  def file
37
- args = default_arguments.merge(:path => path, :source => source)
38
- args[:ignore] = ignore.split if ignore
39
- Puppet::Type.type(:file).new(args)
46
+ unless @file
47
+ args = default_arguments.merge(:path => path, :source => source)
48
+ args[:ignore] = ignore.split if ignore
49
+ @file = Puppet::Type.type(:file).new(args)
50
+ end
51
+ @file
52
+ end
53
+
54
+ def catalog
55
+ unless @catalog
56
+ @catalog = Puppet::Resource::Catalog.new("PluginSync", @environment)
57
+ @catalog.host_config = false
58
+ @catalog.add_resource(file)
59
+ end
60
+ @catalog
40
61
  end
41
62
 
42
63
  private
@@ -26,7 +26,7 @@ class Puppet::Confine
26
26
  require "puppet/confine/#{name}"
27
27
  rescue LoadError => detail
28
28
  unless detail.to_s =~ /No such file|cannot load such file/i
29
- warn "Could not load confine test '#{name}': #{detail}"
29
+ Puppet.warning("Could not load confine test '#{name}': #{detail}")
30
30
  end
31
31
  # Could not find file
32
32
  if !Puppet[:always_retry_plugins]
@@ -67,7 +67,7 @@ class Puppet::Confine
67
67
  def valid?
68
68
  values.each do |value|
69
69
  unless pass?(value)
70
- Puppet.debug(label + ": " + message(value))
70
+ Puppet.debug { label + ": " + message(value) }
71
71
  return false
72
72
  end
73
73
  end
@@ -19,7 +19,7 @@ class Puppet::Confine::Any < Puppet::Confine
19
19
  if @values.any? { |value| pass?(value) }
20
20
  true
21
21
  else
22
- Puppet.debug("#{label}: #{message(@values)}")
22
+ Puppet.debug { "#{label}: #{message(@values)}" }
23
23
  false
24
24
  end
25
25
  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)
@@ -347,8 +348,7 @@ module Puppet
347
348
  :default => "ansi",
348
349
  :type => :string,
349
350
  :desc => "Whether to use colors when logging to the console. Valid values are
350
- `ansi` (equivalent to `true`), `html`, and `false`, which produces no color.
351
- Defaults to false on Windows, as its console does not support ansi colors.",
351
+ `ansi` (equivalent to `true`), `html`, and `false`, which produces no color."
352
352
  },
353
353
  :mkusers => {
354
354
  :default => false,
@@ -375,7 +375,7 @@ module Puppet
375
375
  from the parent process.
376
376
 
377
377
  This setting can only be set in the `[main]` section of puppet.conf; it cannot
378
- be set in `[master]`, `[agent]`, or an environment config section.",
378
+ be set in `[server]`, `[agent]`, or an environment config section.",
379
379
  :call_hook => :on_define_and_write,
380
380
  :hook => proc do |value|
381
381
  Puppet::Util.set_env('PATH', '') if Puppet::Util.get_env('PATH').nil?
@@ -563,7 +563,7 @@ module Puppet
563
563
  config = File.expand_path(File.join(settings[:confdir], 'hiera.yaml')) if config.nil?
564
564
  config
565
565
  end,
566
- :desc => "The hiera configuration file. Puppet only reads this file on startup, so you must restart the puppet master every time you edit it.",
566
+ :desc => "The hiera configuration file. Puppet only reads this file on startup, so you must restart the puppet server every time you edit it.",
567
567
  :type => :file,
568
568
  },
569
569
  :binder_config => {
@@ -590,13 +590,22 @@ module Puppet
590
590
  },
591
591
  :trusted_external_command => {
592
592
  :default => nil,
593
- :desc => "The external trusted facts script to use.
593
+ :type => :file_or_directory,
594
+ :desc => "The external trusted facts script or directory to use.
594
595
  This setting's value can be set to the path to an executable command that
595
- can produce external trusted facts. The command must:
596
+ can produce external trusted facts or to a directory containing those
597
+ executable commands. The command(s) must:
596
598
 
597
599
  * Take the name of a node as a command-line argument.
598
600
  * Return a JSON hash with the external trusted facts for this node.
599
- * For unknown or invalid nodes, exit with a non-zero exit code.",
601
+ * For unknown or invalid nodes, exit with a non-zero exit code.
602
+
603
+ If the setting points to an executable command, then the external trusted
604
+ facts will be stored in the 'external' key of the trusted facts hash. Otherwise
605
+ for each executable file in the directory, the external trusted facts will be
606
+ stored in the `<basename>` key of the `trusted['external']` hash. For example,
607
+ if the files foo.rb and bar.sh are in the directory, then `trusted['external']`
608
+ will be the hash `{ 'foo' => <foo.rb output>, 'bar' => <bar.sh output> }`.",
600
609
  },
601
610
  :default_file_terminus => {
602
611
  :type => :terminus,
@@ -624,7 +633,7 @@ module Puppet
624
633
  :http_proxy_password =>{
625
634
  :default => "none",
626
635
  :hook => proc do |value|
627
- if settings[:http_proxy_password] =~ /[@!# \/]/
636
+ if value =~ /[@!# \/]/
628
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}"
629
638
  end
630
639
  end,
@@ -692,40 +701,54 @@ Valid values are 0 (never cache) and 15 (15 second minimum wait time).
692
701
  :environment_timeout => {
693
702
  :default => "0",
694
703
  :type => :ttl,
695
- :desc => "How long the Puppet master should cache data it loads from an
704
+ :desc => "How long the Puppet server should cache data it loads from an
696
705
  environment.
697
706
 
698
707
  A value of `0` will disable caching. This setting can also be set to
699
- `unlimited`, which will cache environments until the master is restarted
700
- or told to refresh the cache.
708
+ `unlimited`, which will cache environments until the server is restarted
709
+ or told to refresh the cache. All other values will result in Puppet
710
+ server evicting expired environments. The expiration time is computed
711
+ based on either when the environment was created or last accessed, see
712
+ `environment_timeout_mode`.
701
713
 
702
714
  You should change this setting once your Puppet deployment is doing
703
715
  non-trivial work. We chose the default value of `0` because it lets new
704
716
  users update their code without any extra steps, but it lowers the
705
- performance of your Puppet master.
706
-
707
- We recommend setting this to `unlimited` and explicitly refreshing your
708
- Puppet master as part of your code deployment process.
709
-
710
- * With Puppet Server, you should refresh environments by calling the
711
- `environment-cache` API endpoint. See the docs for the Puppet Server
712
- [administrative API](https://puppet.com/docs/puppetserver/latest/admin-api/v1/environment-cache.html).
713
-
714
- Any value other than `0` or `unlimited` is deprecated, since most Puppet
715
- servers use a pool of Ruby interpreters which all have their own cache
716
- timers. When these timers drift out of sync, agents can be served
717
- inconsistent catalogs.",
717
+ performance of your Puppet server. We recommend either:
718
+
719
+ * Setting this to `unlimited` and explicitly refreshing your Puppet server
720
+ as part of your code deployment process.
721
+
722
+ * Setting this to a number that will keep your most actively used
723
+ environments cached, but allow testing environments to fall out of the
724
+ cache and reduce memory usage. A value of 3 minutes (3m) is a reasonable
725
+ value. This option requires setting `environment_timeout_mode` to
726
+ `from_last_used`.
727
+
728
+ Once you set `environment_timeout` to a non-zero value, you need to tell
729
+ Puppet server to read new code from disk using the `environment-cache` API
730
+ endpoint after you deploy new code. See the docs for the Puppet Server
731
+ [administrative API](https://puppet.com/docs/puppetserver/latest/admin-api/v1/environment-cache.html).
732
+ ",
718
733
  :hook => proc do |val|
719
- unless [0, 'unlimited', Float::INFINITY].include?(val)
720
- Puppet.deprecation_warning(<<-WARNING)
721
- Fine grained control of environment timeouts is deprecated,
722
- please use `0` or `unlimited` to control default caching behavior
723
- and the environment-cache endpoint in Puppet Server's administrative
724
- API to expire the cache as needed
725
- WARNING
734
+ if Puppet[:environment_timeout_mode] == :from_created
735
+ unless [0, 'unlimited', Float::INFINITY].include?(val)
736
+ Puppet.deprecation_warning("Evicting environments based on their creation time is deprecated, please set `environment_timeout_mode` to `from_last_used` instead.")
737
+ end
726
738
  end
727
739
  end
728
740
  },
741
+ :environment_timeout_mode => {
742
+ :default => :from_created,
743
+ :type => :symbolic_enum,
744
+ :values => [:from_created, :from_last_used],
745
+ :desc => "How Puppet interprets the `environment_timeout` setting when
746
+ `environment_timeout` is neither `0` nor `unlimited`. If set to
747
+ `from_created`, then the environment will be evicted `environment_timeout`
748
+ seconds from when it was created. If set to `from_last_used` then the
749
+ environment will be evicted `environment_timeout` seconds from when it
750
+ was last used."
751
+ },
729
752
  :environment_data_provider => {
730
753
  :desc => "The name of a registered environment data provider used when obtaining environment
731
754
  specific data. The three built in and registered providers are 'none' (no data), 'function' (data
@@ -814,10 +837,15 @@ API to expire the cache as needed
814
837
  only use lowercase letters, numbers, periods, underscores, and dashes. (That is,
815
838
  it should match `/\A[a-z0-9._-]+\Z/`.)
816
839
  * The special value `ca` is reserved, and can't be used as the certname
817
- for a normal node.
840
+ for a normal node.
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.
818
843
 
819
844
  Defaults to the node's fully qualified domain name.",
820
- :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
+ }},
821
849
  :dns_alt_names => {
822
850
  :default => '',
823
851
  :desc => <<EOT,
@@ -992,6 +1020,15 @@ EOT
992
1020
  and reject the CA certificate if the values do not match. This only applies
993
1021
  during the first download of the CA certificate."
994
1022
  },
1023
+ :ssl_trust_store => {
1024
+ :default => nil,
1025
+ :type => :file,
1026
+ :desc => "A file containing CA certificates in PEM format that puppet should trust
1027
+ when making HTTPS requests. This **only** applies to https requests to non-puppet
1028
+ infrastructure, such as retrieving file metadata and content from https file sources,
1029
+ puppet module tool and the 'http' report processor. This setting is ignored when
1030
+ making requests to puppet:// URLs such as catalog and report requests.",
1031
+ },
995
1032
  :ssl_client_ca_auth => {
996
1033
  :type => :file,
997
1034
  :mode => "0644",
@@ -1091,7 +1128,7 @@ EOT
1091
1128
  :type => :string,
1092
1129
  :desc => "Where to send log messages. Choose between 'syslog' (the POSIX syslog
1093
1130
  service), 'eventlog' (the Windows Event Log), 'console', or the path to a log
1094
- file."
1131
+ file. Multiple destinations can be set using a comma separated list (eg: `/path/file1,console,/path/file2`)"
1095
1132
  # Sure would be nice to set the Puppet::Util::Log destination here in an :on_initialize_and_write hook,
1096
1133
  # unfortunately we have a large number of tests that rely on the logging not resetting itself when the
1097
1134
  # settings are initialized as they test what gets logged during settings initialization.
@@ -1284,7 +1321,7 @@ EOT
1284
1321
  }
1285
1322
  )
1286
1323
 
1287
- settings.define_settings(:master,
1324
+ settings.define_settings(:server,
1288
1325
  :user => {
1289
1326
  :default => "puppet",
1290
1327
  :desc => "The user Puppet Server will run as. Used to ensure
@@ -1340,6 +1377,10 @@ EOT
1340
1377
  with Puppet Server. (eg `puppet facts upload`, `puppet agent`). May be
1341
1378
  overridden by more specific settings (see `ca_port`, `report_port`).",
1342
1379
  },
1380
+ :serverport => {
1381
+ :type => :alias,
1382
+ :alias_for => :masterport
1383
+ },
1343
1384
  :node_name => {
1344
1385
  :default => 'cert',
1345
1386
  :type => :enum,
@@ -1536,7 +1577,7 @@ EOT
1536
1577
  :statefile => {
1537
1578
  :default => "$statedir/state.yaml",
1538
1579
  :type => :file,
1539
- :mode => "0660",
1580
+ :mode => "0640",
1540
1581
  :desc => "Where puppet agent and puppet master store state associated
1541
1582
  with the running configuration. In the case of puppet master,
1542
1583
  this file reflects the state discovered through interacting
@@ -1558,7 +1599,7 @@ EOT
1558
1599
  :transactionstorefile => {
1559
1600
  :default => "$statedir/transactionstore.yaml",
1560
1601
  :type => :file,
1561
- :mode => "0660",
1602
+ :mode => "0640",
1562
1603
  :desc => "Transactional storage file for persisting data between
1563
1604
  transactions for the purposes of infering information (such as
1564
1605
  corrective_change) on new data received."
@@ -1684,8 +1725,7 @@ EOT
1684
1725
  :type => :duration,
1685
1726
  :desc => "How often puppet agent applies the catalog.
1686
1727
  Note that a runinterval of 0 means \"run continuously\" rather than
1687
- \"never run.\" If you want puppet agent to never run, you should start
1688
- it with the `--no-client` option. #{AS_DURATION}",
1728
+ \"never run.\" #{AS_DURATION}",
1689
1729
  },
1690
1730
  :runtimeout => {
1691
1731
  :default => "1h",
@@ -1701,7 +1741,7 @@ EOT
1701
1741
  and does not need to horizontally scale.",
1702
1742
  },
1703
1743
  :ca_port => {
1704
- :default => "$masterport",
1744
+ :default => "$serverport",
1705
1745
  :desc => "The port to use for the certificate authority.",
1706
1746
  },
1707
1747
  :preferred_serialization_format => {
@@ -1790,7 +1830,7 @@ EOT
1790
1830
  :desc => "The server to send transaction reports to.",
1791
1831
  },
1792
1832
  :report_port => {
1793
- :default => "$masterport",
1833
+ :default => "$serverport",
1794
1834
  :desc => "The port to communicate with the report_server.",
1795
1835
  },
1796
1836
  :report => {
@@ -1830,7 +1870,11 @@ EOT
1830
1870
  :default => "$statedir/last_run_report.yaml",
1831
1871
  :type => :file,
1832
1872
  :mode => "0640",
1833
- :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."
1834
1878
  },
1835
1879
  :graph => {
1836
1880
  :default => false,
@@ -1890,7 +1934,7 @@ EOT
1890
1934
  already ongoing puppet agent instance.
1891
1935
 
1892
1936
  This argument is by default disabled (value set to 0). In this case puppet agent will
1893
- immediatly exit if it cannot run at that moment. When a value other than 0 is set, this
1937
+ immediately exit if it cannot run at that moment. When a value other than 0 is set, this
1894
1938
  can also be used in combination with the `maxwaitforlock` argument.
1895
1939
  #{AS_DURATION}",
1896
1940
  },
@@ -1941,9 +1985,26 @@ EOT
1941
1985
  is used for retrieval, so anything that is a valid file source can
1942
1986
  be used here.",
1943
1987
  },
1988
+ :pluginsync => {
1989
+ :default => true,
1990
+ :type => :boolean,
1991
+ :desc => "Whether plugins should be synced with the central server. This setting is
1992
+ deprecated.",
1993
+ :hook => proc { |value|
1994
+ #TRANSLATORS 'pluginsync' is a setting and should not be translated
1995
+ Puppet.deprecation_warning(_("Setting 'pluginsync' is deprecated."))
1996
+ }
1997
+ },
1944
1998
  :pluginsignore => {
1945
1999
  :default => ".svn CVS .git .hg",
1946
2000
  :desc => "What files to ignore when pulling down plugins.",
2001
+ },
2002
+ :ignore_plugin_errors => {
2003
+ :default => true,
2004
+ :type => :boolean,
2005
+ :desc => "Whether the puppet run should ignore errors during pluginsync. If the setting
2006
+ is false and there are errors during pluginsync, then the agent will abort the run and
2007
+ submit a report containing information about the failed run."
1947
2008
  }
1948
2009
  )
1949
2010
 
@@ -2088,7 +2149,7 @@ EOT
2088
2149
  }
2089
2150
  )
2090
2151
 
2091
- settings.define_settings(:master,
2152
+ settings.define_settings(:server,
2092
2153
  :storeconfigs => {
2093
2154
  :default => false,
2094
2155
  :type => :boolean,
@@ -2157,12 +2218,18 @@ EOT
2157
2218
  :func3x_check => {
2158
2219
  :default => true,
2159
2220
  :type => :boolean,
2160
- :desc => <<-'EOT'
2221
+ :desc => <<-'EOT',
2161
2222
  Causes validation of loaded legacy Ruby functions (3x API) to raise errors about illegal constructs that
2162
2223
  could cause harm or that simply does not work. This flag is on by default. This flag is made available
2163
2224
  so that the validation can be turned off in case the method of validation is faulty - if encountered, please
2164
2225
  file a bug report.
2165
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
2166
2233
  },
2167
2234
  :tasks => {
2168
2235
  :default => false,