diff options
-rw-r--r-- | lib/chef/resource/sudo.rb | 13 | ||||
-rw-r--r-- | spec/unit/resource/sudo_spec.rb | 5 |
2 files changed, 9 insertions, 9 deletions
diff --git a/lib/chef/resource/sudo.rb b/lib/chef/resource/sudo.rb index d9d61338a8..e2425f811b 100644 --- a/lib/chef/resource/sudo.rb +++ b/lib/chef/resource/sudo.rb @@ -104,7 +104,7 @@ class Chef property :config_prefix, String, description: "The directory containing the sudoers config file.", - default: lazy { "config_prefix" } + default: lazy { platform_config_prefix } alias_method :user, :users alias_method :group, :groups @@ -119,10 +119,12 @@ class Chef end # default config prefix paths based on platform - def config_prefix + def platform_config_prefix case node["platform_family"] when "smartos" "/opt/local/etc" + when "freebsd" + "/usr/local/etc" when "mac_os_x" "/private/etc" else @@ -133,7 +135,6 @@ class Chef action :create do description "Create a single sudoers config in the sudoers.d directory" - validate_platform validate_properties if docker? # don't even put this into resource collection unless we're in docker @@ -201,12 +202,6 @@ class Chef end action_class do - # Make sure we fail on FreeBSD - def validate_platform - return unless platform_family?("freebsd") - raise "The sudo resource cannot run on FreeBSD as FreeBSD does not support using a sudoers.d config directory." - end - # Ensure that the inputs are valid (we cannot just use the resource for this) def validate_properties # if group, user, env_keep_add, env_keep_subtract and template are nil, throw an exception diff --git a/spec/unit/resource/sudo_spec.rb b/spec/unit/resource/sudo_spec.rb index 660eb285da..8f5103597c 100644 --- a/spec/unit/resource/sudo_spec.rb +++ b/spec/unit/resource/sudo_spec.rb @@ -80,6 +80,11 @@ describe Chef::Resource::Sudo do expect(resource.config_prefix).to eql("/private/etc") end + it "it sets the config prefix to /usr/local/etc on FreeBSD" do + node.automatic[:platform_family] = "freebsd" + expect(resource.config_prefix).to eql("/usr/local/etc") + end + it "it sets the config prefix to /opt/local/etc on smartos" do node.automatic[:platform_family] = "smartos" expect(resource.config_prefix).to eql("/opt/local/etc") |