나는 정확히 같은 문제에 대한 해결책을 찾으려고 노력했으며 약간 다른 접근법을 취하는 것이 가장 좋습니다.
예를 들어, 홈 디렉토리를 명시 적으로 정의하십시오.
user { $username:
comment => "comment",
home => "/home/${username}",
managehome => false,
# ...
}
때 managehome
거짓, 홈 디렉토리도 만들어지지 않습니다. 따라서 구체적으로 정의해야합니다. 전체 사용자에 대해 사용자 정의를 작성하는 것이 가장 좋습니다.
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}"
}
# ...
}