Tworzę użytkownika w następujący sposób
user { $username:
comment => "$name",
shell => "$shell",
managehome => false,
password => "$password",
groups => $groups
}
Teraz, jak widać, robię zarządzanie domem jest fałsz. Później w dół linii muszę wypchnąć plik do katalogu domowego użytkownika.
$key = "${homedir}/${name}/file"
file { $key:
ensure => present,
owner => $username,
group => $username,
mode => 600,
content => "$keyvalue",
subscribe => User[$username],
}
Jak mogę uzyskać do tego katalog domowy użytkownika ?
Próbowałem znaleźć rozwiązanie dla dokładnie tego samego problemu i okazało się, że najlepiej jest zastosować nieco inne podejście.
Zdefiniuj katalog domowy jawnie, na przykład:
Kiedy
managehome
ma wartość false, katalog domowy nawet nie jest tworzony. Więc musisz to szczegółowo zdefiniować. Często najlepiej jest stworzyć niestandardową definicję dla całego użytkownika:Możesz na przykład dodać więcej parametrów
$keyvalue
i utworzyć plik klucza, jeśli ten parametr zostanie podany.Możesz także zdefiniować zmienną globalną
$home = "/home"
(w razie potrzeby specyficzną dla systemu operacyjnego) i uzyskać katalog domowy za pomocą"${home}/${username}"
.Edycja: Używanie skrótu do definiowania katalogów domowych specyficznych dla użytkownika
Nowsze wersje Puppet (> = 2.6) obsługują skróty. Możliwe byłoby zdefiniowanie skrótu zawierającego
username => /path/to/home
mapowania dla każdego użytkownika:W przypadku dowolnej nazwy użytkownika łatwo jest uzyskać katalog domowy
$home['username']
.Skrót katalogu domowego z rezerwowym
Przez większość czasu najlepiej byłoby mieć „domyślne ustawienie rezerwowe”, jeśli użytkownik nie istnieje w haszowaniu. Teoretycznie jest to możliwe, chociaż składnia staje się nieco tajemnicza i rozdęta:
źródło
To pytanie jest stare, ale wciąż aktualne. W rzeczywistości jest teraz lepszy sposób. Dodaj niestandardowy fakt do [module] /lib/facter/home_dirs.rb zawierający następujące elementy:
Następnie możesz uzyskać dostęp do danych w manifeście w następujący sposób:
Pamiętaj, że działa to tylko wtedy, gdy użytkownik już istnieje przed uruchomieniem marionetek. Jeśli użytkownik jest tworzony podczas uruchamiania, katalog domowy powinien być już znany lub przynajmniej przewidywalny. W końcu Puppet ma na celu stworzenie porządku.
Mam nadzieję, że to komuś pomoże.
źródło
Gdy moduł kont jest dostępny, a wszystkie konta są tworzone za pomocą hiera, wówczas poniższy blok tworzy plik w katalogu domowym każdego użytkownika, zakładając, że nie obchodzą Cię konta użytkowników systemowych poza rootem.
$user_home_dir
Powinny być poprawne dla wszystkich użytkowników, które sąaccounts
,present
home
katalogów.źródło