私はまったく同じ問題の解決策を見つけようとしましたが、わずかに異なるアプローチを取ることが最善であることがわかりました。
たとえば、ホームディレクトリを明示的に定義します。
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"
(必要に応じてOS固有)を定義し、でホームディレクトリを取得することもできます"${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}"
}
# ...
}