puppet 6.18.0-universal-darwin → 6.21.1-universal-darwin

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 (276) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +37 -34
  5. data/README.md +1 -2
  6. data/Rakefile +4 -12
  7. data/lib/puppet/agent/locker.rb +0 -7
  8. data/lib/puppet/application.rb +10 -6
  9. data/lib/puppet/application/agent.rb +9 -3
  10. data/lib/puppet/application/apply.rb +3 -2
  11. data/lib/puppet/application/device.rb +1 -0
  12. data/lib/puppet/application/doc.rb +1 -1
  13. data/lib/puppet/application/filebucket.rb +2 -2
  14. data/lib/puppet/application/lookup.rb +5 -5
  15. data/lib/puppet/application/script.rb +1 -0
  16. data/lib/puppet/application_support.rb +7 -0
  17. data/lib/puppet/configurer.rb +50 -8
  18. data/lib/puppet/defaults.rb +67 -35
  19. data/lib/puppet/environments.rb +84 -59
  20. data/lib/puppet/face/catalog.rb +1 -1
  21. data/lib/puppet/face/config.rb +56 -16
  22. data/lib/puppet/face/epp.rb +12 -2
  23. data/lib/puppet/face/facts.rb +60 -0
  24. data/lib/puppet/face/node.rb +3 -3
  25. data/lib/puppet/face/node/clean.rb +2 -2
  26. data/lib/puppet/face/status.rb +1 -1
  27. data/lib/puppet/ffi/posix.rb +10 -0
  28. data/lib/puppet/ffi/posix/constants.rb +14 -0
  29. data/lib/puppet/ffi/posix/functions.rb +24 -0
  30. data/lib/puppet/file_bucket/dipper.rb +1 -1
  31. data/lib/puppet/functions/epp.rb +1 -0
  32. data/lib/puppet/functions/inline_epp.rb +1 -0
  33. data/lib/puppet/functions/new.rb +8 -3
  34. data/lib/puppet/http.rb +1 -0
  35. data/lib/puppet/http/client.rb +1 -1
  36. data/lib/puppet/http/resolver.rb +5 -8
  37. data/lib/puppet/http/resolver/server_list.rb +18 -36
  38. data/lib/puppet/http/resolver/settings.rb +4 -4
  39. data/lib/puppet/http/resolver/srv.rb +5 -5
  40. data/lib/puppet/http/service.rb +3 -1
  41. data/lib/puppet/http/service/compiler.rb +1 -1
  42. data/lib/puppet/http/service/file_server.rb +1 -1
  43. data/lib/puppet/http/service/puppetserver.rb +39 -0
  44. data/lib/puppet/http/session.rb +5 -4
  45. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  46. data/lib/puppet/indirector/fact_search.rb +60 -0
  47. data/lib/puppet/indirector/facts/json.rb +27 -0
  48. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  49. data/lib/puppet/indirector/json.rb +5 -1
  50. data/lib/puppet/indirector/msgpack.rb +1 -1
  51. data/lib/puppet/indirector/node/json.rb +8 -0
  52. data/lib/puppet/indirector/report/json.rb +34 -0
  53. data/lib/puppet/indirector/request.rb +4 -4
  54. data/lib/puppet/indirector/yaml.rb +1 -1
  55. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  56. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  57. data/lib/puppet/network/formats.rb +2 -1
  58. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  59. data/lib/puppet/node/facts.rb +17 -0
  60. data/lib/puppet/pal/pal_impl.rb +70 -17
  61. data/lib/puppet/parser/ast/leaf.rb +3 -2
  62. data/lib/puppet/parser/templatewrapper.rb +1 -1
  63. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  64. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  65. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -3
  66. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  67. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  68. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  69. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  70. data/lib/puppet/property/list.rb +1 -1
  71. data/lib/puppet/provider/group/groupadd.rb +13 -8
  72. data/lib/puppet/provider/package/apt.rb +34 -2
  73. data/lib/puppet/provider/package/aptitude.rb +6 -0
  74. data/lib/puppet/provider/package/dpkg.rb +1 -1
  75. data/lib/puppet/provider/package/pip2.rb +17 -0
  76. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  77. data/lib/puppet/provider/package/yum.rb +1 -0
  78. data/lib/puppet/provider/service/debian.rb +2 -0
  79. data/lib/puppet/provider/user/aix.rb +2 -2
  80. data/lib/puppet/provider/user/useradd.rb +62 -8
  81. data/lib/puppet/reference/configuration.rb +6 -5
  82. data/lib/puppet/resource/type.rb +2 -1
  83. data/lib/puppet/rest/route.rb +2 -2
  84. data/lib/puppet/settings.rb +62 -20
  85. data/lib/puppet/settings/alias_setting.rb +37 -0
  86. data/lib/puppet/settings/base_setting.rb +26 -2
  87. data/lib/puppet/transaction/report.rb +11 -7
  88. data/lib/puppet/type/file/source.rb +1 -1
  89. data/lib/puppet/type/filebucket.rb +1 -1
  90. data/lib/puppet/type/package.rb +3 -3
  91. data/lib/puppet/util/autoload.rb +1 -8
  92. data/lib/puppet/util/connection.rb +8 -8
  93. data/lib/puppet/util/fact_dif.rb +62 -0
  94. data/lib/puppet/util/posix.rb +54 -5
  95. data/lib/puppet/util/rubygems.rb +5 -1
  96. data/lib/puppet/util/run_mode.rb +5 -1
  97. data/lib/puppet/util/windows/service.rb +1 -1
  98. data/lib/puppet/version.rb +1 -1
  99. data/locales/puppet.pot +289 -268
  100. data/man/man5/puppet.conf.5 +33 -17
  101. data/man/man8/puppet-agent.8 +7 -4
  102. data/man/man8/puppet-apply.8 +2 -2
  103. data/man/man8/puppet-catalog.8 +1 -1
  104. data/man/man8/puppet-config.8 +6 -6
  105. data/man/man8/puppet-describe.8 +1 -1
  106. data/man/man8/puppet-device.8 +2 -2
  107. data/man/man8/puppet-doc.8 +1 -1
  108. data/man/man8/puppet-epp.8 +1 -1
  109. data/man/man8/puppet-facts.8 +32 -1
  110. data/man/man8/puppet-filebucket.8 +3 -3
  111. data/man/man8/puppet-generate.8 +1 -1
  112. data/man/man8/puppet-help.8 +1 -1
  113. data/man/man8/puppet-key.8 +1 -1
  114. data/man/man8/puppet-lookup.8 +1 -1
  115. data/man/man8/puppet-man.8 +1 -1
  116. data/man/man8/puppet-module.8 +1 -1
  117. data/man/man8/puppet-node.8 +7 -4
  118. data/man/man8/puppet-parser.8 +1 -1
  119. data/man/man8/puppet-plugin.8 +1 -1
  120. data/man/man8/puppet-report.8 +4 -1
  121. data/man/man8/puppet-resource.8 +1 -1
  122. data/man/man8/puppet-script.8 +2 -2
  123. data/man/man8/puppet-ssl.8 +1 -1
  124. data/man/man8/puppet-status.8 +2 -2
  125. data/man/man8/puppet.8 +2 -2
  126. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  127. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  128. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  129. data/spec/integration/application/agent_spec.rb +183 -22
  130. data/spec/integration/application/apply_spec.rb +19 -0
  131. data/spec/integration/application/filebucket_spec.rb +7 -7
  132. data/spec/integration/application/plugin_spec.rb +3 -3
  133. data/spec/integration/configurer_spec.rb +14 -0
  134. data/spec/integration/defaults_spec.rb +19 -1
  135. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  136. data/spec/integration/resource/type_collection_spec.rb +2 -6
  137. data/spec/integration/transaction_spec.rb +4 -9
  138. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  139. data/spec/integration/util/windows/registry_spec.rb +0 -10
  140. data/spec/lib/puppet_spec/settings.rb +6 -1
  141. data/spec/shared_contexts/types_setup.rb +2 -0
  142. data/spec/spec_helper.rb +1 -4
  143. data/spec/unit/agent_spec.rb +8 -6
  144. data/spec/unit/application/agent_spec.rb +0 -1
  145. data/spec/unit/application/config_spec.rb +224 -4
  146. data/spec/unit/application/doc_spec.rb +2 -2
  147. data/spec/unit/application/facts_spec.rb +3 -1
  148. data/spec/unit/application/filebucket_spec.rb +0 -2
  149. data/spec/unit/application_spec.rb +60 -13
  150. data/spec/unit/configurer_spec.rb +39 -6
  151. data/spec/unit/confine/feature_spec.rb +1 -1
  152. data/spec/unit/confine_spec.rb +8 -2
  153. data/spec/unit/defaults_spec.rb +20 -1
  154. data/spec/unit/environments_spec.rb +176 -32
  155. data/spec/unit/face/config_spec.rb +62 -11
  156. data/spec/unit/face/node_spec.rb +2 -13
  157. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
  158. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  159. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  160. data/spec/unit/file_system_spec.rb +1 -2
  161. data/spec/unit/forge/module_release_spec.rb +2 -7
  162. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  163. data/spec/unit/http/resolver_spec.rb +24 -4
  164. data/spec/unit/http/service/ca_spec.rb +2 -2
  165. data/spec/unit/http/service/compiler_spec.rb +51 -2
  166. data/spec/unit/http/service/file_server_spec.rb +2 -2
  167. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  168. data/spec/unit/http/service/report_spec.rb +2 -2
  169. data/spec/unit/http/service_spec.rb +1 -1
  170. data/spec/unit/http/session_spec.rb +8 -20
  171. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  172. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  173. data/spec/unit/indirector/face_spec.rb +0 -1
  174. data/spec/unit/indirector/facts/facter_spec.rb +0 -1
  175. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  176. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  177. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  178. data/spec/unit/indirector/indirection_spec.rb +8 -12
  179. data/spec/unit/indirector/json_spec.rb +8 -8
  180. data/spec/unit/indirector/key/file_spec.rb +0 -1
  181. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  182. data/spec/unit/indirector/node/json_spec.rb +33 -0
  183. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  184. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  185. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  186. data/spec/unit/indirector/request_spec.rb +4 -4
  187. data/spec/unit/indirector/rest_spec.rb +1 -1
  188. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  189. data/spec/unit/indirector/yaml_spec.rb +7 -7
  190. data/spec/unit/indirector_spec.rb +2 -2
  191. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  192. data/spec/unit/network/authconfig_spec.rb +0 -3
  193. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -9
  194. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  195. data/spec/unit/network/http/handler_spec.rb +0 -5
  196. data/spec/unit/parser/compiler_spec.rb +3 -19
  197. data/spec/unit/parser/resource_spec.rb +14 -8
  198. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  199. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  200. data/spec/unit/property_spec.rb +1 -0
  201. data/spec/unit/provider/exec_spec.rb +4 -3
  202. data/spec/unit/provider/group/groupadd_spec.rb +5 -2
  203. data/spec/unit/provider/nameservice_spec.rb +66 -65
  204. data/spec/unit/provider/package/apt_spec.rb +28 -23
  205. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  206. data/spec/unit/provider/package/base_spec.rb +6 -5
  207. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  208. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  209. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  210. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  211. data/spec/unit/provider/package/pip_spec.rb +6 -11
  212. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  213. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  214. data/spec/unit/provider/package/yum_spec.rb +31 -0
  215. data/spec/unit/provider/service/base_spec.rb +2 -4
  216. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  217. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  218. data/spec/unit/provider/service/debian_spec.rb +3 -5
  219. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  220. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  221. data/spec/unit/provider/service/init_spec.rb +4 -5
  222. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  223. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  224. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  225. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  226. data/spec/unit/provider/service/runit_spec.rb +2 -1
  227. data/spec/unit/provider/service/smf_spec.rb +1 -1
  228. data/spec/unit/provider/service/src_spec.rb +3 -5
  229. data/spec/unit/provider/service/systemd_spec.rb +3 -1
  230. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  231. data/spec/unit/provider/user/aix_spec.rb +5 -0
  232. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  233. data/spec/unit/provider/user/pw_spec.rb +2 -0
  234. data/spec/unit/provider/user/useradd_spec.rb +56 -3
  235. data/spec/unit/provider_spec.rb +8 -10
  236. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  237. data/spec/unit/resource/capability_finder_spec.rb +6 -1
  238. data/spec/unit/resource/type_spec.rb +1 -1
  239. data/spec/unit/resource_spec.rb +11 -10
  240. data/spec/unit/rest/route_spec.rb +4 -4
  241. data/spec/unit/settings_spec.rb +576 -239
  242. data/spec/unit/ssl/base_spec.rb +0 -1
  243. data/spec/unit/ssl/host_spec.rb +0 -5
  244. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  245. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  246. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  247. data/spec/unit/transaction/report_spec.rb +2 -0
  248. data/spec/unit/transaction_spec.rb +13 -4
  249. data/spec/unit/type/file/content_spec.rb +0 -1
  250. data/spec/unit/type/file/selinux_spec.rb +0 -2
  251. data/spec/unit/type/file/source_spec.rb +1 -1
  252. data/spec/unit/type/file_spec.rb +0 -6
  253. data/spec/unit/type/filebucket_spec.rb +1 -1
  254. data/spec/unit/type/group_spec.rb +13 -6
  255. data/spec/unit/type/resources_spec.rb +7 -7
  256. data/spec/unit/type/service_spec.rb +1 -1
  257. data/spec/unit/type/tidy_spec.rb +0 -1
  258. data/spec/unit/type_spec.rb +2 -2
  259. data/spec/unit/util/at_fork_spec.rb +2 -2
  260. data/spec/unit/util/autoload_spec.rb +5 -1
  261. data/spec/unit/util/backups_spec.rb +1 -2
  262. data/spec/unit/util/execution_spec.rb +15 -11
  263. data/spec/unit/util/inifile_spec.rb +6 -14
  264. data/spec/unit/util/log_spec.rb +8 -7
  265. data/spec/unit/util/logging_spec.rb +3 -3
  266. data/spec/unit/util/posix_spec.rb +363 -15
  267. data/spec/unit/util/rubygems_spec.rb +2 -2
  268. data/spec/unit/util/run_mode_spec.rb +6 -6
  269. data/spec/unit/util/selinux_spec.rb +76 -52
  270. data/spec/unit/util/storage_spec.rb +3 -1
  271. data/spec/unit/util/suidmanager_spec.rb +44 -41
  272. data/spec/unit/util_spec.rb +13 -6
  273. metadata +32 -10
  274. data/spec/integration/application/config_spec.rb +0 -74
  275. data/spec/unit/face/catalog_spec.rb +0 -6
  276. data/spec/unit/face/module_spec.rb +0 -3
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-NODE" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-NODE" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-node\fR \- View and manage node definitions\.
@@ -119,13 +119,13 @@ Retrieve an "empty" (no classes, no ENC\-imposed parameters, and an environment
119
119
  $ puppet node find somenode\.puppetlabs\.lan \-\-terminus plain \-\-render\-as yaml
120
120
  .
121
121
  .P
122
- Retrieve a node using the puppet master\'s configured ENC:
122
+ Retrieve a node using the Puppet Server\'s configured ENC:
123
123
  .
124
124
  .P
125
- $ puppet node find somenode\.puppetlabs\.lan \-\-terminus exec \-\-run_mode master \-\-render\-as yaml
125
+ $ puppet node find somenode\.puppetlabs\.lan \-\-terminus exec \-\-run_mode server \-\-render\-as yaml
126
126
  .
127
127
  .P
128
- Retrieve the same node from the puppet master:
128
+ Retrieve the same node from the Puppet Server:
129
129
  .
130
130
  .P
131
131
  $ puppet node find somenode\.puppetlabs\.lan \-\-terminus rest \-\-render\-as yaml
@@ -137,6 +137,9 @@ This subcommand is an indirector face, which exposes \fBfind\fR, \fBsearch\fR, \
137
137
  \fBexec\fR
138
138
  .
139
139
  .IP "\(bu" 4
140
+ \fBjson\fR
141
+ .
142
+ .IP "\(bu" 4
140
143
  \fBmemory\fR
141
144
  .
142
145
  .IP "\(bu" 4
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-PARSER" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-PARSER" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-parser\fR \- Interact directly with the parser\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-PLUGIN" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-PLUGIN" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-plugin\fR \- Interact with the Puppet plugin system\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-REPORT" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-REPORT" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-report\fR \- Create, display, and submit reports\.
@@ -107,6 +107,9 @@ API example:report = Puppet::Face[:catalog, \'0\.0\.1\']\.apply Puppet::Face[:re
107
107
  This subcommand is an indirector face, which exposes \fBfind\fR, \fBsearch\fR, \fBsave\fR, and \fBdestroy\fR actions for an indirected subsystem of Puppet\. Valid termini for this face include:
108
108
  .
109
109
  .IP "\(bu" 4
110
+ \fBjson\fR
111
+ .
112
+ .IP "\(bu" 4
110
113
  \fBmsgpack\fR
111
114
  .
112
115
  .IP "\(bu" 4
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-RESOURCE" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-RESOURCE" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-resource\fR \- The resource abstraction layer shell
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-SCRIPT" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-SCRIPT" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-script\fR \- Run a puppet manifests as a script without compiling a catalog
@@ -34,7 +34,7 @@ Print this help message
34
34
  .
35
35
  .TP
36
36
  \-\-logdest
37
- Where to send log messages\. Choose between \'syslog\' (the POSIX syslog service), \'eventlog\' (the Windows Event Log), \'console\', or the path to a log file\. Defaults to \'console\'\.
37
+ Where to send log messages\. Choose between \'syslog\' (the POSIX syslog service), \'eventlog\' (the Windows Event Log), \'console\', or the path to a log file\. Defaults to \'console\'\. Multiple destinations can be set using a comma separated list (eg: \fB/path/file1,console,/path/file2\fR)"
38
38
  .
39
39
  .IP
40
40
  A path ending with \'\.json\' will receive structured output in JSON format\. The log file will not have an ending \']\' automatically written to it due to the appending nature of logging\. It must be appended manually to make the content valid JSON\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-SSL" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-SSL" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-ssl\fR \- Manage SSL keys and certificates for puppet SSL clients
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-STATUS" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-STATUS" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-status\fR \- View puppet server status\.
@@ -57,7 +57,7 @@ puppet status [\-\-terminus _TERMINUS] [\-\-extra HASH] [\fIkey\fR]
57
57
  Checks whether a Puppet server is properly receiving and processing HTTP requests\. This action is only useful when used with \'\-\-terminus rest\'; when invoked with the \fBlocal\fR terminus, \fBfind\fR will always return true\.
58
58
  .
59
59
  .IP
60
- Over REST, this action will query the configured puppet master by default\. To query other servers, including puppet agent nodes started with the \fI\-\-listen\fR option, you can set the global \fI\-\-server\fR and \fI\-\-masterport\fR options on the command line; note that agent nodes listen on port 8139\.
60
+ Over REST, this action will query the configured puppet master by default\. To query other servers, including puppet agent nodes started with the \fI\-\-listen\fR option, you can set the global \fI\-\-server\fR and \fI\-\-serverport\fR options on the command line; note that agent nodes listen on port 8139\.
61
61
  .
62
62
  .IP
63
63
  \fBRETURNS\fR
data/man/man8/puppet.8 CHANGED
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET" "8" "August 2020" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET" "8" "February 2021" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\fR
@@ -25,4 +25,4 @@ Specialized:
25
25
  catalog Compile, save, view, and convert catalogs\. describe Display help about resource types device Manage remote network devices doc Generate Puppet references epp Interact directly with the EPP template parser/renderer\. facts Retrieve and store facts\. filebucket Store and retrieve files in a filebucket generate Generates Puppet code from Ruby definitions\. node View and manage node definitions\. parser Interact directly with the parser\. plugin Interact with the Puppet plugin system\. script Run a puppet manifests as a script without compiling a catalog ssl Manage SSL keys and certificates for puppet SSL clients
26
26
  .
27
27
  .P
28
- See \'puppet help \fIsubcommand\fR \fIaction\fR\' for help on a specific subcommand action\. See \'puppet help \fIsubcommand\fR\' for help on a specific subcommand\. Puppet v6\.18\.0
28
+ See \'puppet help \fIsubcommand\fR \fIaction\fR\' for help on a specific subcommand action\. See \'puppet help \fIsubcommand\fR\' for help on a specific subcommand\. Puppet v6\.21\.0
@@ -0,0 +1,91 @@
1
+ {
2
+ "tags": [
3
+ "settings"
4
+ ],
5
+ "name": "127.0.0.1",
6
+ "version": 1607629733,
7
+ "code_id": null,
8
+ "catalog_uuid": "afc8472a-306b-4b24-b060-e956dffb79b8",
9
+ "catalog_format": 1,
10
+ "environment": "production",
11
+ "resources": [
12
+ {
13
+ "type": "Stage",
14
+ "title": "main",
15
+ "tags": [
16
+ "stage"
17
+ ],
18
+ "exported": false,
19
+ "parameters": {
20
+ "name": "main"
21
+ }
22
+ },
23
+ {
24
+ "type": "Class",
25
+ "title": "Settings",
26
+ "tags": [
27
+ "class",
28
+ "settings"
29
+ ],
30
+ "exported": false
31
+ },
32
+ {
33
+ "type": "Class",
34
+ "title": "main",
35
+ "tags": [
36
+ "class"
37
+ ],
38
+ "exported": false,
39
+ "parameters": {
40
+ "name": "main"
41
+ }
42
+ },
43
+ {
44
+ "type": "Notify",
45
+ "title": "deferred",
46
+ "tags": [
47
+ "notify",
48
+ "deferred",
49
+ "class"
50
+ ],
51
+ "file": "",
52
+ "line": 1,
53
+ "exported": false,
54
+ "parameters": {
55
+ "message": {
56
+ "__ptype": "Deferred",
57
+ "name": "new",
58
+ "arguments": [
59
+ {
60
+ "__ptype": "Pcore::StringType"
61
+ },
62
+ {
63
+ "__ptype": "Deferred",
64
+ "name": "binary_file",
65
+ "arguments": [
66
+ "__SOURCE_PATH__"
67
+ ]
68
+ }
69
+ ]
70
+ }
71
+ }
72
+ }
73
+ ],
74
+ "edges": [
75
+ {
76
+ "source": "Stage[main]",
77
+ "target": "Class[Settings]"
78
+ },
79
+ {
80
+ "source": "Stage[main]",
81
+ "target": "Class[main]"
82
+ },
83
+ {
84
+ "source": "Class[main]",
85
+ "target": "Notify[deferred]"
86
+ }
87
+ ],
88
+ "classes": [
89
+ "settings"
90
+ ]
91
+ }
@@ -0,0 +1,30 @@
1
+ concurrent-ruby (1.1.5)
2
+
3
+ deep_merge (1.0.1)
4
+
5
+ fast_gettext (1.1.2)
6
+
7
+ gettext (3.2.2)
8
+
9
+ hiera-eyaml (3.2.0)
10
+
11
+ highline (1.6.21)
12
+
13
+ hocon (1.3.1, 1.2.5)
14
+
15
+ locale (2.1.3, 2.1.2)
16
+
17
+ multi_json (1.14.1)
18
+
19
+ optimist (3.0.1)
20
+
21
+ puppet-resource_api (1.8.13)
22
+
23
+ puppetserver-ca (1.8.0)
24
+
25
+ semantic_puppet (1.0.2)
26
+
27
+ text (1.3.1)
28
+
29
+ world_airports (1.1.3)
30
+
@@ -6,6 +6,10 @@ test_aix_user:
6
6
  no_password_user:
7
7
  lastupdate = another_last_update
8
8
 
9
+ tab_password_user:
10
+ password = some_password
11
+ lastupdate = another_last_update
12
+
9
13
  daemon:
10
14
  password = *
11
15
 
@@ -15,15 +15,12 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
15
15
  let(:formatter) { Puppet::Network::FormatHandler.format(:rich_data_json) }
16
16
 
17
17
  context 'server_list' do
18
- before :each do
19
- Puppet[:log_level] = 'debug'
20
- end
21
-
22
18
  it "uses the first server in the list" do
23
19
  Puppet[:server_list] = '127.0.0.1'
20
+ Puppet[:log_level] = 'debug'
24
21
 
25
22
  server.start_server do |port|
26
- Puppet[:masterport] = port
23
+ Puppet[:serverport] = port
27
24
  expect {
28
25
  agent.command_line.args << '--test'
29
26
  agent.run
@@ -36,15 +33,17 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
36
33
  Puppet[:server_list] = "puppet.example.com,#{Puppet[:server]}"
37
34
 
38
35
  server.start_server do |port|
39
- Puppet[:masterport] = port
36
+ Puppet[:serverport] = port
40
37
  expect {
41
38
  agent.command_line.args << '--test'
42
39
  agent.run
43
40
  }.to exit_with(0)
44
- .and output(%r{Unable to connect to server from server_list setting: Request to https://puppet.example.com:#{port}/status/v1/simple/master failed}).to_stdout
41
+ .and output(%r{Notice: Applied catalog}).to_stdout
42
+ .and output(%r{Unable to connect to server from server_list setting: Request to https://puppet.example.com:#{port}/status/v1/simple/master failed}).to_stderr
45
43
 
46
44
  report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
47
45
  expect(report.master_used).to eq("127.0.0.1:#{port}")
46
+ expect(report.server_used).to eq("127.0.0.1:#{port}")
48
47
  end
49
48
  end
50
49
 
@@ -55,17 +54,19 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
55
54
  agent.command_line.args << '--test'
56
55
  agent.run
57
56
  }.to exit_with(1)
58
- .and output(%r{Unable to connect to server from server_list setting: Could not select a functional puppet master from server_list: 'puppet.example.com'}).to_stdout
59
- .and output(/Error: Could not run Puppet configuration client: Could not select a functional puppet master from server_list: 'puppet.example.com'/).to_stderr
57
+ .and output(a_string_matching(%r{Unable to connect to server from server_list setting})
58
+ .and matching(/Error: Could not run Puppet configuration client: Could not select a functional puppet server from server_list: 'puppet.example.com'/)).to_stderr
60
59
 
61
60
  # I'd expect puppet to update the last run report even if the server_list was
62
61
  # exhausted, but it doesn't work that way currently, see PUP-6708
63
62
  expect(File).to_not be_exist(Puppet[:lastrunreport])
64
63
  end
65
64
 
66
- it "omits master_used when not using server_list" do
65
+ it "omits server_used when not using server_list" do
66
+ Puppet[:log_level] = 'debug'
67
+
67
68
  server.start_server do |port|
68
- Puppet[:masterport] = port
69
+ Puppet[:serverport] = port
69
70
  expect {
70
71
  agent.command_line.args << '--test'
71
72
  agent.run
@@ -75,10 +76,12 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
75
76
 
76
77
  report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
77
78
  expect(report.master_used).to be_nil
79
+ expect(report.server_used).to be_nil
78
80
  end
79
81
 
80
82
  it "server_list takes precedence over server" do
81
83
  Puppet[:server] = 'notvalid.example.com'
84
+ Puppet[:log_level] = 'debug'
82
85
 
83
86
  server.start_server do |port|
84
87
  Puppet[:server_list] = "127.0.0.1:#{port}"
@@ -91,15 +94,16 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
91
94
 
92
95
  report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
93
96
  expect(report.master_used).to eq("127.0.0.1:#{port}")
97
+ expect(report.server_used).to eq("127.0.0.1:#{port}")
94
98
  end
95
99
  end
96
100
  end
97
101
 
98
102
  context 'rich data' do
99
- it "applies deferred values" do
103
+ it "calls a deferred 4x function" do
100
104
  catalog_handler = -> (req, res) {
101
105
  catalog = compile_to_catalog(<<-MANIFEST, node)
102
- notify { 'deferred':
106
+ notify { 'deferred4x':
103
107
  message => Deferred('join', [[1,2,3], ':'])
104
108
  }
105
109
  MANIFEST
@@ -109,12 +113,71 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
109
113
  }
110
114
 
111
115
  server.start_server(mounts: {catalog: catalog_handler}) do |port|
112
- Puppet[:masterport] = port
116
+ Puppet[:serverport] = port
117
+ expect {
118
+ agent.command_line.args << '--test'
119
+ agent.run
120
+ }.to exit_with(2)
121
+ .and output(%r{Notice: /Stage\[main\]/Main/Notify\[deferred4x\]/message: defined 'message' as '1:2:3'}).to_stdout
122
+ end
123
+ end
124
+
125
+ it "calls a deferred 3x function" do
126
+ catalog_handler = -> (req, res) {
127
+ catalog = compile_to_catalog(<<-MANIFEST, node)
128
+ notify { 'deferred3x':
129
+ message => Deferred('sprintf', ['%s', 'I am deferred'])
130
+ }
131
+ MANIFEST
132
+
133
+ res.body = formatter.render(catalog)
134
+ res['Content-Type'] = formatter.mime
135
+ }
136
+
137
+ server.start_server(mounts: {catalog: catalog_handler}) do |port|
138
+ Puppet[:serverport] = port
113
139
  expect {
114
140
  agent.command_line.args << '--test'
115
141
  agent.run
116
142
  }.to exit_with(2)
117
- .and output(%r{Notice: /Stage\[main\]/Main/Notify\[deferred\]/message: defined 'message' as '1:2:3'}).to_stdout
143
+ .and output(%r{Notice: /Stage\[main\]/Main/Notify\[deferred3x\]/message: defined 'message' as 'I am deferred'}).to_stdout
144
+ end
145
+ end
146
+
147
+ it "re-evaluates a deferred function in a cached catalog" do
148
+ Puppet[:report] = false
149
+ Puppet[:use_cached_catalog] = true
150
+ Puppet[:usecacheonfailure] = false
151
+
152
+ catalog_dir = File.join(Puppet[:client_datadir], 'catalog')
153
+ Puppet::FileSystem.mkpath(catalog_dir)
154
+ cached_catalog_path = "#{File.join(catalog_dir, Puppet[:certname])}.json"
155
+
156
+ # our catalog contains a deferred function that calls `binary_file`
157
+ # to read `source`. The function returns a Binary object, whose
158
+ # base64 value is printed to stdout
159
+ source = tmpfile('deferred_source')
160
+ catalog = File.read(my_fixture('cached_deferred_catalog.json'))
161
+ catalog.gsub!('__SOURCE_PATH__', source)
162
+ File.write(cached_catalog_path, catalog)
163
+
164
+ # verify we get a different result each time the deferred function
165
+ # is evaluated, and reads `source`.
166
+ {
167
+ '1234' => 'MTIzNA==',
168
+ '5678' => 'NTY3OA=='
169
+ }.each_pair do |content, base64|
170
+ File.write(source, content)
171
+
172
+ expect {
173
+ agent.command_line.args << '-t'
174
+ agent.run
175
+
176
+ }.to exit_with(2)
177
+ .and output(/Notice: #{base64}/).to_stdout
178
+
179
+ # reset state so we can run again
180
+ Puppet::Application.clear!
118
181
  end
119
182
  end
120
183
 
@@ -131,7 +194,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
131
194
  }
132
195
 
133
196
  server.start_server(mounts: {catalog: catalog_handler}) do |port|
134
- Puppet[:masterport] = port
197
+ Puppet[:serverport] = port
135
198
  expect {
136
199
  agent.command_line.args << '--test'
137
200
  agent.run
@@ -195,7 +258,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
195
258
  }
196
259
 
197
260
  server.start_server(mounts: {catalog: catalog_handler}) do |port|
198
- Puppet[:masterport] = port
261
+ Puppet[:serverport] = port
199
262
  expect {
200
263
  expect {
201
264
  agent.command_line.args << '--test'
@@ -240,7 +303,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
240
303
  }
241
304
 
242
305
  server.start_server(mounts: mounts) do |port|
243
- Puppet[:masterport] = port
306
+ Puppet[:serverport] = port
244
307
  expect {
245
308
  agent.command_line.args << '--test'
246
309
  agent.run
@@ -288,7 +351,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
288
351
  }
289
352
 
290
353
  server.start_server(mounts: {catalog: catalog_handler}) do |puppetserver_port|
291
- Puppet[:masterport] = puppetserver_port
354
+ Puppet[:serverport] = puppetserver_port
292
355
 
293
356
  # override path to system cacert bundle, this must be done before
294
357
  # the SSLContext is created and the call to X509::Store.set_default_paths
@@ -340,7 +403,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
340
403
  }
341
404
 
342
405
  server.start_server(mounts: {catalog: catalog_handler}) do |puppetserver_port|
343
- Puppet[:masterport] = puppetserver_port
406
+ Puppet[:serverport] = puppetserver_port
344
407
 
345
408
  # override path to system cacert bundle, this must be done before
346
409
  # the SSLContext is created and the call to X509::Store.set_default_paths
@@ -391,7 +454,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
391
454
  }
392
455
 
393
456
  server.start_server(mounts: {catalog: catalog_handler}) do |puppetserver_port|
394
- Puppet[:masterport] = puppetserver_port
457
+ Puppet[:serverport] = puppetserver_port
395
458
 
396
459
  # set path to external cacert bundle, this must be done before
397
460
  # the SSLContext is created
@@ -431,7 +494,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
431
494
  it "waits for other agent run to finish before starting" do
432
495
  server.start_server do |port|
433
496
  path = Puppet[:agent_catalog_run_lockfile]
434
- Puppet[:masterport] = port
497
+ Puppet[:serverport] = port
435
498
  Puppet[:waitforlock] = 1
436
499
 
437
500
  th = Thread.new {
@@ -472,4 +535,102 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
472
535
  th.kill # kill thread so we don't wait too much
473
536
  end
474
537
  end
538
+
539
+ context 'cached catalogs' do
540
+ it 'falls back to a cached catalog' do
541
+ catalog_handler = -> (req, res) {
542
+ catalog = compile_to_catalog(<<-MANIFEST, node)
543
+ notify { 'a message': }
544
+ MANIFEST
545
+
546
+ res.body = formatter.render(catalog)
547
+ res['Content-Type'] = formatter.mime
548
+ }
549
+
550
+ server.start_server(mounts: {catalog: catalog_handler}) do |port|
551
+ Puppet[:serverport] = port
552
+ expect {
553
+ agent.command_line.args << '--test'
554
+ agent.run
555
+ }.to exit_with(2)
556
+ .and output(%r{Caching catalog for #{Puppet[:certname]}}).to_stdout
557
+ end
558
+
559
+ # reset state so we can run again
560
+ Puppet::Application.clear!
561
+
562
+ # --test above turns off `usecacheonfailure` so re-enable here
563
+ Puppet[:usecacheonfailure] = true
564
+
565
+ # run agent without server
566
+ expect {
567
+ agent.command_line.args << '--no-daemonize' << '--onetime' << '--server' << '127.0.0.1'
568
+ agent.run
569
+ }.to exit_with(2)
570
+ .and output(a_string_matching(
571
+ /Using cached catalog from environment 'production'/
572
+ ).and matching(
573
+ /Notify\[a message\]\/message:/
574
+ )).to_stdout
575
+ .and output(/the agent run will continue/).to_stderr
576
+ end
577
+
578
+ it 'preserves the old cached catalog if validation fails with the old one' do
579
+ catalog_handler = -> (req, res) {
580
+ catalog = compile_to_catalog(<<-MANIFEST, node)
581
+ exec { 'unqualified_command': }
582
+ MANIFEST
583
+
584
+ res.body = formatter.render(catalog)
585
+ res['Content-Type'] = formatter.mime
586
+ }
587
+
588
+ server.start_server(mounts: {catalog: catalog_handler}) do |port|
589
+ Puppet[:serverport] = port
590
+ expect {
591
+ agent.command_line.args << '--test'
592
+ agent.run
593
+ }.to exit_with(1)
594
+ .and output(/Using configured environment/).to_stdout
595
+ .and output(%r{Validation of Exec\[unqualified_command\] failed: 'unqualified_command' is not qualified and no path was specified}).to_stderr
596
+ end
597
+
598
+ # cached catalog should not be updated
599
+ cached_catalog = "#{File.join(Puppet[:client_datadir], 'catalog', Puppet[:certname])}.json"
600
+ expect(File).to_not be_exist(cached_catalog)
601
+ end
602
+ end
603
+
604
+ context "reporting" do
605
+ it "stores a finalized report" do
606
+ catalog_handler = -> (req, res) {
607
+ catalog = compile_to_catalog(<<-MANIFEST, node)
608
+ notify { 'foo':
609
+ require => Notify['bar']
610
+ }
611
+
612
+ notify { 'bar':
613
+ require => Notify['foo']
614
+ }
615
+ MANIFEST
616
+
617
+ res.body = formatter.render(catalog)
618
+ res['Content-Type'] = formatter.mime
619
+ }
620
+
621
+ server.start_server(mounts: {catalog: catalog_handler}) do |port|
622
+ Puppet[:serverport] = port
623
+ expect {
624
+ agent.command_line.args << '--test'
625
+ agent.run
626
+ }.to exit_with(1)
627
+ .and output(%r{Applying configuration}).to_stdout
628
+ .and output(%r{Found 1 dependency cycle}).to_stderr
629
+
630
+ report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
631
+ expect(report.status).to eq("failed")
632
+ expect(report.metrics).to_not be_empty
633
+ end
634
+ end
635
+ end
475
636
  end