ruslan usifov
unread,Sep 1, 2011, 6:33:02 AM9/1/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to puppet...@googlegroups.com
Hello
I just start to learn puppet. And have follow question. How
is it possible to override params in define. For example i have follow
definition for manage devel users:
define users::devel
{
$l_shell_path = $operatingsystem ? {
"freebsd" => "/bin/csh",
"ubuntu" => "/bin/bash"
}
$l_sudo_pkg = $operatingsystem ? {
"freebsd" => "security/sudo",
"ubuntu" => "sudo"
}
$l_etc_path = $operatingsystem ? {
"freebsd" => "/usr/local/etc/",
"ubuntu" => "/etc/"
}
if !defined(Package["$l_sudo_pkg"])
{
package
{
"$l_sudo_pkg":
ensure => present
}
}
if !defined(File["${l_etc_path}sudoers.d/devel"])
{
file
{
"${l_etc_path}sudoers.d/devel":
source => "puppet:///modules/users/devel.sudoers.dist",
mode => 0440,
require => Package["$l_sudo_pkg"];
}
}
if !defined(Group["devel"])
{
group
{
"devel":
ensure => present;
}
}
if !defined(Users::User_homedir["$name"])
{
users::user_homedir
{
"$name" :
groups => ["devel"],
ensure => "present"
}
}
else
{
Users::User_homedir["$name"]
{
groups => ["devel"],
ensure => "present"
}
}
if !defined(File["/home/$name/bin"])
{
file
{
"/home/$name/bin":
ensure => directory;
"/home/$name/bin/www":
content => template("users/www.dist.erb"),
mode => 0555;
}
}
}
And follow definition for remove users:
define users::remove
{
if !defined(Users::User_homedir["$name"])
{
users::user_homedir
{
"$name" :
ensure => absent;
}
}
else
{
Users::User_homedir["$name"]
{
ensure => absent
}
}
}
And want to do folow:
node lwd_basenode inherits monitored_node
{
include users::root
include users::www
include freebsd7
users::admin
{
['ruslan', 'misha']:;
}
users::devel
{
['vlad', 'sergeym']:;
}
users::remove
{
['ilyash', 'anton', 'georgiysh']:;
}
}
node "lwd012.some.root.domain" inherits lwd_basenode
{
include zabbix::nginx
include zabbix::mysql_replication
include zabbix::mysql
class
{
"zabbix::memcached":
memcachedaddr => "192.168.0.92 11211";
}
users::devel
{
'anton':;
}
}
so
I have one base node from which all other inherits, where user anton is
removed. And have one node(lwd012.some.root.domain) which redefines
behavior of user anton (on that node this user must be present), But if
i do so i got follow error:
err: Could not retrieve catalog from
remote server: Error 400 on SERVER: Only subclasses can override
parameters at /etc/puppet/modules/users/manifests/devel.pp:62
How can i solve this?