Czy można dodać istniejącego użytkownika do grupy z marionetką 2.7.18?
Mamy dwa moduły, każdy definiuje jedną klasę:
- moduł „użytkownik” tworzy wszystkich użytkowników, w tym użytkownika foo i pasek użytkownika.
- moduł „subversion” zajmuje się różnymi plikami conf i tworzy grupę svn.
Chcielibyśmy dodać użytkownika foo do grupy svn w module „subversion”.
Wypróbowałem parametr członkostwa zgodnie z opisem w istniejącym żądaniu funkcji :
group {
"svn":
ensure => present,
gid => xxxxx;
}
user {
"foo":
group => ["svn"],
membership => minimum;
}
Ale pojawia się następujący błąd:
err: Nie można pobrać katalogu ze zdalnego serwera: Błąd 400 na SERWERZE: Duplikat deklaracji: Użytkownik [foo] jest już zadeklarowany w pliku /pathto/modules/subversion/manifests/init.pp w linii xx; nie można ponownie ustawić na /pathto/modules/users/manifests/init.pp:xxx w węźle myserver.example.com
Czy ta funkcja jest już zaimplementowana? Jeśli nie, czy istnieje dobre obejście?
Korzystanie z wirtualnych zasobów Puppet jest właściwym sposobem, aby to zrobić - ale jeśli nie możesz zmienić definicji użytkownika i potrzebujesz w międzyczasie poprawki obejścia, poniższe działania są okropne i zhackowane, ale zadziałają:
Zasadniczo sprawdzamy tylko, czy jakaś grupa zawiera jeszcze użytkownika foo ... jeśli nie, użyj zwykłych poleceń usermod, aby dodać go oprócz istniejących grup, do których należy foo.
źródło
getent group somegroup|cut -d: -f4|grep -q foo
aby nie zakładać, że używamy/etc/group
.path
parametr. Sugeruję, aby mieć domyślną wartość globalnego zasobu, być może$PATH
pochodzącą od faktora.Dzięki - na pewno brzydki hack, ale wykonuje zadanie. Oto załatany przykład (łączący powyższe komentarze), aby dodać „nrpe” do grupy „nagios”. Użyłem wymaganego pakietu, ponieważ tutaj użytkownik ma RPM, a nie marionetkę.
źródło