Update sudo and users cookbooks

This commit is contained in:
Greg Karékinian
2017-05-02 11:39:43 +02:00
parent d7bdd5cdf3
commit 11b812fbb8
22 changed files with 282 additions and 278 deletions

View File

@@ -1,5 +1,3 @@
require 'mixlib/shellout'
module Users
# Helpers for Users
module Helpers
@@ -28,8 +26,16 @@ module Users
def validate_id(id)
id.to_i.to_s == id ? id.to_i : id
end
# Returns the appropriate base user home directory per platform
#
# @return [ String]
def home_basedir
if platform_family?('mac_os_x')
'/Users'
else
'/home'
end
end
end
end
Chef::Resource.send(:include, ::Users::Helpers)
Chef::Provider.send(:include, ::Users::Helpers)

View File

@@ -0,0 +1,29 @@
module Users
# Helpers for Users
module OsxHelper
def dscl(*args)
host = '.'
stdout_result = ''
stderr_result = ''
cmd = "dscl #{host} -#{args.join(' ')}"
status = shell_out(cmd)
status.stdout.each_line { |line| stdout_result << line }
status.stderr.each_line { |line| stderr_result << line }
[cmd, status, stdout_result, stderr_result]
end
def safe_dscl(*args)
result = dscl(*args)
return '' if (args.first =~ /^delete/) && (result[1].exitstatus != 0)
raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") unless result[1].exitstatus == 0
raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") if result[2] =~ /No such key: /
result[2]
end
def gid_used?(gid)
return false unless gid
groups_gids = safe_dscl('list /Groups gid')
!!(groups_gids =~ Regexp.new("#{Regexp.escape(gid.to_s)}\n"))
end
end
end