Marioneta: cómo crear y administrar usuarios y grupos de Unix

12

Esta semana pasada me esforcé por aprender Puppet. Ahora sufro de un desbordamiento mental del búfer y poca confianza de poder domesticar a esta bestia. Me encontré con muchos ejemplos anotados, pero debido a sus innumerables variaciones, no puedo discernir entre el estilo de marionetas recomendado (reciente) y las convenciones, y los enfoques ad hoc "funciona para mí". No lo soporto porque parece ser sobre cosas de nivel básico.

Entonces. Usando Puppet para administrar grupos y usuarios, el grupo primario de los usuarios igual a su propio nombre de usuario, otros grupos podrían ser lanpara inicios de sesión de lan, wheelpara administradores, shellpara usuarios con un shell en nodos arbitrarios, mailpara usuarios, daemonspara varios demonios. Los inicios de sesión de administrador estarán en todos los nodos y, para empeorar las cosas, un inicio de sesión lan también podría ser un inicio de sesión de shell.

Por lo que entiendo, está bien definir un usuario varias veces si utiliza definiciones virtuales que se realizan en algún momento. Suena fabuloso, entonces, ¿cómo funciona eso con múltiples grupos para un usuario? Digamos que Bob puede usar tanto nodos LAN como nodos beastie.wan; ¿se thebobdefine su inicio de sesión dos veces, en lanusers.pp con groups => ["lan"]y en shellusers.pp con groups => ["shell"]? ¿Qué pasa si Bob quiere que su contraseña de LAN esté separada de su contraseña de shell?

El código que uso actualmente no tiene definiciones virtuales, los usuarios son solo inclusiones codificadas. En un momento me encontré con un ejemplo usando virtuales y aquí es donde me quedé atrapado porque no entiendo cómo expandir el código para que Puppet cree un grupo primario y los grupos requeridos que definí primero y luego se unan al usuario en esos grupos .

Correcto. Por favor, dame una idea correcta.

fuego de tambor
fuente

Respuestas:

6

Ahora sufro de un desbordamiento mental del búfer y poca confianza de poder domesticar a esta bestia.

Primero: relájate. He aprendido que, cuando eres nuevo en algo con una curva de aprendizaje como Puppet, es bastante fácil sentirse abrumado y no poder hacer mucho.

¿se define su nombre de usuario thebob dos veces, en lanusers.pp con grupos => ["lan"] y en shellusers.pp con grupos => ["shell"]?

No Prácticamente definirlo en un lugar (tal vez users.pp) con groups => ['shell', 'lan',].

En los nodos, tenga en cuenta los usuarios que necesita. Por ejemplo, si node beaminqueremos todos los shellusuarios:

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

¿Qué pasa si Bob quiere que su contraseña de LAN esté separada de su contraseña de shell?

Entonces Bob probablemente debería obtener 2 cuentas diferentes con diferentes nombres de inicio de sesión.

Belmin Fernandez
fuente
Gracias. Tienes razón sobre la primera parte, me sentí abrumado. Pero su segunda respuesta ayudó, parecía poner en marcha otros pensamientos y ahora tengo un manifiesto que funciona correctamente, con usuarios prácticamente definidos que se están realizando en sus ubicaciones adecuadas. Gracias por ayudarme con eso. :)
drumfire
No es un problema. Antes de las declaraciones virtuales, este problema involucraba una solución muy complicada. Considérese afortunado de haber subido a bordo del Puppet express ahora ;-).
Belmin Fernández
Estoy usando declaraciones virtuales, pero necesito que algunos usuarios estén en el grupo "sudo" en algunos hosts y no en otros. Esto no resuelve ese escenario (y estoy teniendo dificultades para averiguar qué hacer: D).
jjmontes
3

Puppet no funciona bien con la gestión complicada de usuarios / grupos. Sería mucho mejor desplegar algo como LDAP; por mucho que no me guste, funcionará mucho mejor que tratar de vencer a Puppet para que se someta.

womble
fuente
O FreeIPA. Puppet es bueno para las cuentas de servicio que necesitan estar en el sistema, pero no para administrar usuarios habituales ...
ewwhite
44
Con el debido respeto (siendo que usted es un miembro destacado de SF): no creo que esto responda la pregunta. P: "¿Cómo debo crear y administrar usuarios y grupos de Unix en Puppet?". A: "LDAP". Creo que respuestas como esta encajan mejor como comentarios. Por supuesto, si esto se ha discutido antes en meta o algo así, tal vez simplemente no estoy informado. Por favor no me odies :-).
Belmin Fernández
3
@ BeamingMel-Bin: Hay un fuerte espíritu de "la herramienta adecuada para el trabajo" en SF. Si alguien pregunta "¿cuál es la mejor manera de golpear este tornillo con mi martillo para que entre?", Diremos "comprar un destornillador", no dar largos tratados sobre los beneficios de las diferentes técnicas de martillo. Esto se debe a que la mayoría de los interrogadores aquí son tan inexpertos o ignorantes que no son conscientes de que existen mejores soluciones, ni siquiera de que podrían existir mejores soluciones (y, por lo tanto, no saben preguntar "¿hay una mejor manera de manejar esto? tornillo "o" ¿cuál es la mejor manera de introducir este tornillo? ").
womble
1
@drumfire: De nuevo, si estás preguntando cómo hacer algo estúpido, la respuesta correcta es "no hagas eso". Así es como funciona SF. No estamos aquí para ayudar a las personas a hacer cosas estúpidas, estamos aquí para crear administradores de sistemas más efectivos.
womble
3
SF, siendo parte de la trilogía original, ha existido por mucho más tiempo y tiene un "espíritu independiente" mucho más fuerte que otros sitios de SE más homogéneos. También hay que considerar la composición de los usuarios. Los administradores de sistemas son irritables y obstinados.
womble