¿Es posible agregar un usuario existente a un grupo con la marioneta 2.7.18?
Tenemos dos módulos, cada uno define una clase:
- El módulo "usuario" crea todos los usuarios, incluidos el usuario foo y la barra de usuarios.
- El módulo "subversion" se ocupa de varios archivos conf y crea el grupo svn.
Nos gustaría agregar el usuario foo al grupo svn dentro del módulo "subversión".
He probado el parámetro de membresía como se describe en la solicitud de función existente :
group {
"svn":
ensure => present,
gid => xxxxx;
}
user {
"foo":
group => ["svn"],
membership => minimum;
}
Pero me sale el siguiente error:
err: No se pudo recuperar el catálogo del servidor remoto: Error 400 en el SERVIDOR: Declaración duplicada: El usuario [foo] ya está declarado en el archivo /pathto/modules/subversion/manifests/init.pp en la línea xx; no se puede volver a declarar en /pathto/modules/users/manifests/init.pp:xxx en el nodo myserver.example.com
¿Esta característica ya está implementada? Si no, ¿hay una buena solución?
Usar los recursos virtuales de Puppet es la forma correcta de hacerlo, pero si no puede cambiar las definiciones de usuario y necesita una solución alternativa, lo siguiente es horrible y hacky, pero funcionará:
Esencialmente, solo verificamos si algún grupo contiene user foo todavía ... si no, use los comandos normales de usermod para agregarlo además de los grupos existentes a los que pertenece foo.
fuente
getent group somegroup|cut -d: -f4|grep -q foo
para no asumir que estamos usando/etc/group
.path
parámetro. Sugiero tener un recurso global predeterminado, tal vez eso se extrae$PATH
de facter.Gracias - feo truco seguro, pero hace el trabajo. Aquí hay un ejemplo con parches (que combina los comentarios anteriores) para agregar 'nrpe' al grupo 'nagios'. Usé un paquete requerido ya que el usuario aquí es RPM proporcionado en lugar de títere.
fuente