Я попытался найти решение для точно такой же проблемы, и оказалось, что лучше придерживаться немного другого подхода.
Определите домашний каталог явно, например:
user { $username:
comment => "comment",
home => "/home/${username}",
managehome => false,
# ...
}
При managehome
значении false домашний каталог даже не создается. Таким образом, вы должны конкретно определить это. Часто лучше сделать пользовательское определение для всего пользователя:
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
, вы можете добавить больше параметров и создать ключевой файл, если этот параметр задан.
Вы также можете определить глобальную переменную $home = "/home"
(специфичную для ОС, если необходимо) и получить домашний каталог с помощью "${home}/${username}"
.
Изменить: Использование хеша для определения пользовательских домашних каталогов
Более поздние версии Puppet (> = 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}"
}
# ...
}