redefine define parameters

37 views
Skip to first unread message

ruslan usifov

unread,
Sep 1, 2011, 6:33:02 AM9/1/11
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?
Reply all
Reply to author
Forward
0 new messages