chef 16.1.16 → 16.2.44
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -3
- data/README.md +3 -3
- data/Rakefile +2 -2
- data/chef.gemspec +3 -3
- data/lib/chef/application/apply.rb +1 -1
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +1 -1
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +1 -1
- data/lib/chef/cookbook_version.rb +2 -2
- data/lib/chef/data_bag.rb +4 -4
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/file_access_control.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/http.rb +17 -2
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/http/json_output.rb +1 -1
- data/lib/chef/http/ssl_policies.rb +18 -0
- data/lib/chef/knife.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +3 -6
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/config_get.rb +1 -1
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/node_bulk_delete.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/role_bulk_delete.rb +1 -1
- data/lib/chef/knife/ssh.rb +1 -1
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +7 -7
- data/lib/chef/provider/mount/aix.rb +1 -1
- data/lib/chef/provider/mount/windows.rb +2 -2
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +2 -2
- data/lib/chef/provider/package/snap.rb +96 -27
- data/lib/chef/provider/package/windows/msi.rb +3 -3
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +10 -14
- data/lib/chef/provider/remote_file/http.rb +4 -1
- data/lib/chef/provider/script.rb +4 -75
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/service/windows.rb +1 -1
- data/lib/chef/provider/subversion.rb +2 -2
- data/lib/chef/provider/user/dscl.rb +4 -4
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +5 -5
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +22 -11
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/archive_file.rb +28 -8
- data/lib/chef/resource/bash.rb +0 -1
- data/lib/chef/resource/batch.rb +4 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
- data/lib/chef/resource/cron/_cron_shared.rb +98 -0
- data/lib/chef/resource/cron/cron.rb +46 -0
- data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
- data/lib/chef/resource/cron_access.rb +11 -3
- data/lib/chef/resource/csh.rb +0 -1
- data/lib/chef/resource/execute.rb +477 -7
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_package.rb +30 -1
- data/lib/chef/resource/homebrew_update.rb +107 -0
- data/lib/chef/resource/hostname.rb +6 -19
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/perl.rb +0 -1
- data/lib/chef/resource/plist.rb +23 -4
- data/lib/chef/resource/powershell_script.rb +4 -2
- data/lib/chef/resource/python.rb +0 -1
- data/lib/chef/resource/remote_file.rb +26 -10
- data/lib/chef/resource/ruby.rb +0 -1
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/windows_ad_join.rb +30 -1
- data/lib/chef/resource/windows_audit_policy.rb +227 -0
- data/lib/chef/resource/windows_auto_run.rb +11 -0
- data/lib/chef/resource/windows_certificate.rb +26 -0
- data/lib/chef/resource/windows_font.rb +3 -3
- data/lib/chef/resource/windows_package.rb +1 -1
- data/lib/chef/resource/windows_pagefile.rb +1 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +17 -15
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +4 -4
- data/lib/chef/resource/windows_user_privilege.rb +5 -5
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/util/diff.rb +2 -2
- data/lib/chef/util/windows/net_user.rb +1 -1
- data/lib/chef/util/windows/volume.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/registry.rb +2 -2
- data/lib/chef/win32/security.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +10 -0
- data/spec/functional/resource/remote_file_spec.rb +2 -2
- data/spec/functional/resource/windows_task_spec.rb +8 -8
- data/spec/support/platform_helpers.rb +1 -1
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- data/spec/unit/application_spec.rb +7 -0
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/http/ssl_policies_spec.rb +20 -0
- data/spec/unit/knife/bootstrap_spec.rb +2 -2
- data/spec/unit/mixin/user_context_spec.rb +1 -9
- data/spec/unit/property_spec.rb +1 -1
- data/spec/unit/provider/batch_spec.rb +130 -0
- data/spec/unit/provider/cron_spec.rb +9 -49
- data/spec/unit/provider/package/powershell_spec.rb +95 -86
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +3 -45
- data/spec/unit/provider/script_spec.rb +20 -110
- data/spec/unit/provider/zypper_repository_spec.rb +60 -10
- data/spec/unit/resource/archive_file_spec.rb +11 -2
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
- data/spec/unit/resource/cron_spec.rb +2 -2
- data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
- data/spec/unit/resource/homebrew_update_spec.rb +30 -0
- data/spec/unit/resource/powershell_script_spec.rb +10 -15
- data/spec/unit/resource/timezone_spec.rb +1 -1
- data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
- data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_spec.rb +67 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- metadata +22 -22
- data/lib/chef/resource/cron.rb +0 -157
data/lib/chef/resource/file.rb
CHANGED
@@ -76,7 +76,7 @@ class Chef
|
|
76
76
|
property :diff, [ String, nil ], desired_state: false, skip_docs: true
|
77
77
|
|
78
78
|
property :force_unlink, [ TrueClass, FalseClass ], desired_state: false, default: false,
|
79
|
-
description: "How #{Chef::Dist::PRODUCT} handles certain situations when the target file turns out not to be a file. For example, when a target file is actually a symlink. Set to true for #{Chef::Dist::PRODUCT} to delete the non-file target and replace it with the specified file. Set to false for #{Chef::Dist::PRODUCT} to raise an error."
|
79
|
+
description: "How #{Chef::Dist::PRODUCT} handles certain situations when the target file turns out not to be a file. For example, when a target file is actually a symlink. Set to `true` for #{Chef::Dist::PRODUCT} to delete the non-file target and replace it with the specified file. Set to `false` for #{Chef::Dist::PRODUCT} to raise an error."
|
80
80
|
|
81
81
|
property :manage_symlink_source, [ TrueClass, FalseClass ], desired_state: false,
|
82
82
|
description: "Change the behavior of the file resource if it is pointed at a symlink. When this value is set to true, #{Chef::Dist::PRODUCT} will manage the symlink's permissions or will replace the symlink with a normal file if the resource has content. When this value is set to false, #{Chef::Dist::PRODUCT} will follow the symlink and will manage the permissions and content of symlink's target file. The default behavior is true but emits a warning that the default value will be changed to false in a future version; setting this explicitly to true or false suppresses this warning."
|
@@ -35,7 +35,7 @@ class Chef
|
|
35
35
|
# Lists of individual values, ranges, and step values all share the validity range for type
|
36
36
|
spec.split(%r{\/|-|,}).each do |x|
|
37
37
|
next if x == "*"
|
38
|
-
return false unless
|
38
|
+
return false unless /^\d+$/.match?(x)
|
39
39
|
|
40
40
|
x = x.to_i
|
41
41
|
return false unless x >= min && x <= max
|
@@ -62,13 +62,16 @@ class Chef
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
# validate the provided day of the week is sun-sat, 0-7, or *
|
65
|
+
# validate the provided day of the week is sun-sat, sunday-saturday, 0-7, or *
|
66
|
+
# Added crontab param to check cron resource
|
66
67
|
# @param spec the value to validate
|
67
68
|
# @return [Boolean] valid or not?
|
68
69
|
def validate_dow(spec)
|
70
|
+
spec = spec.to_s
|
69
71
|
spec == "*" ||
|
70
72
|
validate_numeric(spec, 0, 7) ||
|
71
|
-
%w{sun mon tue wed thu fri sat}.include?(
|
73
|
+
%w{sun mon tue wed thu fri sat}.include?(spec.downcase) ||
|
74
|
+
%w{sunday monday tuesday wednesday thursday friday saturday}.include?(spec.downcase)
|
72
75
|
end
|
73
76
|
|
74
77
|
# validate the day of the month is 1-31
|
@@ -29,8 +29,37 @@ class Chef
|
|
29
29
|
provides :homebrew_package
|
30
30
|
provides :package, os: "darwin"
|
31
31
|
|
32
|
-
description "Use the **homebrew_package** resource to manage packages for the macOS platform."
|
32
|
+
description "Use the **homebrew_package** resource to manage packages for the macOS platform. Note: Starting with #{Chef::Dist::PRODUCT} 16 the homebrew resource now accepts an array of packages for installing multiple packages at once."
|
33
33
|
introduced "12.0"
|
34
|
+
examples <<~DOC
|
35
|
+
**Install a package**:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
homebrew_package 'git'
|
39
|
+
```
|
40
|
+
|
41
|
+
**Install multiple packages at once**:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
homebrew_package %w(git fish ruby)
|
45
|
+
```
|
46
|
+
|
47
|
+
**Specify the Homebrew user with a UUID**
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
homebrew_package 'git' do
|
51
|
+
homebrew_user 1001
|
52
|
+
end
|
53
|
+
```
|
54
|
+
|
55
|
+
**Specify the Homebrew user with a string**:
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
homebrew_package 'vim' do
|
59
|
+
homebrew_user 'user1'
|
60
|
+
end
|
61
|
+
```
|
62
|
+
DOC
|
34
63
|
|
35
64
|
property :homebrew_user, [ String, Integer ],
|
36
65
|
description: "The name or uid of the Homebrew owner to be used by #{Chef::Dist::PRODUCT} when executing a command."
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Joshua Timberman (<jtimberman@chef.io>)
|
3
|
+
# Author:: Dan Webb (<dan@webb-agile-solutions.ltd>)
|
4
|
+
#
|
5
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
6
|
+
# Copyright:: Copyright (c) Webb Agile Solutions Ltd.
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
require_relative "../resource"
|
22
|
+
require_relative "../dist"
|
23
|
+
|
24
|
+
class Chef
|
25
|
+
class Resource
|
26
|
+
class HomebrewUpdate < Chef::Resource
|
27
|
+
unified_mode true
|
28
|
+
|
29
|
+
provides(:homebrew_update) { true }
|
30
|
+
|
31
|
+
description "Use the **homebrew_update** resource to manage Homebrew repository updates on macOS."
|
32
|
+
introduced "16.2"
|
33
|
+
examples <<~DOC
|
34
|
+
**Update the homebrew repository data at a specified interval**:
|
35
|
+
```ruby
|
36
|
+
homebrew_update 'all platforms' do
|
37
|
+
frequency 86400
|
38
|
+
action :periodic
|
39
|
+
end
|
40
|
+
```
|
41
|
+
**Update the Homebrew repository at the start of a #{Chef::Dist::PRODUCT} run**:
|
42
|
+
```ruby
|
43
|
+
homebrew_update 'update'
|
44
|
+
```
|
45
|
+
DOC
|
46
|
+
|
47
|
+
# allow bare homebrew_update with no name
|
48
|
+
property :name, String, default: ""
|
49
|
+
|
50
|
+
property :frequency, Integer,
|
51
|
+
description: "Determines how frequently (in seconds) Homebrew updates are made. Use this property when the `:periodic` action is specified.",
|
52
|
+
default: 86_400
|
53
|
+
|
54
|
+
default_action :periodic
|
55
|
+
allowed_actions :update, :periodic
|
56
|
+
|
57
|
+
action_class do
|
58
|
+
BREW_STAMP_DIR = "/var/lib/homebrew/periodic".freeze
|
59
|
+
BREW_STAMP = "#{BREW_STAMP_DIR}/update-success-stamp".freeze
|
60
|
+
|
61
|
+
# Determines whether we need to run `homebrew update`
|
62
|
+
#
|
63
|
+
# @return [Boolean]
|
64
|
+
def brew_up_to_date?
|
65
|
+
::File.exist?("#{BREW_STAMP}") &&
|
66
|
+
::File.mtime("#{BREW_STAMP}") > Time.now - new_resource.frequency
|
67
|
+
end
|
68
|
+
|
69
|
+
def do_update
|
70
|
+
directory BREW_STAMP_DIR do
|
71
|
+
recursive true
|
72
|
+
end
|
73
|
+
|
74
|
+
file "#{BREW_STAMP}" do
|
75
|
+
content "BREW::Update::Post-Invoke-Success\n"
|
76
|
+
action :create_if_missing
|
77
|
+
end
|
78
|
+
|
79
|
+
execute "brew update" do
|
80
|
+
command %w{brew update}
|
81
|
+
default_env true
|
82
|
+
user Homebrew.owner
|
83
|
+
notifies :touch, "file[#{BREW_STAMP}]", :immediately
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
action :periodic do
|
89
|
+
return unless mac_os_x?
|
90
|
+
|
91
|
+
unless brew_up_to_date?
|
92
|
+
converge_by "update new lists of packages" do
|
93
|
+
do_update
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
action :update do
|
99
|
+
return unless mac_os_x?
|
100
|
+
|
101
|
+
converge_by "force update new lists of packages" do
|
102
|
+
do_update
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -1,4 +1,7 @@
|
|
1
1
|
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
2
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
6
|
# you may not use this file except in compliance with the License.
|
4
7
|
# You may obtain a copy of the License at
|
@@ -13,6 +16,7 @@
|
|
13
16
|
#
|
14
17
|
|
15
18
|
require_relative "../resource"
|
19
|
+
require_relative "../dist"
|
16
20
|
|
17
21
|
class Chef
|
18
22
|
class Resource
|
@@ -199,24 +203,7 @@ class Chef
|
|
199
203
|
group node["root_group"]
|
200
204
|
mode "0644"
|
201
205
|
end
|
202
|
-
when ::File.exist?("/
|
203
|
-
# Solaris <= 5.10 systems prior to svccfg taking over this functionality (must come before svccfg handling)
|
204
|
-
declare_resource(:file, "/etc/nodename") do
|
205
|
-
content "#{new_resource.hostname}\n"
|
206
|
-
owner "root"
|
207
|
-
group node["root_group"]
|
208
|
-
mode "0644"
|
209
|
-
end
|
210
|
-
# Solaris also has /etc/inet/hosts (copypasta alert)
|
211
|
-
unless new_resource.ipaddress.nil?
|
212
|
-
newline = "#{new_resource.ipaddress} #{new_resource.hostname}"
|
213
|
-
newline << " #{new_resource.aliases.join(" ")}" if new_resource.aliases && !new_resource.aliases.empty?
|
214
|
-
newline << " #{new_resource.hostname[/[^\.]*/]}"
|
215
|
-
r = append_replacing_matching_lines("/etc/inet/hosts", /^#{new_resource.ipaddress}\s+|\s+#{new_resource.hostname}\s+/, newline)
|
216
|
-
r.notifies :reload, "ohai[reload hostname]"
|
217
|
-
end
|
218
|
-
when ::File.exist?("/usr/sbin/svccfg")
|
219
|
-
# Solaris >= 5.11 systems using svccfg (must come after /etc/nodename handling)
|
206
|
+
when ::File.exist?("/usr/sbin/svccfg") # solaris 5.11
|
220
207
|
declare_resource(:execute, "svccfg -s system/identity:node setprop config/nodename=\'#{new_resource.hostname}\'") do
|
221
208
|
notifies :run, "execute[svcadm refresh]", :immediately
|
222
209
|
notifies :run, "execute[svcadm restart]", :immediately
|
@@ -262,7 +249,7 @@ class Chef
|
|
262
249
|
|
263
250
|
# reboot because $windows
|
264
251
|
declare_resource(:reboot, "setting hostname") do
|
265
|
-
reason "
|
252
|
+
reason "#{Chef::Dist::PRODUCT} updated system hostname"
|
266
253
|
action :nothing
|
267
254
|
only_if { new_resource.windows_reboot }
|
268
255
|
end
|
@@ -19,11 +19,14 @@ class Chef
|
|
19
19
|
introduced "14.3"
|
20
20
|
examples <<~DOC
|
21
21
|
Install and load a kernel module, and ensure it loads on reboot.
|
22
|
+
|
22
23
|
```ruby
|
23
24
|
kernel_module 'loop'
|
24
25
|
```
|
26
|
+
|
25
27
|
Install and load a kernel with a specific set of options, and ensure it loads on reboot. Consult kernel module
|
26
28
|
documentation for specific options that are supported.
|
29
|
+
|
27
30
|
```ruby
|
28
31
|
kernel_module 'loop' do
|
29
32
|
options [
|
@@ -32,31 +35,41 @@ class Chef
|
|
32
35
|
]
|
33
36
|
end
|
34
37
|
```
|
38
|
+
|
35
39
|
Load a kernel module.
|
40
|
+
|
36
41
|
```ruby
|
37
42
|
kernel_module 'loop' do
|
38
43
|
action :load
|
39
44
|
end
|
40
45
|
```
|
41
|
-
|
46
|
+
|
47
|
+
Unload a kernel module and remove module config, so it doesn't load on reboot.
|
48
|
+
|
42
49
|
```ruby
|
43
50
|
kernel_module 'loop' do
|
44
51
|
action :uninstall
|
45
52
|
end
|
46
53
|
```
|
54
|
+
|
47
55
|
Unload kernel module.
|
56
|
+
|
48
57
|
```ruby
|
49
58
|
kernel_module 'loop' do
|
50
59
|
action :unload
|
51
60
|
end
|
52
61
|
```
|
62
|
+
|
53
63
|
Blacklist a module from loading.
|
64
|
+
|
54
65
|
```ruby
|
55
66
|
kernel_module 'loop' do
|
56
67
|
action :blacklist
|
57
68
|
end
|
58
69
|
```
|
70
|
+
|
59
71
|
Disable a kernel module.
|
72
|
+
|
60
73
|
```ruby
|
61
74
|
kernel_module 'loop' do
|
62
75
|
action :disable
|
data/lib/chef/resource/mount.rb
CHANGED
@@ -50,7 +50,7 @@ class Chef
|
|
50
50
|
description: "The type of device: :device, :label, or :uuid",
|
51
51
|
coerce: proc { |arg| arg.is_a?(String) ? arg.to_sym : arg },
|
52
52
|
default: :device,
|
53
|
-
equal_to: RUBY_PLATFORM
|
53
|
+
equal_to: RUBY_PLATFORM.match?(/solaris/i) ? %i{ device } : %i{ device label uuid }
|
54
54
|
|
55
55
|
# @todo this should get refactored away: https://github.com/chef/chef/issues/7621
|
56
56
|
property :mounted, [TrueClass, FalseClass], default: false, skip_docs: true
|
data/lib/chef/resource/perl.rb
CHANGED
data/lib/chef/resource/plist.rb
CHANGED
@@ -28,14 +28,33 @@ class Chef
|
|
28
28
|
|
29
29
|
description "Use the **plist** resource to set config values in plist files on macOS systems."
|
30
30
|
introduced "16.0"
|
31
|
+
examples <<~DOC
|
32
|
+
**Show hidden files in finder**:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
plist 'show hidden files' do
|
36
|
+
path '/Users/vagrant/Library/Preferences/com.apple.finder.plist'
|
37
|
+
entry 'AppleShowAllFiles'
|
38
|
+
value true
|
39
|
+
end
|
40
|
+
```
|
41
|
+
DOC
|
42
|
+
|
43
|
+
property :path, String, name_property: true,
|
44
|
+
description: "The path on disk to the plist file."
|
31
45
|
|
32
|
-
property :path, String, name_property: true
|
33
46
|
property :entry, String
|
34
47
|
property :value, [TrueClass, FalseClass, String, Integer, Float, Hash]
|
35
48
|
property :encoding, String, default: "binary"
|
36
|
-
|
37
|
-
property :
|
38
|
-
|
49
|
+
|
50
|
+
property :owner, String, default: "root",
|
51
|
+
description: "The owner of the plist file."
|
52
|
+
|
53
|
+
property :group, String, default: "wheel",
|
54
|
+
description: "The group of the plist file."
|
55
|
+
|
56
|
+
property :mode, [String, Integer],
|
57
|
+
description: "The file mode of the plist file. Ex: '644'"
|
39
58
|
|
40
59
|
PLISTBUDDY_EXECUTABLE = "/usr/libexec/PlistBuddy".freeze
|
41
60
|
DEFAULTS_EXECUTABLE = "/usr/bin/defaults".freeze
|
@@ -48,8 +48,10 @@ class Chef
|
|
48
48
|
" idempotent, as they are typically unique to the environment in which they are run. Use not_if"\
|
49
49
|
" and only_if to guard this resource for idempotence."
|
50
50
|
|
51
|
-
def initialize(
|
52
|
-
super
|
51
|
+
def initialize(*args)
|
52
|
+
super
|
53
|
+
@interpreter = "powershell.exe"
|
54
|
+
@default_guard_interpreter = resource_name
|
53
55
|
@convert_boolean_return = false
|
54
56
|
end
|
55
57
|
|
data/lib/chef/resource/python.rb
CHANGED
@@ -22,6 +22,7 @@ require_relative "file"
|
|
22
22
|
require_relative "../provider/remote_file"
|
23
23
|
require_relative "../mixin/securable"
|
24
24
|
require_relative "../mixin/uris"
|
25
|
+
require_relative "../dist"
|
25
26
|
|
26
27
|
class Chef
|
27
28
|
class Resource
|
@@ -31,7 +32,7 @@ class Chef
|
|
31
32
|
|
32
33
|
provides :remote_file
|
33
34
|
|
34
|
-
description "Use the **remote_file** resource to transfer a file from a remote location using file specificity. This resource is similar to the file resource."
|
35
|
+
description "Use the **remote_file** resource to transfer a file from a remote location using file specificity. This resource is similar to the **file** resource. Note: Fetching files from the `files/` directory in a cookbook should be done with the **cookbook_file** resource."
|
35
36
|
|
36
37
|
def initialize(name, run_context = nil)
|
37
38
|
super
|
@@ -72,7 +73,8 @@ class Chef
|
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
75
|
-
property :checksum, String
|
76
|
+
property :checksum, String,
|
77
|
+
description: "Optional, see `use_conditional_get`. The SHA-256 checksum of the file. Use to prevent a file from being re-downloaded. When the local file matches the checksum, #{Chef::Dist::PRODUCT} does not download it."
|
76
78
|
|
77
79
|
# Disable or enable ETag and Last Modified conditional GET. Equivalent to
|
78
80
|
# use_etag(true_or_false)
|
@@ -82,25 +84,39 @@ class Chef
|
|
82
84
|
use_last_modified(true_or_false)
|
83
85
|
end
|
84
86
|
|
85
|
-
property :use_etag, [ TrueClass, FalseClass ], default: true
|
87
|
+
property :use_etag, [ TrueClass, FalseClass ], default: true,
|
88
|
+
description: "Enable ETag headers. Set to false to disable ETag headers. To use this setting, `use_conditional_get` must also be set to true."
|
86
89
|
|
87
90
|
alias :use_etags :use_etag
|
88
91
|
|
89
|
-
property :use_last_modified, [ TrueClass, FalseClass ], default: true
|
92
|
+
property :use_last_modified, [ TrueClass, FalseClass ], default: true,
|
93
|
+
description: "Enable `If-Modified-Since` headers. Set to `false` to disable `If-Modified-Since` headers. To use this setting, `use_conditional_get` must also be set to `true`."
|
90
94
|
|
91
|
-
property :ftp_active_mode, [ TrueClass, FalseClass ], default: false
|
95
|
+
property :ftp_active_mode, [ TrueClass, FalseClass ], default: false,
|
96
|
+
description: "Whether #{Chef::Dist::PRODUCT} uses active or passive FTP. Set to `true` to use active FTP."
|
92
97
|
|
93
|
-
property :headers, Hash, default: lazy { {} }
|
98
|
+
property :headers, Hash, default: lazy { {} },
|
99
|
+
description: "A Hash of custom HTTP headers."
|
94
100
|
|
95
101
|
property :show_progress, [ TrueClass, FalseClass ], default: false
|
96
102
|
|
97
|
-
property :
|
103
|
+
property :ssl_verify_mode, Symbol, equal_to: %i{verify_none verify_peer},
|
104
|
+
introduced: "16.2",
|
105
|
+
description: "Optional property to override SSL policy. If not specified, uses the SSL policy from `config.rb`."
|
98
106
|
|
99
|
-
property :
|
107
|
+
property :remote_user, String,
|
108
|
+
introduced: "13.4",
|
109
|
+
description: '**Windows only** The name of a user with access to the remote file specified by the source property. The user name may optionally be specified with a domain, such as: `domain\user` or `user@my.dns.domain.com` via Universal Principal Name (UPN) format. The domain may also be set using the `remote_domain` property. Note that this property is ignored if source is not a UNC path. If this property is specified, the `remote_password` property is required.'
|
100
110
|
|
101
|
-
property :
|
111
|
+
property :remote_domain, String,
|
112
|
+
introduced: "13.4",
|
113
|
+
description: "**Windows only** The domain of the user specified by the `remote_user` property. By default the resource will authenticate against the domain of the remote system, or as a local account if the remote system is not joined to a domain. If the remote system is not part of a domain, it is necessary to authenticate as a local user on the remote system by setting the domain to `.`, for example: remote_domain '.'. The domain may also be specified as part of the `remote_user` property."
|
102
114
|
|
103
|
-
property :
|
115
|
+
property :remote_password, String, sensitive: true,
|
116
|
+
introduced: "13.4",
|
117
|
+
description: "**Windows only** The password of the user specified by the `remote_user` property. This property is required if `remote_user` is specified and may only be specified if `remote_user` is specified. The `sensitive` property for this resource will automatically be set to `true` if `remote_password` is specified."
|
118
|
+
|
119
|
+
property :authentication, Symbol, equal_to: %i{remote local}, default: :remote
|
104
120
|
|
105
121
|
def after_created
|
106
122
|
validate_identity_platform(remote_user, remote_password, remote_domain)
|