Comment puis-je demander à puppet de déployer des clés ssh pour les utilisateurs virtuels?


8

J'essaie d'obtenir une marionnette pour attribuer des clés ssh autorisées aux utilisateurs virtuels, mais je reçois toujours l'erreur suivante:

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

Je crois que ma configuration est correcte (répertoriée ci-dessous), mais y a-t-il une erreur de syntaxe ou un problème de portée qui me manque? Je voudrais simplement affecter des utilisateurs aux nœuds et faire installer automatiquement ces clés ssh à ces utilisateurs. Y a-t-il peut-être une meilleure façon de le faire et j'y réfléchis simplement?

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

Réponses:


15

Vous manquez une accolade de fermeture à la fin de virtual.pp.


7

Voici un module de marionnettes que j'ai écrit il y a un an pour gérer les utilisateurs d'un ancien employeur.


Cela semble si compliqué ...
SamK

3
C'est la chose la plus simple que j'ai trouvée qui a fonctionné. Partout où j'ai demandé de l'aide ou d'autres approches, on m'a dit "utiliser LDAP", ce qui était une non-réponse pour seulement 10 utilisateurs, car nous n'utilisions LDAP nulle part ailleurs et nous devions prendre en charge 3 sites physiques.
jtimberman

3

Oui, il y a une meilleure façon, c'est exactement à cela que servent les définitions. Vous devez créer une définition appelée quelque chose comme "ssh_user", créer des utilisateurs virtuels de ce type, puis les réaliser. Le code de Josh utilise une définition comme je parle, mais vous ajouteriez également la clé ssh_authorized_key dans la définition, paramétrée avec des variables de la définition.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.