Bagaimana saya bisa memiliki kunci ssh menyebarkan boneka untuk pengguna virtual?

8

Saya mencoba membuat boneka untuk menetapkan kunci ssh resmi untuk pengguna virtual, tetapi saya terus mendapatkan kesalahan berikut:

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

Saya percaya konfigurasi saya sudah benar (tercantum di bawah) tetapi apakah ada kesalahan sintaksis atau masalah pelingkupan yang saya lewatkan? Saya hanya ingin menetapkan pengguna ke node dan memiliki pengguna tersebut secara otomatis menginstal kunci ssh mereka. Apakah mungkin ada cara yang lebih baik untuk melakukan ini dan saya hanya terlalu memikirkannya?

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

Jawaban:

15

Anda melewatkan penjepit penutup di akhir virtual.pp.

womble
sumber
7

Berikut adalah modul boneka yang saya tulis setahun yang lalu untuk mengelola pengguna untuk majikan sebelumnya.

jtimberman
sumber
Ini terlihat sangat rumit ...
SamK
3
Itu adalah hal paling sederhana yang saya lakukan ketika berhasil. Di mana-mana saya meminta bantuan atau pendekatan lain, saya diberi tahu "gunakan LDAP", yang bukan jawaban untuk hanya 10 pengguna, karena kami tidak menggunakan LDAP di tempat lain, dan harus mendukung 3 situs fisik.
jtimberman
3

Ya ada cara yang lebih baik, inilah definisi untuk apa. Anda akan membuat definisi yang disebut sesuatu seperti "ssh_user", membuat pengguna virtual dari jenis itu, kemudian mewujudkannya. Kode Josh menggunakan mendefinisikan seperti yang saya bicarakan, tetapi Anda juga akan menambahkan ssh_authorized_key dalam define, parameter dengan variabel dari define.


sumber
2

Saya sangat merekomendasikan menggunakan sintaks Puppet highlighting untuk menghindari hal semacam ini.

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

Cawflands
sumber
1
Dan lihatlah Geppetto , sebuah perangkat yang bagus untuk membantu mengembangkan modul dan manifes wayang. Itu akan menandakan kesalahan seperti ini.
Martijn Heemels
2
Berbasis Eclipse. Saya tidak akan menyebut itu "baik": p
ThiefMaster