Guest User

Untitled

a guest
May 25th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. ## Custom fact to assign GID/UID's on a per-node basis
  2.  
  3. File.open("/etc/passwd").each do |line|
  4. gecos = line.split(/:/)
  5.  
  6. Facter.add("#{gecos[0]}_uid") do
  7. setcode { gecos[2] }
  8. end
  9. Facter.add("#{gecos[0]}_pgid") do
  10. setcode { gecos[3] }
  11. end
  12. end
  13.  
  14. File.open("/etc/group").each do |line|
  15. gecos = line.split(/:/)
  16.  
  17. Facter.add("#{gecos[0]}_gid") do
  18. setcode { gecos[2] }
  19. end
  20. end
  21.  
  22.  
  23. ## Function to retrieve the UID and GID dynamically
  24.  
  25. module Puppet::Parser::Functions
  26. newfunction(:lookupvar, :type => :rvalue) do |args|
  27. return args[0] if args[0]
  28. end
  29. end
  30.  
  31.  
  32. ## Virtual user declaration
  33.  
  34. define account ( ensure, groups, shell, comment, provider = directoryservice, unixpw ) {
  35.  
  36. ...snip...
  37.  
  38. # Instantiate the user; currently uid's/gid's are dynamically assigned due to inconsistencies across system (hence the virtual resource)
  39. @user { 'jsmith':
  40. ensure => $ensure,
  41. uid => lookupvar("${name}_uid"),
  42. gid => lookupvar("${name}_pgid"),
  43. groups => $supp_groups,
  44. comment => $comment,
  45. shell => $user_shell,
  46. provider => $provider,
  47. password => $unixpw;
  48. }
  49.  
  50. ...snip...
  51.  
  52. }
Add Comment
Please, Sign In to add comment