¿Cómo puedo hacer que Puppet implemente claves ssh para usuarios virtuales?


8

Estoy tratando de hacer que Puppet asigne claves ssh autorizadas para usuarios virtuales, pero sigo recibiendo el siguiente error:

err: Could not retrieve catalog: Could not parse for environment production: Syntax error at 'user'; expected '}' at /etc/puppet/modules/users/manifests/ssh_authorized_keys.pp:9

Creo que mi configuración es correcta (se enumera a continuación) pero ¿hay algún error de sintaxis o problema de alcance que me falta? Simplemente me gustaría asignar usuarios a los nodos y hacer que esos usuarios tengan instaladas automáticamente sus claves ssh. ¿Hay tal vez una mejor manera de hacer esto y solo estoy pensando demasiado?

# /etc/puppet/modules/users/virtual.pp

class user::virtual {
  @user { "user":
    home => "/home/user",
        ensure => "present",
        groups => ["root","wheel"],
        uid => "8001",
        password => "SCRAMBLED",
        comment => "User",
        shell => "/bin/bash",
    managehome => "true",
  }

# /etc/puppet/modules/users/manifests/ssh_authorized_keys.pp

ssh_authorized_key { "user":
  ensure => "present",
  type => "ssh-dss",
  key => "AAAAB....",
  user => "user",
}


# /etc/puppet/modules/users/init.pp

import "users.pp"
import "ssh_authorized_keys.pp"

class user::ops inherits user::virtual {
        realize(
                User["user"],
        )
}

# /etc/puppet/manifests/modules.pp

import "sudo"
import "users"

# /etc/puppet/manifests/nodes.pp

node basenode {
  include sudo
}

node 'testbox' inherits basenode {
  include user::ops 
}

# /etc/puppet/manifests/site.pp

import "modules"
import "nodes"

# The filebucket option allows for file backups to the server
filebucket { main: server => 'puppet' }

# Set global defaults - including backing up all files to the main filebucket and adds a global path
File { backup => main }
Exec { path => "/usr/bin:/usr/sbin/:/bin:/sbin" }

Respuestas:


15

Te estás perdiendo una llave de cierre al final de virtual.pp.


7

Aquí hay un módulo de títeres que escribí hace un año para administrar usuarios de un empleador anterior.


Esto se ve tan complicado ...
SamK

3
Fue lo más simple que se me ocurrió que funcionó. En todas partes pedí ayuda u otros enfoques, me dijeron que "usara LDAP", que no respondía para solo 10 usuarios, ya que no usamos LDAP en ningún otro lugar y tenía que soportar 3 sitios físicos.
jtimberman

3

Sí, hay una mejor manera, esto es exactamente para qué sirven las definiciones. Crearía una definición llamada algo así como "ssh_user", haría usuarios virtuales de ese tipo y luego se daría cuenta de eso. El código de Josh utiliza una definición como estoy hablando, pero también agregaría la clave ssh_authorized_key en la definición, parametrizada con variables de la definición.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.