Wie kann ich Puppet SSH-Schlüssel für virtuelle Benutzer bereitstellen lassen?


8

Ich versuche, Puppet dazu zu bringen, autorisierte SSH-Schlüssel für virtuelle Benutzer zuzuweisen, erhalte jedoch weiterhin den folgenden Fehler:

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

Ich glaube, meine Konfiguration ist korrekt (siehe unten), aber gibt es einen Syntaxfehler oder ein Scoping-Problem, das mir fehlt? Ich möchte einfach Benutzer Knoten zuweisen und diese Benutzer ihre SSH-Schlüssel automatisch installieren lassen. Gibt es vielleicht einen besseren Weg, dies zu tun, und ich überdenke es nur?

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

Antworten:


15

Sie vermissen eine schließende Klammer am Ende von virtual.pp.


7

Hier ist ein Puppenmodul, das ich vor einem Jahr geschrieben habe, um Benutzer für einen früheren Arbeitgeber zu verwalten.


Das sieht so kompliziert aus ...
SamK

3
Es war das Einfachste, was ich mir ausgedacht habe. Überall, wo ich um Hilfe oder andere Ansätze bat, wurde mir gesagt, "LDAP verwenden", was für nur 10 Benutzer keine Antwort war, da wir LDAP nirgendwo anders verwendeten und 3 physische Standorte unterstützen mussten.
Jtimberman

3

Ja, es gibt einen besseren Weg, genau dafür sind Definitionen gedacht. Sie würden eine Definition mit dem Namen "ssh_user" erstellen, virtuelle Benutzer dieses Typs erstellen und diese dann realisieren. Joshs Code verwendet eine Definition, von der ich spreche, aber Sie würden auch die ssh_authorized_key in die Definition einfügen, die mit Variablen aus der Definition parametrisiert ist.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.