Aynı soruna bir çözüm bulmaya çalıştım ve biraz farklı bir yaklaşım benimsemek en iyisi oldu.
Giriş dizinini açıkça tanımlayın, örneğin:
user { $username:
comment => "comment",
home => "/home/${username}",
managehome => false,
# ...
}
Ne zaman managehome
yanlıştır, ev dizini bile oluşturulmadı. Bu yüzden özellikle tanımlamanız gerekir. Tüm kullanıcı için özel bir tanım yapmak genellikle en iyisidir:
define custom_user($username, $password) {
user { $username:
home => "/home/${username}",
password => $password,
# etc.
}
file { "/home/${username}":
ensure => directory,
owner => $username,
require => User[$username],
# etc.
}
}
Örneğin daha fazla parametre ekleyebilir $keyvalue
ve bu parametre verilirse bir anahtar dosyası oluşturabilirsiniz.
Ayrıca global bir değişken tanımlayabilir $home = "/home"
(gerekirse işletim sistemine özel) ve home dir ile birlikte alabilirsiniz "${home}/${username}"
.
Düzenleme: Kullanıcıya özel ana dizinleri tanımlamak için karma kullanma
Daha yeni Kukla sürümleri (> = 2.6) karmaları destekler. username => /path/to/home
Her kullanıcı için eşlemeler içeren bir karma tanımlamak mümkün olacaktır :
$home = {
normal_user => '/home/normal_user',
backup => '/var/backup',
mysql => '/var/lib/mysql'
}
Herhangi bir kullanıcı adı için, ana dizini ile almak kolaydır $home['username']
.
Geri dönüşlü giriş dizini karması
Çoğu zaman, kullanıcı karma içinde yoksa bir "düşme varsayılan" olması en iyisidir. Teoride bu, sözdizimi biraz şifreli ve şişkin hale gelmesine rağmen mümkündür:
$home = { ... }
$default_home = '/home'
user {$username:
home => has_key($home, $username) ? {
true => $home[$username],
false => "${default_home}/${username}"
}
# ...
}