Puppet: jak tworzyć i zarządzać użytkownikami i grupami uniksowymi

12

W ubiegłym tygodniu poświęciłem cały wysiłek na naukę kukiełki. Teraz cierpię z powodu przepełnienia bufora mentalnego i niewielkiej pewności, że kiedykolwiek będę w stanie oswoić tę bestię. Natknąłem się na wiele przykładów z adnotacjami, ale ze względu na ich niezliczoną różnorodność nie potrafię rozróżnić między zalecanym (ostatnim) stylem Marionetek a konwencjami i podejściami ad hoc „działa dla mnie”. Nie mogę tego znieść, ponieważ wydaje się, że chodzi o rzeczy na poziomie podstawowym.

Więc. Używając Puppet do zarządzania grupami i użytkownikami, podstawową grupą użytkowników równą ich własnej nazwie użytkownika, inne grupy mogą być landla logowań LAN, wheeldla administratorów, shelldla użytkowników z powłoką na dowolnych węzłach, maildla użytkowników, daemonsdla różnych demonów. Loginy administratora będą na wszystkich węzłach, a co gorsza, logowanie do sieci LAN może być również logowaniem do powłoki.

Z tego, co rozumiem, można definiować użytkownika wiele razy, jeśli korzystasz z definicji wirtualnych, które są realizowane w pewnym momencie. Brzmi świetnie, więc jak to działa z wieloma grupami dla użytkownika? Powiedz, że Bob może używać zarówno węzłów LAN, jak i węzła beastie.wan; czy jego login jest thebobnastępnie definiowany dwa razy, w lanusers.pp z groups => ["lan"]oraz w shellusers.pp z groups => ["shell"]? Co jeśli Bob chce, aby jego hasło LAN było oddzielone od hasła powłoki?

Kod, którego obecnie używam, nie ma wirtualnych definicji, użytkownicy są tylko pojedynczymi inkluzjami zakodowanymi na stałe. W pewnym momencie natknąłem się na przykład wykorzystujący wirtualnych i właśnie tam utknąłem, ponieważ nie rozumiem, jak rozwinąć kod, aby Puppet utworzył grupę podstawową i grupy, które najpierw zdefiniowałem, a następnie dołącza do użytkownika w tych grupach .

Dobrze. Proszę, zrozum mnie poprawnie.

ogień bębna
źródło

Odpowiedzi:

6

Teraz cierpię z powodu przepełnienia bufora mentalnego i niewielkiej pewności, że kiedykolwiek będę w stanie oswoić tę bestię.

Po pierwsze: zrelaksuj się. Nauczyłem się, że kiedy jesteś nowy w czymś takim, jak Kukiełka, łatwo jest zostać przytłoczonym i nie być w stanie wiele zrobić.

czy jego login thebob jest następnie zdefiniowany dwa razy, w lanusers.pp z grupami => [„lan”] oraz w shellusers.pp z grupami => [„powłoka”]?

Nie. Praktycznie zdefiniuj to w jednym miejscu (może users.pp) za pomocą groups => ['shell', 'lan',].

W węzłach uświadom sobie potrzebnych użytkowników. Na przykład, jeśli node beaminchcemy wszyscy shellużytkownicy:

node beamin {
    Account <| groups == 'shell' |>
}

Co jeśli Bob chce, aby jego hasło LAN było oddzielone od hasła powłoki?

Wtedy Bob powinien prawdopodobnie uzyskać 2 różne konta o różnych nazwach logowania.

Belmin Fernandez
źródło
Dzięki. Masz rację co do pierwszej części, stałem się przytłoczony. Ale twoja druga odpowiedź pomogła, wydawało się, że wprawiła w ruch inne myśli, a teraz mam manifest, który działa poprawnie, z wirtualnie zdefiniowanymi użytkownikami realizowanymi we właściwych lokalizacjach. Dzięki za pomoc w tym. :)
drumfire
Żaden problem. Przed wirtualnymi deklaracjami problem polegał na bardzo skomplikowanym rozwiązaniu. Uważaj się za szczęściarza, że ​​wszedłeś teraz na pokład Puppet express ;-).
Belmin Fernandez,
Używam deklaracji wirtualnych, ale potrzebuję, aby niektórzy użytkownicy byli w grupie „sudo” na niektórych hostach, a nie na innych. To nie rozwiązuje tego scenariusza (i mam trudności z ustaleniem, co robić: D).
jjmontes
3

Puppet nie radzi sobie dobrze ze skomplikowanym zarządzaniem użytkownikami / grupami. Lepiej byłoby wdrożyć coś takiego jak LDAP - o ile mi się to nie podoba, będzie działało o wiele lepiej niż próba zmuszenia Puppet do poddania się.

womble
źródło
Lub FreeIPA. Puppet jest fajny dla kont serwisowych, które muszą być w systemie, ale nie zarządzają zwykłymi użytkownikami ...
ewwhite
4
Z całym szacunkiem (ponieważ jesteś najlepszym członkiem SF): Nie sądzę, że to odpowiada na pytanie. P: „Jak powinienem tworzyć i zarządzać użytkownikami i grupami uniksowymi w Puppet?”. Odp .: „LDAP”. Uważam, że takie odpowiedzi lepiej pasują do komentarzy. Oczywiście, jeśli zostało to omówione wcześniej w meta lub czymś takim, być może jestem po prostu niedoinformowany. Proszę, nie nienawidź mnie :-).
Belmin Fernandez
3
@ BeamingMel-Bin: Na platformie SF panuje duch „odpowiedniego narzędzia do pracy”. Jeśli ktoś pyta „jaki jest najlepszy sposób, aby uderzyć śrubą młotkiem, aby go wprowadzić?”, Powiemy „kup śrubokręt”, nie przedstawiając długich rozpraw o zaletach różnych technik młotkowych. To dlatego, że większość pytających tutaj są albo tak niedoświadczony lub nieświadomy, że nie są świadomi, że istnieją lepsze rozwiązania, ani nawet, że lepsze rozwiązania mogłyby istnieć (a więc nie wiedzą, na pytanie „czy istnieje lepszy sposób, aby jechać w ten śruba? ”lub„ jaki jest najlepszy sposób na wkręcenie tej śruby? ”).
womble
1
@drumfire: Ponownie, jeśli pytasz, jak zrobić coś głupiego, poprawną odpowiedzią jest „nie rób tego”. Tak działa SF. Nie jesteśmy tutaj, aby pomagać ludziom robić głupie rzeczy, jesteśmy tutaj, aby tworzyć skuteczniejszych sysadminów.
womble
3
SF, będąca częścią oryginalnej trylogii, istnieje o wiele dłużej i ma znacznie silniejszy „niezależny duch” niż inne, bardziej jednorodne strony SE. Należy również wziąć pod uwagę makijaż użytkowników. Sysadmini są zepsute i uparte.
womble