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