Refactor user definitions.

Change-Id: If8e05e03a32c6d850ff9a9b1b55be0ae61de35fb
This commit is contained in:
James E. Blair 2011-09-14 21:20:17 +00:00
parent 5c7bf517de
commit 7b5c47e0de
7 changed files with 73 additions and 3036 deletions

View File

@ -1,183 +0,0 @@
import sys
import subprocess
from launchpadlib.launchpad import Launchpad
from launchpadlib.uris import LPNET_SERVICE_ROOT
cachedir = "~/.launchpadlib/cache"
launchpad = Launchpad.login_with('Sync Users', LPNET_SERVICE_ROOT, cachedir)
def get_type(in_type):
if in_type == "RSA":
return "ssh-rsa"
else:
return "ssh-dsa"
for team_todo in ('openstack-ci-admins', 'openstack-admins'):
team_underscores = team_todo.replace('-', '_')
team = launchpad.people[team_todo]
details = [detail for detail in team.members_details]
users = []
with open("manifests/%s_users.pp" % team_underscores, "w") as user_pp:
user_pp.write("""
class %s_users {
include sudoers
""" % team_underscores)
for detail in details:
sudo = True
member = detail.member
status = detail.status
if (status == "Approved" or status == "Administrator") \
and member.is_valid:
full_name = member.display_name.replace("'", "\\'")
login_name = member.name
ssh_keys = "\\n".join(["%s %s %s" % (get_type(key.keytype),
key.keytext, key.comment) for key in member.sshkeys])
ssh_keys = ssh_keys.replace("\n", "\\n")
for nick in member.irc_nicknames:
if nick.network == 'ci.openstack.org':
login_name = nick.nickname
auth_content = "[Launchpad]\\nhost = .launchpad.net\\n" + \
"scheme = ssh\\nuser = %s\\n" % member.name
user_pp.write("""
group { '%(login_name)s':
ensure => 'present'
}
user { '%(login_name)s':
ensure => 'present',
comment => '%(full_name)s',
home => $operatingsystem ? {
Darwin => '/Users/%(login_name)s',
solaris => '/export/home/%(login_name)s',
default => '/home/%(login_name)s',
},
shell => '/bin/bash',
gid => '%(login_name)s',
groups => ['wheel','sudo','admin'],
membership => 'minimum',
}
file { '%(login_name)shome':
name => $operatingsystem ? {
Darwin => '/Users/%(login_name)s',
solaris => '/export/home/%(login_name)s',
default => '/home/%(login_name)s',
},
owner => '%(login_name)s',
group => '%(login_name)s',
mode => 644,
ensure => 'directory',
}
file { '%(login_name)ssshdir':
name => $operatingsystem ? {
Darwin => '/Users/%(login_name)s/.ssh',
solaris => '/export/home/%(login_name)s/.ssh',
default => '/home/%(login_name)s/.ssh',
},
owner => '%(login_name)s',
group => '%(login_name)s',
mode => 700,
ensure => 'directory',
require => File['%(login_name)shome'],
}
file { '%(login_name)skeys':
name => $operatingsystem ? {
Darwin => '/Users/%(login_name)s/.ssh/authorized_keys',
solaris => '/export/home/%(login_name)s/.ssh/authorized_keys',
default => '/home/%(login_name)s/.ssh/authorized_keys',
},
owner => '%(login_name)s',
group => '%(login_name)s',
mode => 640,
content => "%(ssh_keys)s",
ensure => 'present',
require => File['%(login_name)ssshdir'],
}
file { '%(login_name)sbashrc':
name => $operatingsystem ? {
Darwin => '/Users/%(login_name)s/.bashrc',
solaris => '/export/home/%(login_name)s/.bashrc',
default => '/home/%(login_name)s/.bashrc',
},
owner => '%(login_name)s',
group => '%(login_name)s',
mode => 640,
source => "/etc/skel/.bashrc",
replace => 'false',
ensure => 'present',
}
file { '%(login_name)sbash_logout':
name => $operatingsystem ? {
Darwin => '/Users/%(login_name)s/.bash_logout',
solaris => '/export/home/%(login_name)s/.bash_logout',
default => '/home/%(login_name)s/.bash_logout',
},
source => "/etc/skel/.bash_logout",
owner => '%(login_name)s',
group => '%(login_name)s',
mode => 640,
replace => 'false',
ensure => 'present',
}
file { '%(login_name)sprofile':
name => $operatingsystem ? {
Darwin => '/Users/%(login_name)s/.profile',
solaris => '/export/home/%(login_name)s/.profile',
default => '/home/%(login_name)s/.profile',
},
source => "/etc/skel/.profile",
owner => '%(login_name)s',
group => '%(login_name)s',
mode => 640,
replace => 'false',
ensure => 'present',
}
file { '%(login_name)sbazaardir':
name => $operatingsystem ? {
Darwin => '/Users/%(login_name)s/.bazaar',
solaris => '/export/home/%(login_name)s/.bazaar',
default => '/home/%(login_name)s/.bazaar',
},
owner => '%(login_name)s',
group => '%(login_name)s',
mode => 755,
ensure => 'directory',
require => File['%(login_name)shome'],
}
file { '%(login_name)sbazaarauth':
name => $operatingsystem ? {
Darwin => '/Users/%(login_name)s/.bazaar/authentication.conf',
solaris => '/export/home/%(login_name)s/.bazaar/authentication.conf',
default => '/home/%(login_name)s/.bazaar/authentication.conf',
},
owner => '%(login_name)s',
group => '%(login_name)s',
mode => 640,
content => "%(auth_content)s",
ensure => 'present',
require => File['%(login_name)sbazaardir'],
}
""" % dict(login_name=login_name, full_name=full_name, ssh_keys=ssh_keys,
member_name=member.name, auth_content=auth_content))
print "User=%s created" % login_name
user_pp.write("""
}
""")

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,5 @@
import "openstack_admins_users" #TODO: refactor
import "openstack_ci_admins_users" #TODO: refactor
import "doc_server" # TODO: refactor out of module
import "users"
#
# Abstract classes:
#
@ -43,12 +41,15 @@ class openstack_base {
class openstack_server {
include openstack_base
include openstack_admins_users
realize (
User::Virtual::Localuser["mordred"],
User::Virtual::Localuser["corvus"],
User::Virtual::Localuser["soren"],
)
}
class openstack_jenkins_slave {
include openstack_base
include openstack_ci_admins_users
include jenkins_slave
apt::ppa { "ppa:nova-core/trunk":
@ -113,6 +114,9 @@ node "gerrit.openstack.org" {
node "gerrit-dev.openstack.org" {
$iptables_public_tcp_ports = [80, 443, 29418]
include openstack_server
include openstack_project::users
class { 'gerrit':
canonicalweburl => "https://review-dev.openstack.org/",
email => "review-dev@openstack.org",
@ -127,133 +131,9 @@ node "community.openstack.org" {
$iptables_public_tcp_ports = [80, 443, 29418]
include openstack_server
group { 'smaffulli':
ensure => 'present'
}
user { 'smaffulli':
ensure => 'present',
comment => 'Stefano Maffulli',
home => $operatingsystem ? {
Darwin => '/Users/smaffulli',
solaris => '/export/home/smaffulli',
default => '/home/smaffulli',
},
shell => '/bin/bash',
gid => 'smaffulli',
groups => ['wheel','sudo','admin'],
membership => 'minimum',
}
file { 'smaffullihome':
name => $operatingsystem ? {
Darwin => '/Users/smaffulli',
solaris => '/export/home/smaffulli',
default => '/home/smaffulli',
},
owner => 'smaffulli',
group => 'smaffulli',
mode => 644,
ensure => 'directory',
}
file { 'smaffullisshdir':
name => $operatingsystem ? {
Darwin => '/Users/smaffulli/.ssh',
solaris => '/export/home/smaffulli/.ssh',
default => '/home/smaffulli/.ssh',
},
owner => 'smaffulli',
group => 'smaffulli',
mode => 700,
ensure => 'directory',
require => File['smaffullihome'],
}
file { 'smaffullikeys':
name => $operatingsystem ? {
Darwin => '/Users/smaffulli/.ssh/authorized_keys',
solaris => '/export/home/smaffulli/.ssh/authorized_keys',
default => '/home/smaffulli/.ssh/authorized_keys',
},
owner => 'smaffulli',
group => 'smaffulli',
mode => 640,
content => "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDD/zAvXaOUXCAT6/B4sCMu/38d/PyOIg/tYsYFAMgfDUzuZwkjZWNGrTpp/HFrOAZISER5KmOg48DKPvm91AeZOHfAXHCP6x9/FcogP9rmc48ym1B5XyIc78QVQjgN6JMSlEZsl0GWzFhQsPDjXundflY07TZfSC1IhpG9UgzamEVFcRjmNztnBuvq2uYVGpdI+ghmqFw9kfvSXJvUbj/F7Pco5XyJBx2e+gofe+X/UNee75xgoU/FyE2a6dSSc4uP4oUBvxDNU3gIsUKrSCmV8NuVQvMB8C9gXYR+JqtcvUSS9DdUAA8StP65woVsvuU+lqb+HVAe71JotDfOBd6f stefano@mattone-E6420\n",
ensure => 'present',
require => File['smaffullisshdir'],
}
file { 'smaffullibashrc':
name => $operatingsystem ? {
Darwin => '/Users/smaffulli/.bashrc',
solaris => '/export/home/smaffulli/.bashrc',
default => '/home/smaffulli/.bashrc',
},
owner => 'smaffulli',
group => 'smaffulli',
mode => 640,
source => "/etc/skel/.bashrc",
replace => 'false',
ensure => 'present',
}
file { 'smaffullibash_logout':
name => $operatingsystem ? {
Darwin => '/Users/smaffulli/.bash_logout',
solaris => '/export/home/smaffulli/.bash_logout',
default => '/home/smaffulli/.bash_logout',
},
source => "/etc/skel/.bash_logout",
owner => 'smaffulli',
group => 'smaffulli',
mode => 640,
replace => 'false',
ensure => 'present',
}
file { 'smaffulliprofile':
name => $operatingsystem ? {
Darwin => '/Users/smaffulli/.profile',
solaris => '/export/home/smaffulli/.profile',
default => '/home/smaffulli/.profile',
},
source => "/etc/skel/.profile",
owner => 'smaffulli',
group => 'smaffulli',
mode => 640,
replace => 'false',
ensure => 'present',
}
file { 'smaffullibazaardir':
name => $operatingsystem ? {
Darwin => '/Users/smaffulli/.bazaar',
solaris => '/export/home/smaffulli/.bazaar',
default => '/home/smaffulli/.bazaar',
},
owner => 'smaffulli',
group => 'smaffulli',
mode => 755,
ensure => 'directory',
require => File['smaffullihome'],
}
file { 'smaffullibazaarauth':
name => $operatingsystem ? {
Darwin => '/Users/smaffulli/.bazaar/authentication.conf',
solaris => '/export/home/smaffulli/.bazaar/authentication.conf',
default => '/home/smaffulli/.bazaar/authentication.conf',
},
owner => 'smaffulli',
group => 'smaffulli',
mode => 640,
content => "[Launchpad]\nhost = .launchpad.net\nscheme = ssh\nuser = smaffulli\n",
ensure => 'present',
require => File['smaffullibazaardir'],
}
realize (
User::Virtual::Localuser["smaffulli"],
)
}
node "docs.openstack.org" {
@ -420,135 +300,6 @@ node /^swift(-\d+)?\.slave\.openstack\.org$/ {
node /^driver(\d+)\.1918\.openstack\.org$/ {
include openstack_jenkins_slave
group { 'termie':
ensure => 'present'
}
user { 'termie':
ensure => 'present',
comment => 'Andy Smith',
home => $operatingsystem ? {
Darwin => '/Users/termie',
solaris => '/export/home/termie',
default => '/home/termie',
},
shell => '/bin/bash',
gid => 'termie',
groups => ['wheel','sudo','admin'],
membership => 'minimum',
}
file { 'termiehome':
name => $operatingsystem ? {
Darwin => '/Users/termie',
solaris => '/export/home/termie',
default => '/home/termie',
},
owner => 'termie',
group => 'termie',
mode => 644,
ensure => 'directory',
}
file { 'termiesshdir':
name => $operatingsystem ? {
Darwin => '/Users/termie/.ssh',
solaris => '/export/home/termie/.ssh',
default => '/home/termie/.ssh',
},
owner => 'termie',
group => 'termie',
mode => 700,
ensure => 'directory',
require => File['termiehome'],
}
file { 'termiekeys':
name => $operatingsystem ? {
Darwin => '/Users/termie/.ssh/authorized_keys',
solaris => '/export/home/termie/.ssh/authorized_keys',
default => '/home/termie/.ssh/authorized_keys',
},
owner => 'termie',
group => 'termie',
mode => 640,
content => "ssh-dss AAAAB3NzaC1kc3MAAACBANGJLz/WD7MCdw9uT1PPGO/j9ONs9zUIvQXCIyzbMywZdcLRfQMBxbrpumSxmB7H5wri/unSkCg2JGeShoyDyaQN0Vt5gQCDaXSJBZd4UJ1H6NEts6ecwRuVYw09jHPlqR5JcoRcsdrh07K4FdggTrqfdhhzbMRI5H18qLZhlHODAAAAFQDrkqKb7DnTRZfwAdKwkVCkKipfdQAAAIAVgJ01asDYIkMCjqP1GFfger/7aq6m5p9dxDfoMHOk6QKK+xiN9kzQAXkCM/qWUYOzYyq6QkXSGHUprr3CbhqIpiqNV2T95PJ5qelDDSu1I3/G738BcbcoNQKl57IkE6q4ASD7YgQ8s8vB9ZsSgt9jdXkFEf8joPYZS26ztlKbKQAAAIEAwaCNdjISOHzNTDkestFajajLw4rfbpS3xMwojlx+ZUmTuKTmqpTYVwqFRarI1c5OlZT58BLzqB+iiH/lTbOSl+Zg+xJ72DnPxhOhueEi7ll7BsZvurm4ObM7EQ27WI9Pb0JWF+V6lo3+iRHozDmKyxRYGzAR9PpGgjj2VHCuf1I= termie@chester \n",
ensure => 'present',
require => File['termiesshdir'],
}
file { 'termiebashrc':
name => $operatingsystem ? {
Darwin => '/Users/termie/.bashrc',
solaris => '/export/home/termie/.bashrc',
default => '/home/termie/.bashrc',
},
owner => 'termie',
group => 'termie',
mode => 640,
source => "/etc/skel/.bashrc",
replace => 'false',
ensure => 'present',
}
file { 'termiebash_logout':
name => $operatingsystem ? {
Darwin => '/Users/termie/.bash_logout',
solaris => '/export/home/termie/.bash_logout',
default => '/home/termie/.bash_logout',
},
source => "/etc/skel/.bash_logout",
owner => 'termie',
group => 'termie',
mode => 640,
replace => 'false',
ensure => 'present',
}
file { 'termieprofile':
name => $operatingsystem ? {
Darwin => '/Users/termie/.profile',
solaris => '/export/home/termie/.profile',
default => '/home/termie/.profile',
},
source => "/etc/skel/.profile",
owner => 'termie',
group => 'termie',
mode => 640,
replace => 'false',
ensure => 'present',
}
file { 'termiebazaardir':
name => $operatingsystem ? {
Darwin => '/Users/termie/.bazaar',
solaris => '/export/home/termie/.bazaar',
default => '/home/termie/.bazaar',
},
owner => 'termie',
group => 'termie',
mode => 755,
ensure => 'directory',
require => File['termiehome'],
}
file { 'termiebazaarauth':
name => $operatingsystem ? {
Darwin => '/Users/termie/.bazaar/authentication.conf',
solaris => '/export/home/termie/.bazaar/authentication.conf',
default => '/home/termie/.bazaar/authentication.conf',
},
owner => 'termie',
group => 'termie',
mode => 640,
content => "[Launchpad]\nhost = .launchpad.net\nscheme = ssh\nuser = termie\n",
ensure => 'present',
require => File['termiebazaardir'],
}
}
node /^debuild(-\d+)?\.slave\.openstack\.org$/ {

23
manifests/users.pp Normal file
View File

@ -0,0 +1,23 @@
class openstack_project::users {
include user::virtual
@user::virtual::localuser { 'mordred':
realname => 'Monty Taylor',
sshkeys => 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAr+HlnLCCMnAqP6bvAQmb6aMfNjwp425OuG9nlN6uXXEymP5G/WT/Ok2RWb+O1hsaRGsvwHrkCdhCvT0XrDIWRCK3vaQ/v0LogeRbX5HIdOrH6r5N++DV9SqVTFZ6+54CfOE/pyku6pkBdoM8WJ9EIQBQC82EE6mgtpS/UNdiymsoB+2I8yNwUROm/AROCjqN60PI/2j234qYYaUXoD/FM3ZE/cfUoTTi0NAbt5OM5pCHPfaWhWCYtQ4l2CnEXXhKU9TcoQVoTu54IBAmblgD2LeJnOsKQtVcd5rgGzl/OtkL1ZvWCq23LHMeOC2WANgWIyxp4x66m51uErbgnTwOkQ== monty@sanction\nssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwgRJ+iQMzive6pq8f/F4N0CN0+SptI5l+yj10Rx3i80Zh4a3ERratuIsEmuyyeBU/l+dmR074Jic/42rYnQJBEKT5bvGLhiftcSUu630NZgAFnP5e4TbpHlYJzXDxOOctAHyd8TH5iQftWeNi5NIYAwfYpO6a4/GE1InMcyqW+icyDxyt3rwDN0qzLHcVFdCgWPsbEuJuqweH/qsen78LNWPro+ynk6dnsSKhe8dWkhYjPhAEjbsL13VezksHNbk2aa/yvppCCgdLdvniaQDKr+F0/X5Xp1teL8L7Rr9Ei+I3l6Ge4I3KY0s8TM+6TpAp4GGvdKakOBeoSAP5wYjrw== root@camelot \n\nssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyxfIpVCvZyM8BIy7r7WOSIG6Scxq4afean1Pc/bej5ZWHXCu1QnhGbI7rW3sWciEhi375ILejfODl2TkBpfdJe/DL205lLkTxAa+FUqcZ5Ymwe+jBgCH5XayzyhRPFFLn07IfA/BDAjGPqFLvq6dCEHVNJIui6oEW7OUf6a3376YF55r9bw/8Ct00F9N7zrISeSSeZXbNR+dEqcsBEKBqvZGcLtM4jzDzNXw1ITPPMGaoEIIszLpkkJcy8u/13GIrbAwNrB2wjl6Mzj+N9nTsB4rFtxRXp31ZbytCH5G9CL/mFard7yi8NLVEJPZJvAifNVhooxGN06uAiTFE8EsuQ== mtaylor@qualinost \n\nssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIB6bmpw3QjDUMDhYGiSA1tlolTrGQGcSXgfGindWnDymGE5uglpgsGbYeRqL+4lrULCDYvMJ9IGSVJOQ40VcnRcGHO+ykyUp3VNTnfwpU0Ee3xapmKL0o7sPqXx8Vlr0X2b7RaQbUYT48jyI9D1h5RW8At2X4N4A4d1HibfURTzgQ== rsa-key-20100819\nssh-dsa AAAAB3NzaC1kc3MAAACBAKwcqWzaNSScs5Hu7cLUs/xdvw09zbphWzSdB0UNs9rQG3ctkWjbaK+WKsXOpd/gxyWPY4fti1uhK5xFyaaLMOIrf+EhFnnKtJ+Z3pCE/uwRROE/Y74bWHXRZRZ5hB150sFmEYet09ZHPD/lVjtBF9zJcvlWh5CIh7xUviHqp3b/AAAAFQDypk12Poey0L35PgngF6g042NAbwAAAIACd/P1epZQXmtIWXkkFWhp4rQTSqz6YV/FpWCHM8bk7qr+4owhHrFkwS1cSPQyyTnCfNM5lorqJ2chjk1AeGr8OMo9GoUxLNSe0CtcCHjT6b2mfkWnqkSi//KwUq3oNUhkl9xZJls7kT0w6F+CncpPEMYseOb8h5UpZ2xVmAgZmwAAAIBYoLiugqeo39qUZQ0a7vQ3ydlmJ/EJzv1rjWRJ79or01wfkpb+jgBeiTHPeuCw2WTEBpKYkU4U8x5tUHb+kdN6TrABcvbn/kfgsoMZeb1rPaiDDM+93prkSI7hS2FKYDv6TIBsT4StmY/BZHfhTwjQUcW+yYJv7vlM9LeIlA4IEw== monty@speedy\nssh-dsa AAAAB3NzaC1kc3MAAACBAN2I6q4yjydSwEnhf45GPBDvj/MUjPBlTj3Buf+xunUtfdXSIpTDvasTVibEKhNrNkr0zkIe8hE5uOM3pHeSLRx9Tj8Txjn5RN3xsKhkqhS/j/GCPiDWRQnpfHPWHK7NxEMwbMv7Rato8YubVmSq9UodXSWytcSXZCTtQVZJvDMjAAAAFQCA+aVTTD9XcC7A575rcu0j75f2HwAAAIA8tdrsQoNV1AMde6r0iE8T8wkw9T9cA9bwK8sbIR3S81FG805bMdVanBfDBwfOTM/rbuGQoH4F8oqURor7njwARh5BLTFrpqSqSw6vTm30TJnRDUS7qrDG0xrzqk+RF5AXHHJ4MJKbjpUc2C3MHOo+rybjE1rJh9OWr9xG3oRroAAAAIAyN2Btf9fCJh2MhqPrtVCfSUzcE7qz/7XludszUwrWElsTfqXtSfRqiQybXSImVPz9DE+ZufOHGLMGolEi+ALRgLp4L7JDBld+Gga64HnAbg/jmDKN97CyFrRbmVbln/oFQFmDhLchGnERhRKQWOWwXKdOrDgGvDwHORsCffUVLw== mtaylor@qualinost \n\nssh-dsa AAAAB3NzaC1kc3MAAACBAN2I6q4yjydSwEnhf45GPBDvj/MUjPBlTj3Buf+xunUtfdXSIpTDvasTVibEKhNrNkr0zkIe8hE5uOM3pHeSLRx9Tj8Txjn5RN3xsKhkqhS/j/GCPiDWRQnpfHPWHK7NxEMwbMv7Rato8YubVmSq9UodXSWytcSXZCTtQVZJvDMjAAAAFQCA+aVTTD9XcC7A575rcu0j75f2HwAAAIA8tdrsQoNV1AMde6r0iE8T8wkw9T9cA9bwK8sbIR3S81FG805bMdVanBfDBwfOTM/rbuGQoH4F8oqURor7njwARh5BLTFrpqSqSw6vTm30TJnRDUS7qrDG0xrzqk+RF5AXHHJ4MJKbjpUc2C3MHOo+rybjE1rJh9OWr9xG3oRroAAAAIAyN2Btf9fCJh2MhqPrtVCfSUzcE7qz/7XludszUwrWElsTfqXtSfRqiQybXSImVPz9DE+ZufOHGLMGolEi+ALRgLp4L7JDBld+Gga64HnAbg/jmDKN97CyFrRbmVbln/oFQFmDhLchGnERhRKQWOWwXKdOrDgGvDwHORsCffUVLw== mtaylor@qualinost \n',
}
@user::virtual::localuser { 'corvus':
realname => 'James E. Blair',
sshkeys => 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvKYcWK1T7e3PKSFiqb03EYktnoxVASpPoq2rJw2JvhsP0JfS+lKrPzpUQv7L4JCuQMsPNtZ8LnwVEft39k58Kh8XMebSfaqPYAZS5zCNvQUQIhP9myOevBZf4CDeG+gmssqRFcWEwIllfDuIzKBQGVbomR+Y5QuW0HczIbkoOYI6iyf2jB6xg+bmzR2HViofNrSa62CYmHS6dO04Z95J27w6jGWpEOTBjEQvnb9sdBc4EzaBVmxCpa2EilB1u0th7/DvuH0yP4T+X8G8UjW1gZCTOVw06fqlBCST4KjdWw1F/AuOCT7048klbf4H+mCTaEcPzzu3Fkv8ckMWtS/Z9Q== jeblair@operational-necessity \n',
}
@user::virtual::localuser { 'soren':
realname => 'Soren Hansen',
sshkeys => 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7bpJJzvwa4KKzxk9fyegkCUKKOA1gttDJdB+E2mllxcDkScYRYoFnwiq0kl1BwkNFRXj10pguhI/7O3escSvF3Di2Lw4haHR8my6yaz7jFlBbBw8+6j5RbIRnTORS5G4mH4LtAxToGomfJd9gxWpVMiqLa4V7Hg8K6CYRSSUOWzqs7Y/Hv13ASr8ZbaweB1ygVE8kbKuW2ILcqRrKYKaQDeh+aPqLsXDNhT2k2WLsTIqMTSKy70sHqyCjD2joRVBuTiqt1uaQqYCJWT8vuDvXsF0Lmi4tMjRF7GOuOKd0QsT5y8C8dLHWDfeBNQJv46dZE6UUHOfhucTM4w73zpXaw== soren@butch\nssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA8YfXbgi0uNZEpOxLvzPdGgo5dAAjqVUGf+kU1bvxcZf3y7a2veDXOOnez4VGl6OC1bgeENW/5O2hKi0wUG3XMWp8uLVSupI6A8o+cBCu7MYzChMdgullBEh7Bz4cbvoMmQiWOZPPsZLTTrl7E6SJJ5jTTn8IsSkCp21m2Sr4b5SWj+Nw43NVtGYFtBBG/OoixlxcNutiSn7YjOH6CAVOhKpTNddwqECKBfxCdS2kYrMzJw8/QhA9FwJHoFt3PevuC4I/9ARlyZCsbOY+ENc2NtFXNVnF5m6tE/eDZFTt652pNPlldWAaVBzKDZ4CUi4HS3WDxGcVqhtaNawIV6sR8w== soren@intel \n\nssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyAtAccJ8ndh6wzq3vY1izHTdPh3kAKtjBK6P390ClIRBA3CfjKS6KaKSeGs1xZ4WZhOk9oz4d/+Ep7iOXLpUnYYjHm5bLD8o6jKAhKohoABzCyj3ONPNxvxvsvdahSPLONC6H1PlbhvTbn9UwEtZ//migJTATdLQEjXHaNhNJ8UZz9XtCf1Qv4YiYmyRId6h5N+OPNU4OmqlCZyanBXKN5jK1Kubq6SseY++74Y54ZPXVccGmJDTOfNBfM1nR0+f2Mq2iHR0a3PuJcGXFx/P4mIA0Knyh98W6esB9fG7/JVID2bGpJ6c91+AkL9fmwOpfWrk7rr13+iGiH2RTcmd0w== soren@lenny \n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCGTnV3tEMvry4UruD6I23TW3L616ML8p15kdj4TYlcBUZvUDzPoT+QjinNw7Pm1C4dJk3xJJtvxshKSXF08QF88kWgtF6jSpp1ZwmDXKNnPRLAIT5pewubFHd5iwMFf371P2/kxIm37iAo45puTO0CL39dAKkw6L/F7M3ycFUgsIkik6oN9bX1X3Yu3e/Lv2hJ1LGN7K2nnQmLd9aFulpruM7iPtFt8qJ82ofJq2LGH931QsP1QonvJxonajo9wrEAfXTFENDwcoOD0Py+KXOddqb/1SJxbLwclDmHMX5bKA5K+R6GzzpDUEsDZYa1xhJpmOmlaBTxFGoQg/wtHUNf cardno:000500000063',
}
@user::virtual::localuser { 'smaffulli':
realname => 'Stefano Maffulli',
sshkeys => 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDD/zAvXaOUXCAT6/B4sCMu/38d/PyOIg/tYsYFAMgfDUzuZwkjZWNGrTpp/HFrOAZISER5KmOg48DKPvm91AeZOHfAXHCP6x9/FcogP9rmc48ym1B5XyIc78QVQjgN6JMSlEZsl0GWzFhQsPDjXundflY07TZfSC1IhpG9UgzamEVFcRjmNztnBuvq2uYVGpdI+ghmqFw9kfvSXJvUbj/F7Pco5XyJBx2e+gofe+X/UNee75xgoU/FyE2a6dSSc4uP4oUBvxDNU3gIsUKrSCmV8NuVQvMB8C9gXYR+JqtcvUSS9DdUAA8StP65woVsvuU+lqb+HVAe71JotDfOBd6f stefano@mattone-E6420\n',
}
}

View File

View File

@ -0,0 +1,38 @@
class user::virtual {
define localuser ($realname,$sshkeys='',$shell="/bin/bash") {
group { $title:
ensure => 'present'
}
user { $title:
ensure => "present",
comment => $realname,
home => "/home/$title",
shell => $shell,
gid => $title,
groups => ['wheel','sudo','admin'],
membership => 'minimum',
managehome => true, # creates the home directory (does not actually manage it)
require => Group[$title],
}
file { "${title}_sshdir":
name => "/home/$title/.ssh",
owner => $title,
group => $title,
mode => 700,
ensure => 'directory',
require => User[$title],
}
file { "${title}_keys":
name => "/home/$title/.ssh/authorized_keys",
owner => $title,
group => $title,
mode => 400,
content => $sshkeys,
ensure => 'present',
require => File["${title}_sshdir"],
}
}
}