Principalmente como exercício de aprendizado, estou tentando usar define para criar usuários. Não há erros, mas o usuário não é criado. Adicionando chamadas para notificar me faz suspeitar que o problema é a ordem de execução (mas também pode ser meu newbness em outro lugar). Estou usando o Puppet 2.7.9.
Aqui está o meu código.
# manifests/nodes.pp
node /song.*/ {
include users
User <| group == developers |>
}
# modules/users/manifests/init.pp
class users {
include users::people
}
# modules/users/manifests/people.pp
class users::people {
require groups
@users::account { "michael":
username => "michael",
name => "Michael C. Harris",
uid => 1000,
gid => "developers",
password => '{encrypted password}',
groups => [ "wheel" ],
}
}
# modules/groups/manifests/init.pp
class groups {
Group { ensure => present }
group { "wheel":
gid => 10;
}
group { "developers":
gid => 1001;
}
}
# modules/users/manifests/account.pp
define users::account($ensure=present, managehome='true', allowdupe='false', homeprefix='/home', $username, $name, $password, $uid, $gid, $groups=[], $key='', $keytype='ssh-rsa', shell='/bin/zsh') {
File { owner => $username, group => $username, mode => '0600' }
$home = "${homeprefix}/${username}"
user { $username:
ensure => $ensure,
uid => $uid,
gid => $gid,
password => $password,
comment => "$name",
groups => $groups,
shell => "$shell",
home => $home,
require => Group["$gid"],
allowdupe => $allowdupe,
managehome => $managehome;
}
file { "$home":
ensure => directory
}
if $key {
file { "$home/.ssh":
ensure => directory;
}
ssh_authorized_key { "$username":
user => $username,
require => File["$home/.ssh"],
key => $key,
type => $keytype,
ensure => present;
}
}
}
Se este é um problema de dependência, qual é a melhor maneira de especificar dependências? Ou estou fazendo outra coisa errada? O feedback geral também seria apreciado.