puppet 6.24.0 → 6.25.0

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

Potentially problematic release.


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

Files changed (279) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/Gemfile.lock +12 -12
  4. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  5. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  6. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  7. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  8. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  9. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  10. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
  11. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  12. data/ext/README.md +13 -0
  13. data/lib/puppet/application/agent.rb +4 -0
  14. data/lib/puppet/application/apply.rb +20 -2
  15. data/lib/puppet/application/resource.rb +15 -13
  16. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  17. data/lib/puppet/configurer.rb +85 -57
  18. data/lib/puppet/confine/variable.rb +1 -1
  19. data/lib/puppet/defaults.rb +36 -30
  20. data/lib/puppet/environments.rb +66 -26
  21. data/lib/puppet/face/facts.rb +1 -1
  22. data/lib/puppet/facter_impl.rb +96 -0
  23. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  24. data/lib/puppet/file_serving/configuration.rb +3 -0
  25. data/lib/puppet/file_serving/mount/file.rb +4 -4
  26. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  27. data/lib/puppet/file_system/file_impl.rb +3 -1
  28. data/lib/puppet/forge.rb +1 -1
  29. data/lib/puppet/functions/find_template.rb +2 -2
  30. data/lib/puppet/http/service/compiler.rb +6 -1
  31. data/lib/puppet/indirector/catalog/compiler.rb +24 -6
  32. data/lib/puppet/indirector/catalog/rest.rb +1 -0
  33. data/lib/puppet/indirector/facts/facter.rb +6 -6
  34. data/lib/puppet/indirector/indirection.rb +1 -1
  35. data/lib/puppet/indirector/terminus.rb +4 -0
  36. data/lib/puppet/module/plan.rb +0 -1
  37. data/lib/puppet/module/task.rb +1 -1
  38. data/lib/puppet/module.rb +1 -0
  39. data/lib/puppet/module_tool/applications/installer.rb +8 -4
  40. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  41. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  42. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  43. data/lib/puppet/node/environment.rb +10 -11
  44. data/lib/puppet/pal/pal_impl.rb +1 -1
  45. data/lib/puppet/parser/scope.rb +1 -0
  46. data/lib/puppet/parser/templatewrapper.rb +1 -0
  47. data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
  48. data/lib/puppet/pops/model/ast.rb +1 -0
  49. data/lib/puppet/pops/model/factory.rb +2 -1
  50. data/lib/puppet/pops/parser/eparser.rb +201 -201
  51. data/lib/puppet/pops/parser/lexer2.rb +92 -91
  52. data/lib/puppet/pops/parser/slurp_support.rb +1 -0
  53. data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
  54. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  55. data/lib/puppet/pops/types/type_formatter.rb +4 -3
  56. data/lib/puppet/pops/types/types.rb +1 -1
  57. data/lib/puppet/provider/aix_object.rb +1 -1
  58. data/lib/puppet/provider/group/groupadd.rb +5 -2
  59. data/lib/puppet/provider/package/pkg.rb +19 -2
  60. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  61. data/lib/puppet/provider/package/yum.rb +1 -1
  62. data/lib/puppet/provider/service/base.rb +1 -1
  63. data/lib/puppet/provider/service/init.rb +5 -5
  64. data/lib/puppet/provider/service/launchd.rb +2 -2
  65. data/lib/puppet/provider/service/redhat.rb +1 -1
  66. data/lib/puppet/provider/service/smf.rb +3 -3
  67. data/lib/puppet/provider/service/systemd.rb +2 -2
  68. data/lib/puppet/provider/service/upstart.rb +5 -5
  69. data/lib/puppet/provider/user/aix.rb +44 -1
  70. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  71. data/lib/puppet/provider/user/useradd.rb +72 -16
  72. data/lib/puppet/provider.rb +1 -1
  73. data/lib/puppet/reference/providers.rb +2 -2
  74. data/lib/puppet/resource/type_collection.rb +1 -0
  75. data/lib/puppet/runtime.rb +11 -1
  76. data/lib/puppet/settings.rb +2 -2
  77. data/lib/puppet/test/test_helper.rb +4 -1
  78. data/lib/puppet/transaction/persistence.rb +11 -1
  79. data/lib/puppet/transaction/report.rb +15 -1
  80. data/lib/puppet/type/exec.rb +19 -2
  81. data/lib/puppet/type/file.rb +6 -6
  82. data/lib/puppet/type/filebucket.rb +3 -3
  83. data/lib/puppet/type/group.rb +0 -1
  84. data/lib/puppet/type/resources.rb +1 -1
  85. data/lib/puppet/type/service.rb +8 -3
  86. data/lib/puppet/type/user.rb +0 -1
  87. data/lib/puppet/type.rb +1 -1
  88. data/lib/puppet/util/command_line.rb +1 -1
  89. data/lib/puppet/util/filetype.rb +2 -2
  90. data/lib/puppet/util/json.rb +3 -0
  91. data/lib/puppet/util/log.rb +1 -2
  92. data/lib/puppet/util/logging.rb +1 -25
  93. data/lib/puppet/util/pidlock.rb +1 -1
  94. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  95. data/lib/puppet/util/suidmanager.rb +1 -2
  96. data/lib/puppet/util/tagging.rb +1 -0
  97. data/lib/puppet/util/windows/user.rb +0 -2
  98. data/lib/puppet/util.rb +4 -3
  99. data/lib/puppet/version.rb +1 -1
  100. data/lib/puppet.rb +2 -6
  101. data/locales/puppet.pot +246 -230
  102. data/man/man5/puppet.conf.5 +33 -25
  103. data/man/man8/puppet-agent.8 +4 -1
  104. data/man/man8/puppet-apply.8 +1 -1
  105. data/man/man8/puppet-catalog.8 +1 -1
  106. data/man/man8/puppet-config.8 +1 -1
  107. data/man/man8/puppet-describe.8 +1 -1
  108. data/man/man8/puppet-device.8 +1 -1
  109. data/man/man8/puppet-doc.8 +1 -1
  110. data/man/man8/puppet-epp.8 +1 -1
  111. data/man/man8/puppet-facts.8 +1 -1
  112. data/man/man8/puppet-filebucket.8 +1 -1
  113. data/man/man8/puppet-generate.8 +1 -1
  114. data/man/man8/puppet-help.8 +1 -1
  115. data/man/man8/puppet-key.8 +1 -1
  116. data/man/man8/puppet-lookup.8 +1 -1
  117. data/man/man8/puppet-man.8 +1 -1
  118. data/man/man8/puppet-module.8 +3 -3
  119. data/man/man8/puppet-node.8 +1 -1
  120. data/man/man8/puppet-parser.8 +1 -1
  121. data/man/man8/puppet-plugin.8 +1 -1
  122. data/man/man8/puppet-report.8 +1 -1
  123. data/man/man8/puppet-resource.8 +1 -1
  124. data/man/man8/puppet-script.8 +1 -1
  125. data/man/man8/puppet-ssl.8 +1 -1
  126. data/man/man8/puppet-status.8 +1 -1
  127. data/man/man8/puppet.8 +2 -2
  128. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  129. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  130. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  131. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  132. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  133. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  134. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  135. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  136. data/spec/integration/application/agent_spec.rb +113 -37
  137. data/spec/integration/application/filebucket_spec.rb +5 -0
  138. data/spec/integration/configurer_spec.rb +18 -2
  139. data/spec/integration/indirector/facts/facter_spec.rb +3 -3
  140. data/spec/integration/l10n/compiler_spec.rb +37 -0
  141. data/spec/integration/transaction/report_spec.rb +1 -1
  142. data/spec/integration/type/file_spec.rb +2 -2
  143. data/spec/integration/type/package_spec.rb +6 -6
  144. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  145. data/spec/integration/util/windows/process_spec.rb +1 -9
  146. data/spec/lib/puppet_spec/modules.rb +13 -2
  147. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  148. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  149. data/spec/shared_contexts/l10n.rb +27 -0
  150. data/spec/spec_helper.rb +1 -10
  151. data/spec/unit/application/apply_spec.rb +76 -56
  152. data/spec/unit/application/resource_spec.rb +29 -0
  153. data/spec/unit/configurer_spec.rb +171 -56
  154. data/spec/unit/defaults_spec.rb +1 -0
  155. data/spec/unit/environments_spec.rb +150 -1
  156. data/spec/unit/facter_impl_spec.rb +31 -0
  157. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  158. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  159. data/spec/unit/file_serving/configuration_spec.rb +14 -4
  160. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  161. data/spec/unit/file_system_spec.rb +7 -0
  162. data/spec/unit/functions/logging_spec.rb +1 -0
  163. data/spec/unit/functions/lookup_spec.rb +64 -0
  164. data/spec/unit/http/service/compiler_spec.rb +8 -0
  165. data/spec/unit/indirector/catalog/compiler_spec.rb +87 -0
  166. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  167. data/spec/unit/indirector/indirection_spec.rb +10 -3
  168. data/spec/unit/interface/action_spec.rb +0 -9
  169. data/spec/unit/module_spec.rb +15 -1
  170. data/spec/unit/module_tool/applications/installer_spec.rb +39 -12
  171. data/spec/unit/network/authstore_spec.rb +0 -15
  172. data/spec/unit/network/formats_spec.rb +6 -0
  173. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
  174. data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
  175. data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
  176. data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
  177. data/spec/unit/provider/package/gem_spec.rb +1 -1
  178. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  179. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  180. data/spec/unit/provider/package/pip_spec.rb +1 -1
  181. data/spec/unit/provider/package/pkg_spec.rb +29 -4
  182. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  183. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  184. data/spec/unit/provider/service/launchd_spec.rb +11 -0
  185. data/spec/unit/provider/service/systemd_spec.rb +1 -1
  186. data/spec/unit/provider/user/aix_spec.rb +100 -0
  187. data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
  188. data/spec/unit/provider/user/useradd_spec.rb +43 -2
  189. data/spec/unit/provider_spec.rb +4 -4
  190. data/spec/unit/puppet_spec.rb +12 -4
  191. data/spec/unit/ssl/certificate_request_spec.rb +8 -14
  192. data/spec/unit/type/service_spec.rb +27 -0
  193. data/spec/unit/type_spec.rb +2 -2
  194. data/spec/unit/util/logging_spec.rb +2 -0
  195. data/tasks/parallel.rake +3 -3
  196. metadata +37 -94
  197. data/ext/README.environment +0 -8
  198. data/ext/dbfix.sql +0 -132
  199. data/ext/debian/README.Debian +0 -8
  200. data/ext/debian/README.source +0 -2
  201. data/ext/debian/TODO.Debian +0 -1
  202. data/ext/debian/changelog.erb +0 -1122
  203. data/ext/debian/compat +0 -1
  204. data/ext/debian/control +0 -144
  205. data/ext/debian/copyright +0 -339
  206. data/ext/debian/docs +0 -1
  207. data/ext/debian/fileserver.conf +0 -41
  208. data/ext/debian/puppet-common.dirs +0 -13
  209. data/ext/debian/puppet-common.install +0 -3
  210. data/ext/debian/puppet-common.lintian-overrides +0 -5
  211. data/ext/debian/puppet-common.manpages +0 -28
  212. data/ext/debian/puppet-common.postinst +0 -35
  213. data/ext/debian/puppet-common.postrm +0 -33
  214. data/ext/debian/puppet-el.dirs +0 -1
  215. data/ext/debian/puppet-el.emacsen-install +0 -25
  216. data/ext/debian/puppet-el.emacsen-remove +0 -11
  217. data/ext/debian/puppet-el.emacsen-startup +0 -9
  218. data/ext/debian/puppet-el.install +0 -1
  219. data/ext/debian/puppet-testsuite.install +0 -2
  220. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  221. data/ext/debian/puppet.lintian-overrides +0 -3
  222. data/ext/debian/puppet.logrotate +0 -20
  223. data/ext/debian/puppet.postinst +0 -20
  224. data/ext/debian/puppet.postrm +0 -20
  225. data/ext/debian/puppet.preinst +0 -20
  226. data/ext/debian/puppetmaster-common.install +0 -2
  227. data/ext/debian/puppetmaster-common.manpages +0 -2
  228. data/ext/debian/puppetmaster-common.postinst +0 -6
  229. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  230. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  231. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  232. data/ext/debian/puppetmaster.README.debian +0 -17
  233. data/ext/debian/puppetmaster.default +0 -14
  234. data/ext/debian/puppetmaster.init +0 -137
  235. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  236. data/ext/debian/puppetmaster.postinst +0 -20
  237. data/ext/debian/puppetmaster.postrm +0 -5
  238. data/ext/debian/puppetmaster.preinst +0 -22
  239. data/ext/debian/rules +0 -132
  240. data/ext/debian/source/format +0 -1
  241. data/ext/debian/source/options +0 -1
  242. data/ext/debian/vim-puppet.README.Debian +0 -13
  243. data/ext/debian/vim-puppet.dirs +0 -5
  244. data/ext/debian/vim-puppet.yaml +0 -7
  245. data/ext/debian/watch +0 -2
  246. data/ext/freebsd/puppetd +0 -26
  247. data/ext/freebsd/puppetmasterd +0 -26
  248. data/ext/gentoo/conf.d/puppet +0 -5
  249. data/ext/gentoo/conf.d/puppetmaster +0 -12
  250. data/ext/gentoo/init.d/puppet +0 -38
  251. data/ext/gentoo/init.d/puppetmaster +0 -51
  252. data/ext/gentoo/puppet/fileserver.conf +0 -41
  253. data/ext/ips/puppet-agent +0 -44
  254. data/ext/ips/puppet-master +0 -44
  255. data/ext/ips/puppet.p5m.erb +0 -12
  256. data/ext/ips/puppetagent.xml +0 -42
  257. data/ext/ips/puppetmaster.xml +0 -42
  258. data/ext/ips/rules +0 -19
  259. data/ext/ips/transforms +0 -34
  260. data/ext/ldap/puppet.schema +0 -24
  261. data/ext/logcheck/puppet +0 -23
  262. data/ext/osx/file_mapping.yaml +0 -33
  263. data/ext/osx/postflight.erb +0 -109
  264. data/ext/osx/preflight.erb +0 -52
  265. data/ext/osx/prototype.plist.erb +0 -38
  266. data/ext/redhat/fileserver.conf +0 -41
  267. data/ext/redhat/logrotate +0 -21
  268. data/ext/redhat/puppet.spec.erb +0 -842
  269. data/ext/redhat/server.init +0 -128
  270. data/ext/redhat/server.sysconfig +0 -13
  271. data/ext/solaris/pkginfo +0 -6
  272. data/ext/solaris/smf/puppetd.xml +0 -77
  273. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  274. data/ext/solaris/smf/svc-puppetd +0 -71
  275. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  276. data/ext/suse/puppet.spec +0 -310
  277. data/ext/suse/server.init +0 -173
  278. data/ext/yaml_nodes.rb +0 -105
  279. data/spec/unit/indirector/store_configs_spec.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd246439ddc29ee0e3d48b487d716b83b48b9d74c6cf88edc81162e4a1f5dd23
4
- data.tar.gz: 0304f3352c3055c66435683eab198ed0459176976af2ef842afb63576aab2b3c
3
+ metadata.gz: 20f0aaf2ac1082c2478a0c9635aa43f9a37fa77da75a724f8284d580fcab7010
4
+ data.tar.gz: c561e1428455cf0ab78eab68cb4633f5f0bdc4ff020a90dcd8672d6ee309e509
5
5
  SHA512:
6
- metadata.gz: 391f42a56716900820e90bb6a226af055d5ab6df2237d0071c0ffe6455baea8c0547d1233f0f6e1533091ecd3f840df026e9008c3faa3785908618fb78c5f5a3
7
- data.tar.gz: b9abd58eeeb3d5833fb427b824f77c6dba829db996f2d56dd15e40c9e46b13934a5e955abc54229d0032a45c8d1e56ea0898b8707b9f08d2d1c87647671c25ad
6
+ metadata.gz: fc33aacf4281d0dd2f2da42bfebaf45c1e81716dc67f8dbb0e95eb797e24469b46f4df5d95c89afac6146775b91d388ba84c443c4c3ea6edb1474483d0ec1ed7
7
+ data.tar.gz: c22eab4267770be1607ddf4b3f30042c028e72c8585b0d215115d5f35d7c5f02fbfdad4ca3b0df2eb79f40d3f87349fb281cf85bbc02f277e93b1366cf5bb4a6
data/Gemfile CHANGED
@@ -55,7 +55,7 @@ end
55
55
  group(:development, optional: true) do
56
56
  gem 'memory_profiler', require: false, platforms: [:mri]
57
57
  gem 'pry', require: false, platforms: [:ruby]
58
- gem "racc", "1.4.9", require: false, platforms: [:ruby]
58
+ gem "racc", "1.5.2", require: false, platforms: [:ruby]
59
59
  if RUBY_PLATFORM != 'java' && RUBY_VERSION.to_f >= 2.5
60
60
  gem 'ruby-prof', '>= 0.16.0', require: false
61
61
  end
@@ -65,7 +65,7 @@ group(:packaging) do
65
65
  gem 'packaging', *location_for(ENV['PACKAGING_LOCATION'] || '~> 0.99')
66
66
  end
67
67
 
68
- group(:documentation) do
68
+ group(:documentation, optional: true) do
69
69
  gem 'gettext-setup', '~> 0.28', require: false, platforms: [:ruby]
70
70
  gem 'ronn', '~> 0.7.3', require: false, platforms: [:ruby]
71
71
  end
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  GIT
2
2
  remote: git://github.com/puppetlabs/packaging
3
- revision: 4d6d51947f44bfa2fc282658836c15f69672e757
3
+ revision: 48564f11abbc1f61a159d9caa44c8236d910575a
4
4
  branch: 1.0.x
5
5
  specs:
6
- packaging (0.99.78.4.g4d6d519)
6
+ packaging (0.99.81)
7
7
  artifactory (~> 2)
8
8
  csv (= 3.1.5)
9
9
  rake (>= 12.3)
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- puppet (6.24.0)
15
+ puppet (6.25.0)
16
16
  CFPropertyList (~> 2.2)
17
17
  concurrent-ruby (~> 1.0)
18
18
  deep_merge (~> 1.0)
@@ -40,11 +40,11 @@ GEM
40
40
  deep_merge (1.2.1)
41
41
  diff-lcs (1.4.4)
42
42
  docopt (0.6.1)
43
- facter (4.2.2)
43
+ facter (4.2.5)
44
44
  hocon (~> 1.3)
45
45
  thor (>= 1.0.1, < 2.0)
46
46
  fast_gettext (1.1.2)
47
- ffi (1.15.3)
47
+ ffi (1.15.4)
48
48
  gettext (3.2.9)
49
49
  locale (>= 2.0.5)
50
50
  text (>= 1.3.0)
@@ -71,7 +71,7 @@ GEM
71
71
  multi_json (1.15.0)
72
72
  mustache (1.1.1)
73
73
  optimist (3.0.1)
74
- parallel (1.20.1)
74
+ parallel (1.21.0)
75
75
  parser (2.7.2.0)
76
76
  ast (~> 2.4.1)
77
77
  powerpack (0.1.3)
@@ -81,9 +81,9 @@ GEM
81
81
  public_suffix (4.0.6)
82
82
  puppet-resource_api (1.8.14)
83
83
  hocon (>= 1.0)
84
- puppetserver-ca (1.10.0)
84
+ puppetserver-ca (1.11.6)
85
85
  facter (>= 2.0.1, < 5)
86
- racc (1.4.9)
86
+ racc (1.5.2)
87
87
  rainbow (2.2.2)
88
88
  rake
89
89
  rake (12.3.3)
@@ -127,10 +127,10 @@ GEM
127
127
  semantic_puppet (1.0.4)
128
128
  text (1.3.1)
129
129
  thor (1.1.0)
130
- unicode-display_width (1.7.0)
130
+ unicode-display_width (1.8.0)
131
131
  vcr (5.1.0)
132
- webmock (3.13.0)
133
- addressable (>= 2.3.6)
132
+ webmock (3.14.0)
133
+ addressable (>= 2.8.0)
134
134
  crack (>= 0.3.2)
135
135
  hashdiff (>= 0.4.0, < 2.0.0)
136
136
  yard (0.9.26)
@@ -153,7 +153,7 @@ DEPENDENCIES
153
153
  puppet!
154
154
  puppet-resource_api (~> 1.5)
155
155
  puppetserver-ca (~> 1.1)
156
- racc (= 1.4.9)
156
+ racc (= 1.5.2)
157
157
  rake (~> 12.2)
158
158
  rdoc (~> 6.0)
159
159
  ronn (~> 0.7.3)
File without changes
@@ -11,8 +11,8 @@ class CheckPuppet
11
11
 
12
12
  # default options
13
13
  OPTIONS = {
14
- :statefile => "/var/lib/puppet/state/state.yaml",
15
- :process => "puppetd",
14
+ :statefile => "/opt/puppetlabs/puppet/cache/state/state.yaml",
15
+ :process => "puppet",
16
16
  :interval => 30,
17
17
  }
18
18
 
data/ext/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # `ext/` directory details
2
+ This directory contains files used internally when packaging [puppet](https://github.com/puppetlabs/puppet) and [puppet-agent](https://github.com/puppetlabs/puppet-agent)
3
+ What follows is a more detailed description of each directory/file:
4
+ * `debian/` - init scripts for puppet (used for Debian-based platforms that do not support systemd)
5
+ * `hiera/hiera.yaml` - installed to `$codedir/environments/production`as a default Hiera configuration file
6
+ * `osx/puppet.plist` - puppet launchd plist for macOS
7
+ * `redhat/` - init scripts for puppet (used for EL-based platforms that do not support systemd)
8
+ * `solaris/smf/` - service manifests for Solaris 11
9
+ * `suse/client.init` - init script for puppet (used for SUSE-based platforms that do not support systemd)
10
+ * `systemd/puppet.service` - systemd unit file for puppet
11
+ * `windows/` - the puppet daemon for Windows, and other useful `.bat` helper wrappers
12
+ * `build_defaults.yaml` - information pertaining to the puppetlabs build automation
13
+ * `project_data.yaml` - information used when packaging the puppet gem
@@ -334,6 +334,10 @@ generated by running puppet agent with '--genconfig'.
334
334
  specifying a time of 0.
335
335
  (This is a Puppet setting, and can go in puppet.conf.)
336
336
 
337
+ * --write_catalog_summary
338
+ After compiling the catalog saves the resource list and classes list to the node
339
+ in the state directory named classes.txt and resources.txt
340
+ (This is a Puppet setting, and can go in puppet.conf.)
337
341
 
338
342
  EXAMPLE
339
343
  -------
@@ -16,7 +16,9 @@ class Puppet::Application::Apply < Puppet::Application
16
16
  option("--use-nodes")
17
17
  option("--detailed-exitcodes")
18
18
 
19
- option("--write-catalog-summary")
19
+ option("--write-catalog-summary") do |arg|
20
+ Puppet[:write_catalog_summary] = arg
21
+ end
20
22
 
21
23
  option("--catalog catalog", "-c catalog") do |arg|
22
24
  options[:catalog] = arg
@@ -169,6 +171,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
169
171
  def app_defaults
170
172
  super.merge({
171
173
  :default_file_terminus => :file_server,
174
+ :write_catalog_summary => false
172
175
  })
173
176
  end
174
177
 
@@ -247,7 +250,22 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
247
250
 
248
251
  catalog.retrieval_duration = Time.now - starttime
249
252
 
250
- if options[:write_catalog_summary]
253
+ # We accept either the global option `--write_catalog_summary`
254
+ # corresponding to the new setting, or the application option
255
+ # `--write-catalog-summary`. The latter is needed to maintain backwards
256
+ # compatibility.
257
+ #
258
+ # Puppet settings parse global options using PuppetOptionParser, but it
259
+ # only recognizes underscores, not dashes.
260
+ # The base application parses app specific options using ruby's builtin
261
+ # OptionParser. As of ruby 2.4, it will accept either underscores or
262
+ # dashes, but prefer dashes.
263
+ #
264
+ # So if underscores are used, the PuppetOptionParser will parse it and
265
+ # store that in Puppet[:write_catalog_summary]. If dashes are used,
266
+ # OptionParser will parse it, and set Puppet[:write_catalog_summary]. In
267
+ # either case, settings will contain the correct value.
268
+ if Puppet[:write_catalog_summary]
251
269
  catalog.write_class_file
252
270
  catalog.write_resource_file
253
271
  end
@@ -225,21 +225,23 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
225
225
  def find_or_save_resources(type, name, params)
226
226
  key = local_key(type, name)
227
227
 
228
- if name
229
- if params.empty?
230
- [ Puppet::Resource.indirection.find( key ) ]
228
+ Puppet.override(stringify_rich: true) do
229
+ if name
230
+ if params.empty?
231
+ [ Puppet::Resource.indirection.find( key ) ]
232
+ else
233
+ resource = Puppet::Resource.new( type, name, :parameters => params )
234
+
235
+ # save returns [resource that was saved, transaction log from applying the resource]
236
+ save_result = Puppet::Resource.indirection.save(resource, key)
237
+ [ save_result.first ]
238
+ end
231
239
  else
232
- resource = Puppet::Resource.new( type, name, :parameters => params )
233
-
234
- # save returns [resource that was saved, transaction log from applying the resource]
235
- save_result = Puppet::Resource.indirection.save(resource, key)
236
- [ save_result.first ]
237
- end
238
- else
239
- if type == "file"
240
- raise _("Listing all file instances is not supported. Please specify a file or directory, e.g. puppet resource file /etc")
240
+ if type == "file"
241
+ raise _("Listing all file instances is not supported. Please specify a file or directory, e.g. puppet resource file /etc")
242
+ end
243
+ Puppet::Resource.indirection.search( key, {} )
241
244
  end
242
- Puppet::Resource.indirection.search( key, {} )
243
245
  end
244
246
  end
245
247
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Puppet
2
3
  module Concurrent
3
4
  module ThreadLocalSingleton
@@ -91,7 +91,7 @@ class Puppet::Configurer
91
91
 
92
92
  if result
93
93
  # don't use use cached catalog if it doesn't match server specified environment
94
- if @node_environment && result.environment != @environment
94
+ if result.environment != @environment
95
95
  Puppet.err _("Not using cached catalog because its environment '%{catalog_env}' does not match '%{local_env}'") % { catalog_env: result.environment, local_env: @environment }
96
96
  return nil
97
97
  end
@@ -118,8 +118,11 @@ class Puppet::Configurer
118
118
  catalog = result.to_ral
119
119
  catalog.finalize
120
120
  catalog.retrieval_duration = duration
121
- catalog.write_class_file
122
- catalog.write_resource_file
121
+
122
+ if Puppet[:write_catalog_summary]
123
+ catalog.write_class_file
124
+ catalog.write_resource_file
125
+ end
123
126
  end
124
127
  options[:report].add_times(:convert_catalog, catalog_conversion_time) if options[:report]
125
128
 
@@ -257,6 +260,7 @@ class Puppet::Configurer
257
260
 
258
261
  def run_internal(options)
259
262
  report = options[:report]
263
+ report.initial_environment = Puppet[:environment]
260
264
 
261
265
  if options[:start_time]
262
266
  startup_time = Time.now - options[:start_time]
@@ -296,69 +300,35 @@ class Puppet::Configurer
296
300
  configured_environment = Puppet[:environment] if Puppet.settings.set_by_config?(:environment)
297
301
 
298
302
  # We only need to find out the environment to run in if we don't already have a catalog
299
- unless (cached_catalog || options[:catalog] || Puppet[:strict_environment_mode])
300
- begin
301
- node = nil
302
- node_retr_time = thinmark do
303
- node = Puppet::Node.indirection.find(Puppet[:node_name_value],
304
- :environment => Puppet::Node::Environment.remote(@environment),
305
- :configured_environment => configured_environment,
306
- :ignore_cache => true,
307
- :transaction_uuid => @transaction_uuid,
308
- :fail_on_404 => true)
309
- end
310
- options[:report].add_times(:node_retrieval, node_retr_time)
311
-
312
- if node
313
- # If we have deserialized a node from a rest call, we want to set
314
- # an environment instance as a simple 'remote' environment reference.
315
- if !node.has_environment_instance? && node.environment_name
316
- node.environment = Puppet::Node::Environment.remote(node.environment_name)
317
- end
303
+ unless (cached_catalog || options[:catalog] || Puppet.settings.set_by_cli?(:environment) || Puppet[:strict_environment_mode])
304
+ Puppet.debug(_("Environment not passed via CLI and no catalog was given, attempting to find out the last server-specified environment"))
305
+ if last_server_specified_environment
306
+ @environment = last_server_specified_environment
307
+ report.environment = last_server_specified_environment
318
308
 
319
- @node_environment = node.environment.to_s
320
-
321
- if node.environment.to_s != @environment
322
- Puppet.notice _("Local environment: '%{local_env}' doesn't match server specified node environment '%{node_env}', switching agent to '%{node_env}'.") % { local_env: @environment, node_env: node.environment }
323
- @environment = node.environment.to_s
324
- report.environment = @environment
325
- query_options = nil
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
- )
336
- else
337
- Puppet.info _("Using configured environment '%{env}'") % { env: @environment }
338
- end
339
- end
340
- rescue StandardError => detail
341
- Puppet.warning(_("Unable to fetch my node definition, but the agent run will continue:"))
342
- Puppet.warning(detail)
309
+ push_current_environment_and_loaders
310
+ else
311
+ Puppet.debug(_("Could not find a usable environment in the lastrunfile. Either the file does not exist, does not have the required keys, or the values of 'initial_environment' and 'converged_environment' are identical."))
343
312
  end
344
313
  end
345
314
 
315
+ Puppet.info _("Using environment '%{env}'") % { env: @environment }
316
+
346
317
  # This is to maintain compatibility with anyone using this class
347
318
  # aside from agent, apply, device.
348
319
  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
- )
320
+ push_current_environment_and_loaders
357
321
  end
358
322
 
323
+ temp_value = options[:pluginsync]
324
+
325
+ # only validate server environment if pluginsync is requested
326
+ options[:pluginsync] = valid_server_environment? if options[:pluginsync] == true
327
+
359
328
  query_options, facts = get_facts(options) unless query_options
329
+ options[:pluginsync] = temp_value
330
+
360
331
  query_options[:configured_environment] = configured_environment
361
- options[:convert_for_node] = node
362
332
 
363
333
  catalog = prepare_and_retrieve_catalog(cached_catalog, facts, options, query_options)
364
334
  unless catalog
@@ -383,6 +353,8 @@ class Puppet::Configurer
383
353
  @environment = catalog.environment
384
354
  report.environment = @environment
385
355
 
356
+ push_current_environment_and_loaders
357
+
386
358
  query_options, facts = get_facts(options)
387
359
  query_options[:configured_environment] = configured_environment
388
360
 
@@ -456,6 +428,25 @@ class Puppet::Configurer
456
428
  end
457
429
  private :run_internal
458
430
 
431
+ def valid_server_environment?
432
+ session = Puppet.lookup(:http_session)
433
+ begin
434
+ fs = session.route_to(:fileserver)
435
+ fs.get_file_metadatas(path: URI(Puppet[:pluginsource]).path, recurse: :false, environment: @environment)
436
+ true
437
+ rescue Puppet::HTTP::ResponseError => detail
438
+ if detail.response.code == 404
439
+ Puppet.notice(_("Environment '%{environment}' not found on server, skipping initial pluginsync.") % { environment: @environment })
440
+ else
441
+ Puppet.log_exception(detail, detail.message)
442
+ end
443
+ false
444
+ rescue => detail
445
+ Puppet.log_exception(detail, detail.message)
446
+ false
447
+ end
448
+ end
449
+
459
450
  def find_functional_server
460
451
  begin
461
452
  session = Puppet.lookup(:http_session)
@@ -472,10 +463,35 @@ class Puppet::Configurer
472
463
  end
473
464
  private :find_functional_server
474
465
 
466
+ def last_server_specified_environment
467
+ return @last_server_specified_environment if @last_server_specified_environment
468
+ if Puppet::FileSystem.exist?(Puppet[:lastrunfile])
469
+ summary = Puppet::Util::Yaml.safe_load_file(Puppet[:lastrunfile])
470
+ return unless summary.dig('application', 'run_mode') == 'agent'
471
+ initial_environment = summary.dig('application', 'initial_environment')
472
+ converged_environment = summary.dig('application', 'converged_environment')
473
+ @last_server_specified_environment = converged_environment if initial_environment != converged_environment
474
+ end
475
+
476
+ Puppet.debug(_("Found last server-specified environment: %{environment}") % { environment: @last_server_specified_environment }) if @last_server_specified_environment
477
+ @last_server_specified_environment
478
+ rescue => detail
479
+ Puppet.debug(_("Could not find last server-specified environment: %{detail}") % { detail: detail })
480
+ nil
481
+ end
482
+ private :last_server_specified_environment
483
+
475
484
  def send_report(report)
476
485
  puts report.summary if Puppet[:summarize]
477
486
  save_last_run_summary(report)
478
- Puppet::Transaction::Report.indirection.save(report, nil, :environment => Puppet::Node::Environment.remote(@environment)) if Puppet[:report]
487
+ if Puppet[:report]
488
+ remote = Puppet::Node::Environment.remote(@environment)
489
+ begin
490
+ Puppet::Transaction::Report.indirection.save(report, nil, ignore_cache: true, environment: remote)
491
+ ensure
492
+ Puppet::Transaction::Report.indirection.save(report, nil, ignore_terminus: true, environment: remote)
493
+ end
494
+ end
479
495
  rescue => detail
480
496
  Puppet.log_exception(detail, _("Could not send report: %{detail}") % { detail: detail })
481
497
  end
@@ -498,7 +514,7 @@ class Puppet::Configurer
498
514
  # @return [false] If an exception is raised during fact generation or
499
515
  # submission.
500
516
  def resubmit_facts
501
- ::Facter.clear
517
+ Puppet.runtime[:facter].clear
502
518
  facts = find_facts
503
519
 
504
520
  client = Puppet.runtime[:http]
@@ -533,6 +549,17 @@ class Puppet::Configurer
533
549
  end
534
550
  end
535
551
 
552
+ def push_current_environment_and_loaders
553
+ new_env = Puppet::Node::Environment.remote(@environment)
554
+ Puppet.push_context(
555
+ {
556
+ :current_environment => new_env,
557
+ :loaders => Puppet::Pops::Loaders.new(new_env, true)
558
+ },
559
+ "Local node environment #{@environment} for configurer transaction"
560
+ )
561
+ end
562
+
536
563
  def retrieve_catalog_from_cache(query_options)
537
564
  result = nil
538
565
  @duration = thinmark do
@@ -560,6 +587,7 @@ class Puppet::Configurer
560
587
  # don't update cache until after environment converges
561
588
  :ignore_cache_save => true,
562
589
  :environment => Puppet::Node::Environment.remote(@environment),
590
+ :check_environment => true,
563
591
  :fail_on_404 => true,
564
592
  :facts_for_catalog => facts
565
593
  )
@@ -18,7 +18,7 @@ class Puppet::Confine::Variable < Puppet::Confine
18
18
 
19
19
  # Retrieve the value from facter
20
20
  def facter_value
21
- @facter_value ||= ::Facter.value(name).to_s.downcase
21
+ @facter_value ||= Puppet.runtime[:facter].value(name).to_s.downcase
22
22
  end
23
23
 
24
24
  def initialize(values)