Come posso fare in modo che i pupazzi distribuiscano chiavi ssh per utenti virtuali?


8

Sto cercando di ottenere un pupazzo per assegnare chiavi ssh autorizzate per utenti virtuali, ma continuo a ricevere il seguente errore:

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

Credo che la mia configurazione sia corretta (elencata di seguito) ma c'è un errore di sintassi o un problema di scoping che mi manca? Vorrei semplicemente assegnare gli utenti ai nodi e far sì che quegli utenti abbiano automaticamente installato le loro chiavi ssh. C'è forse un modo migliore per farlo e lo sto solo pensando troppo?

# /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" }

Risposte:


15

Ti manca un tutore di chiusura alla fine di virtual.pp.


7

Ecco un modulo fantoccio che ho scritto un anno fa per la gestione degli utenti per un precedente datore di lavoro.


Sembra così complicato ...
SamK,

3
È stata la cosa più semplice che mi è venuta in mente che ha funzionato. Ovunque ho chiesto aiuto o altri approcci mi è stato detto "usa LDAP", che era una mancata risposta per soli 10 utenti, poiché non usavamo LDAP altrove e dovevamo supportare 3 siti fisici.
jtimberman,

3

Sì, c'è un modo migliore, questo è esattamente ciò che le definizioni servono. Dovresti creare una definizione chiamata "ssh_user", creare utenti virtuali di quel tipo, quindi realizzarli. Il codice di Josh fa uso di una definizione come sto parlando, ma aggiungeresti anche ssh_authorized_key nella definizione, parametrizzata con variabili dalla definizione.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.