J'ai essayé de trouver une solution pour le même problème, et il s'est avéré préférable d'adopter une approche légèrement différente.
Définissez le répertoire personnel de manière explicite, par exemple:
user { $username:
comment => "comment",
home => "/home/${username}",
managehome => false,
# ...
}
Quand managehome
est faux, le répertoire personnel n'est même pas créé. Vous devez donc le définir spécifiquement. Il est souvent préférable de créer une définition personnalisée pour l'ensemble de l'utilisateur:
define custom_user($username, $password) {
user { $username:
home => "/home/${username}",
password => $password,
# etc.
}
file { "/home/${username}":
ensure => directory,
owner => $username,
require => User[$username],
# etc.
}
}
Vous pouvez ajouter d'autres paramètres, par exemple $keyvalue
, et créer un fichier de clés si ce paramètre est donné.
Vous pouvez également définir une variable globale $home = "/home"
(spécifique au système d'exploitation, si nécessaire) et obtenir le répertoire d'accueil avec "${home}/${username}"
.
Modifier: utiliser le hachage pour définir des répertoires de départ spécifiques à l'utilisateur
Les versions plus récentes de Puppet (> = 2.6) prennent en charge les hachages. Il serait possible de définir un hachage contenant des username => /path/to/home
mappages pour chaque utilisateur:
$home = {
normal_user => '/home/normal_user',
backup => '/var/backup',
mysql => '/var/lib/mysql'
}
Pour n'importe quel nom d'utilisateur, il est alors facile d'obtenir le répertoire personnel avec $home['username']
.
Hachage du répertoire personnel avec repli
La plupart du temps, il serait préférable d'avoir un "défaut de secours" si l'utilisateur n'existe pas dans le hachage. En théorie, cela est possible, bien que la syntaxe devienne un peu cryptique et gonflée:
$home = { ... }
$default_home = '/home'
user {$username:
home => has_key($home, $username) ? {
true => $home[$username],
false => "${default_home}/${username}"
}
# ...
}