Como posso fazer o fantoche implantar chaves ssh para usuários virtuais?

8

Estou tentando fazer com que o fantoche atribua chaves ssh autorizadas para usuários virtuais, mas continuo recebendo o seguinte erro:

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

Acredito que minha configuração esteja correta (listada abaixo), mas há um erro de sintaxe ou um problema de escopo em falta? Eu simplesmente gostaria de atribuir usuários a nós e fazer com que esses usuários tenham suas chaves ssh instaladas automaticamente. Existe talvez uma maneira melhor de fazer isso e eu estou pensando demais?

# /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
fonte

Respostas:

15

Está faltando uma chave de fechamento no final de virtual.pp.

mulher
fonte
7

Aqui está um módulo fantoche que escrevi há um ano para gerenciar usuários de um empregador anterior.

jtimberman
fonte
Isso parece tão complicado ...
SamK
3
Foi a coisa mais simples que eu criei que funcionou. Em todos os lugares em que pedi ajuda ou outras abordagens, disseram-me para "usar LDAP", que não era resposta para apenas 10 usuários, já que não usamos LDAP em nenhum outro lugar e precisávamos oferecer suporte a três sites físicos.
precisa
3

Sim, existe uma maneira melhor, é exatamente para isso que servem as definições. Você criaria uma definição chamada algo como "ssh_user", criaria usuários virtuais desse tipo e depois perceberia isso. O código de Josh faz uso de um define como eu estou falando, mas você também adicionaria o ssh_authorized_key no define, parametrizado com variáveis ​​do define.


fonte
2

Eu recomendo usar o destaque da sintaxe do Puppet para evitar esse tipo de coisa.

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

Cawflands
fonte
11
E dê uma olhada no Geppetto , um bom conjunto de ferramentas para ajudar a desenvolver módulos e manifestos do Puppet. Isso indicaria um erro como este.
Martijn Heemels
2
É baseado em Eclipse. Eu não chamaria isso de "legal": p
ThiefMaster