import '*'
class accounts {
include users, groups
define admin (
$cell_number,
$cell_provider,
$comment = "$name",
$ensure_d = "present",
$gid,
$sshpubkey,
$sshpubkey_comment,
$uid
) {
$ensure = extlookup("user_${name}", "$ensure_d")
$username = $name
@@nagios_contact {
"$sshpubkey_comment":
alias => "$comment",
contact_name => "$name",
email => "${cell_number}@${cell_provider}",
ensure => "$ensure",
host_notification_commands => "notify-host-by-email",
host_notification_options => "d,r",
host_notification_period => "24x7",
notify => Exec["nagios-reload"],
require => File["/etc/nagios3/nagios.puppet.d/contacts.cfg"],
service_notification_commands => "notify-service-by-email",
service_notification_options => "w,c,r",
service_notification_period => "24x7",
target => "/etc/nagios3/nagios.puppet.d/contacts.cfg",
}
file {
"/home/$username/.bashrc":
group => "$username",
mode => "640",
owner => "$username",
path => $kernel ? {
Linux => "/home/$username/.bashrc",
OpenBSD => "/home/$username/.profile"
},
require => User["$username"],
source => "puppet://$server/accounts/$username.bashrc";
[ "/home/$username/working", "/home/$username/scratch",
"/home/$username/img", "/home/$username/rrd" ]:
ensure => "directory",
group => "$username",
mode => "640",
owner => "$username",
require => User["$username"];
}
group {
"$username":
ensure => "$ensure",
gid => "$gid",
}
ssh_authorized_key {
"${sshpubkey_comment}":
ensure => "$ensure",
key => "$sshpubkey",
require => User["$username"],
target => "/home/${username}/.ssh/authorized_keys2",
type => "rsa",
user => "$username",
}
user {
"$username":
comment => "$comment",
ensure => "$ensure",
gid => "$gid",
groups => "infrastructure",
home => "/home/$username",
managehome => "true",
password => "*",
require => [ Group["$username"], Group["infrastructure"] ],
shell => $kernel ? {
Linux => "/bin/bash",
OpenBSD => "/usr/local/bin/bash"
},
uid => "$uid",
}
}
define ssh_user (
$comment = "User",
$ensure_d = "present",
$gid,
$groups = "ssh_users",
$shell = "/bin/bash",
$sshpubkey,
$sshpubkey_comment,
$uid
) {
$ensure = extlookup("user_${name}", "$ensure_d")
$username = $name
group {
"$username":
ensure => "$ensure",
gid => "$gid",
}
ssh_authorized_key {
"${sshpubkey_comment}":
ensure => "$ensure",
key => "$sshpubkey",
require => User["$username"],
target => "/home/${username}/.ssh/authorized_keys2",
type => "rsa",
user => "$username",
}
user {
"$username":
ensure => "$ensure",
uid => "$uid",
gid => "$gid",
comment => "$comment",
home => "/home/$username",
shell => "$shell",
groups => "$groups",
password => "*",
managehome => "true",
require => [ Group["$username"], Group["ssh_users"] ]
}
}
}