Je crée un utilisateur comme suit
user { $username:
comment => "$name",
shell => "$shell",
managehome => false,
password => "$password",
groups => $groups
}
Maintenant, comme vous pouvez le voir, je fais un managehome est faux Maintenant, plus tard dans la voie, je dois pousser un fichier vers le répertoire personnel de l'utilisateur.
$key = "${homedir}/${name}/file"
file { $key:
ensure => present,
owner => $username,
group => $username,
mode => 600,
content => "$keyvalue",
subscribe => User[$username],
}
Comment puis-je obtenir le répertoire personnel de l' utilisateur pour cela?
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:
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: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: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:
la source
Cette question est ancienne, mais toujours d'actualité. Il y a en fait une meilleure façon maintenant. Ajoutez un fait personnalisé à [module] /lib/facter/home_dirs.rb contenant les éléments suivants:
Ensuite, vous pouvez accéder ainsi aux données du manifeste:
Gardez à l'esprit que cela ne fonctionne que si l'utilisateur existe déjà avant l'exécution de la marionnette. Si l'utilisateur est créé pendant l'exécution, le répertoire personnel doit être déjà connu ou au moins prévisible. La marionnette est conçue pour créer de l'ordre, après tout.
J'espère que cela aide quelqu'un.
la source