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" }
Pheezy
la source

Réponses:

15

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

womble
la source
7

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

jtimberman
la source
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.


la source
2

Je recommande fortement d'utiliser la coloration syntaxique Puppet pour éviter ce genre de chose.

http://www.vim.org/scripts/script.php?script_id=2094

Cawflands
la source
1
Et jetez un œil à Geppetto , un bel ensemble d'outils pour aider à développer des modules et des manifestes Puppet. Cela signalerait une erreur comme celle-ci.
Martijn Heemels
2
Il est basé sur Eclipse. Je n'appellerais pas ça "sympa": p
ThiefMaster