ฉันพยายามหาวิธีแก้ไขปัญหาเดียวกันและกลับกลายเป็นว่าวิธีที่ดีที่สุดคือใช้แนวทางที่ต่างออกไปเล็กน้อย
กำหนดโฮมไดเร็กทอรีอย่างชัดเจนตัวอย่างเช่น:
user { $username:
comment => "comment",
home => "/home/${username}",
managehome => false,
# ...
}
เมื่อmanagehome
เป็นเท็จไดเรกทอรีบ้านไม่ได้ถูกสร้างขึ้น ดังนั้นคุณต้องกำหนดเป็นพิเศษ เป็นการดีที่สุดที่จะสร้างคำจำกัดความที่กำหนดเองสำหรับผู้ใช้ทั้งหมด:
define custom_user($username, $password) {
user { $username:
home => "/home/${username}",
password => $password,
# etc.
}
file { "/home/${username}":
ensure => directory,
owner => $username,
require => User[$username],
# etc.
}
}
คุณสามารถเพิ่มพารามิเตอร์เพิ่มเติมตัวอย่างเช่น$keyvalue
และสร้าง keyfile หากกำหนดพารามิเตอร์นั้น
นอกจากนี้คุณยังสามารถกำหนดตัวแปรทั่วโลก$home = "/home"
(OS เฉพาะถ้าจำเป็น) และได้รับ dir "${home}/${username}"
บ้านด้วย
แก้ไข: การใช้แฮชเพื่อกำหนดโฮมไดเรกทอรีเฉพาะของผู้ใช้
การสนับสนุนรุ่นหุ่นกระบอก (> = 2.6) ล่าสุด เป็นไปได้ที่จะกำหนดแฮชที่มีusername => /path/to/home
การแมปสำหรับผู้ใช้แต่ละคน:
$home = {
normal_user => '/home/normal_user',
backup => '/var/backup',
mysql => '/var/lib/mysql'
}
ชื่อผู้ใช้ใด ๆ $home['username']
ก็เป็นแล้วง่ายที่จะได้รับไดเรกทอรีบ้านด้วย
แฮชไดเรกทอรีบ้านที่มีทางเลือก
ส่วนใหญ่จะเป็นการดีที่สุดที่จะมี "ค่าเริ่มต้นสำรอง" หากผู้ใช้ไม่มีอยู่ในแฮช ในทางทฤษฎีสิ่งนี้เป็นไปได้แม้ว่าไวยากรณ์จะกลายเป็นความลับและป่องเล็กน้อย:
$home = { ... }
$default_home = '/home'
user {$username:
home => has_key($home, $username) ? {
true => $home[$username],
false => "${default_home}/${username}"
}
# ...
}