Puppet: Erstellen und Verwalten von Unix-Benutzern und -Gruppen

12

In der letzten Woche habe ich mich intensiv mit Puppet beschäftigt. Jetzt leide ich unter einem mentalen Pufferüberlauf und wenig Vertrauen, dieses Biest jemals zähmen zu können. Ich bin auf viele kommentierte Beispiele gestoßen, aber aufgrund ihrer unzähligen Variationen kann ich nicht zwischen empfohlenem (neuem) Puppenstil und Konventionen unterscheiden, und Ad-hoc-Ansätze "Arbeiten für mich". Ich kann es nicht ertragen, weil es um grundlegende Dinge zu gehen scheint.

So. Mit Puppet verwalten Gruppen und Benutzer, Benutzer primäre Gruppe ihren eigenen Benutzernamen entsprechen, könnten auch andere Gruppen sein , lanfür lan - Anmeldungen, wheelfür Administratoren, shellfür Benutzer mit einer Shell auf beliebigen Knoten, mailfür Benutzer, daemonsfür verschiedene Dämonen. Admin-Anmeldungen erfolgen auf allen Knoten, und zur Verschlechterung kann eine LAN-Anmeldung auch eine Shell-Anmeldung sein.

Soweit ich weiß, ist es in Ordnung, einen Benutzer mehrmals zu definieren, wenn Sie virtuelle Definitionen verwenden, die irgendwann realisiert werden. Klingt fantastisch, wie funktioniert das mit mehreren Gruppen für einen Benutzer? Angenommen, Bob kann sowohl LAN-Knoten als auch Knoten beastie.wan verwenden. thebobIst sein Login dann zweimal definiert, in lanusers.pp mit groups => ["lan"]und in shellusers.pp mit groups => ["shell"]? Was ist, wenn Bob möchte, dass sein LAN-Passwort von seinem Shell-Passwort getrennt ist?

Der Code, den ich derzeit verwende, hat keine virtuellen Definitionen, Benutzer sind nur fest codierte einzelne Einschlüsse. Irgendwann bin ich auf ein Beispiel mit Virtuals gestoßen, und hier blieb ich hängen , weil ich nicht verstehe, wie man den Code so erweitert, dass Puppet eine primäre Gruppe und die erforderlichen Gruppen erstellt, die ich zuerst definiert habe, und dann dem Benutzer in diesen Gruppen beitritt .

Richtig. Bitte schlag mich richtig an.

Trommelfeuer
quelle

Antworten:

6

Jetzt leide ich unter einem mentalen Pufferüberlauf und wenig Vertrauen, dieses Biest jemals zähmen zu können.

Erstens: Entspannen Sie sich. Ich habe gelernt, dass es ziemlich leicht ist, überfordert zu werden und nicht viel zu tun, wenn man etwas mit einer Lernkurve wie Marionette anfängt.

Ist sein Login thebob dann zweimal definiert, in lanusers.pp mit groups => ["lan"] und in shellusers.pp mit groups => ["shell"]?

Nee. Definiere es virtuell an einem Ort (vielleicht users.pp) mit groups => ['shell', 'lan',].

Realisieren Sie auf den Knoten die Benutzer, die Sie benötigen. Zum Beispiel, wenn node beaminwir für alle shellBenutzer wollen :

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

Was ist, wenn Bob möchte, dass sein LAN-Passwort von seinem Shell-Passwort getrennt ist?

Dann sollte Bob wahrscheinlich 2 verschiedene Accounts mit unterschiedlichen Login-Namen bekommen.

Belmin Fernandez
quelle
Vielen Dank. Du hast Recht mit dem ersten Teil, ich war überwältigt. Aber Ihre zweite Antwort hat geholfen, es schien andere Gedanken in Gang zu setzen, und jetzt habe ich ein Manifest, das richtig funktioniert, mit virtuell definierten Benutzern, die an ihren richtigen Orten verwirklicht werden. Danke, dass du mir dabei geholfen hast. :)
Trommelfeuer
Kein Problem. Vor virtuellen Deklarationen bestand dieses Problem in einer sehr komplizierten Lösung. Betrachten Sie sich als glücklich, dass Sie jetzt an Bord des Puppet Express gekommen sind ;-).
Belmin Fernandez
Ich verwende virtuelle Deklarationen, aber einige Benutzer müssen auf einigen Hosts in der Gruppe "sudo" sein, auf anderen nicht. Dies löst das Szenario nicht (und es fällt mir schwer, herauszufinden, was zu tun ist: D).
Jjmontes
3

Puppet kommt mit komplizierter Benutzer- / Gruppenverwaltung nicht gut zurecht. Sie sind weitaus besser dran, wenn Sie so etwas wie LDAP bereitstellen - so sehr es mir auch nicht gefällt, es wird viel besser funktionieren, als zu versuchen, Puppet zur Unterwerfung zu bewegen.

womble
quelle
Oder FreeIPA. Puppet eignet sich gut für Dienstkonten, die auf dem System vorhanden sein müssen, aber keine regulären Benutzer verwalten ...
ewwhite
4
Bei allem Respekt (weil Sie ein Top-SF-Mitglied sind): Ich glaube, das beantwortet die Frage nicht. F: "Wie soll ich Unix-Benutzer und -Gruppen in Puppet erstellen und verwalten?" A: "LDAP". Ich glaube, Antworten wie diese passen besser als Kommentare. Natürlich, wenn dies vorher in Meta oder so diskutiert wurde, bin ich vielleicht nur uninformiert. Bitte hasse mich nicht :-).
Belmin Fernandez
3
@ BeamingMel-Bin: Es gibt einen starken Geist von "das richtige Werkzeug für den Job" auf SF. Wenn jemand fragt, wie man diese Schraube am besten mit meinem Hammer schlagen kann, um sie zum Einschlagen zu bringen, wird "Schraubenzieher kaufen" gesagt, ohne lange Abhandlungen über die Vorteile der verschiedenen Hammertechniken zu machen. Dies liegt daran, dass die meisten Fragesteller entweder so unerfahren oder unwissend sind, dass sie nicht wissen, dass es bessere Lösungen gibt oder dass es sogar bessere Lösungen geben könnte (und sie daher nicht wissen, ob sie fragen sollen, ob es einen besseren Weg gibt, dies zu tun Schraube? "oder" Wie wird diese Schraube am besten eingeschraubt? ").
womble
1
@drumfire: Nochmal, wenn du fragst, wie man etwas Dummes macht, ist die richtige Antwort " Tu das nicht". So funktioniert SF. Wir sind nicht hier, um Leuten zu helfen, dumme Dinge zu tun, wir sind hier, um effektivere Sysadmins zu machen.
womble
3
SF, der Teil der ursprünglichen Trilogie ist, gibt es schon viel länger und hat einen viel stärkeren "unabhängigen Geist" als andere, homogenere SE-Sites. Es gibt auch die Zusammensetzung der Benutzer zu berücksichtigen. Sysadmins sind launisch und eigensinnig.
womble