Re: [Puppet Users] Overriding parametrised class parameter

96 views
Skip to first unread message

Martin Alfke

unread,
Jul 18, 2012, 11:59:35 AM7/18/12
to puppet...@googlegroups.com
Hi,

I assume that this is related to node inheritance and variable scoping:


- Martin

On 18.07.2012, at 15:32, Rik Theys wrote:

Hi,

I have a parametrised class to manage /etc/security/access.conf that accepts an "entries" parameter.
I've included this class in a generic node definition:

node common-node {
  class{'pam_access':
    entries => ["+ : ALL : ALL"],
  }
}

My real nodes inherit this node definition:

node 'test01' inherits common-node {
}

How can I override this class parameter in the test01 node? I've tried setting

Class['pam_access'] {
  entries => ["- : idiot : ALL" ],
}

But it doesn't seem to have any effect. The initial settings remain active and no error is logged.

How can I do this type of change with parametrised classes?

Regards,

Rik




--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/Ju3_jRhGh78J.
To post to this group, send email to puppet...@googlegroups.com.
To unsubscribe from this group, send email to puppet-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.

Fred Gansevles

unread,
Jul 20, 2012, 7:38:17 AM7/20/12
to puppet...@googlegroups.com
Hi,

I had the same problem, i.e. overriding parameters with (seemingly) no effect

After some digging, I found that the parameters are set, since the changes are reflected in the compiled catalog
but the Puppet::Parser::Scope::lookupvar method didn't look in the right place.

I've made a patch that makes lookupvar take resource parameters into account

In my case, everything else kept working but I don't know if this patch affects other pars of puppet

Maybe others are also interested in this patch (puppetlabs?)

It is against puppet-2.7.16 and patches puppet/parser/scope.rb

Fred.

Op woensdag 18 juli 2012 15:32:10 UTC+2 schreef Rik Theys het volgende:
Hi,

I have a parametrised class to manage /etc/security/access.conf that accepts an "entries" parameter.
I've included this class in a generic node definition:

node common-node {
  class{'pam_access':
    entries => ["+ : ALL : ALL"],
  }
}

My real nodes inherit this node definition:

node 'test01' inherits common-node {
}

How can I override this class parameter in the test01 node? I've tried setting

Class['pam_access'] {
  entries => ["- : idiot : ALL" ],
}

But it doesn't seem to have any effect. The initial settings remain active and no error is logged.

How can I do this type of change with parametrised classes?

Regards,

Rik




Op woensdag 18 juli 2012 15:32:10 UTC+2 schreef Rik Theys het volgende:
Hi,

I have a parametrised class to manage /etc/security/access.conf that accepts an "entries" parameter.
I've included this class in a generic node definition:

node common-node {
  class{'pam_access':
    entries => ["+ : ALL : ALL"],
  }
}

My real nodes inherit this node definition:

node 'test01' inherits common-node {
}

How can I override this class parameter in the test01 node? I've tried setting

Class['pam_access'] {
  entries => ["- : idiot : ALL" ],
}

But it doesn't seem to have any effect. The initial settings remain active and no error is logged.

How can I do this type of change with parametrised classes?

Regards,

Rik




Op woensdag 18 juli 2012 15:32:10 UTC+2 schreef Rik Theys het volgende:
Hi,

I have a parametrised class to manage /etc/security/access.conf that accepts an "entries" parameter.
I've included this class in a generic node definition:

node common-node {
  class{'pam_access':
    entries => ["+ : ALL : ALL"],
  }
}

My real nodes inherit this node definition:

node 'test01' inherits common-node {
}

How can I override this class parameter in the test01 node? I've tried setting

Class['pam_access'] {
  entries => ["- : idiot : ALL" ],
}

But it doesn't seem to have any effect. The initial settings remain active and no error is logged.

How can I do this type of change with parametrised classes?

Regards,

Rik




Op woensdag 18 juli 2012 15:32:10 UTC+2 schreef Rik Theys het volgende:
Hi,

I have a parametrised class to manage /etc/security/access.conf that accepts an "entries" parameter.
I've included this class in a generic node definition:

node common-node {
  class{'pam_access':
    entries => ["+ : ALL : ALL"],
  }
}

My real nodes inherit this node definition:

node 'test01' inherits common-node {
}

How can I override this class parameter in the test01 node? I've tried setting

Class['pam_access'] {
  entries => ["- : idiot : ALL" ],
}

But it doesn't seem to have any effect. The initial settings remain active and no error is logged.

How can I do this type of change with parametrised classes?

Regards,

Rik




Op woensdag 18 juli 2012 15:32:10 UTC+2 schreef Rik Theys het volgende:

Felix Frank

unread,
Jul 20, 2012, 7:59:23 AM7/20/12
to puppet...@googlegroups.com
On 07/20/2012 12:48 PM, Fred Gansevles wrote:
> Hi,
>
> I ran into the same problem, i.e. overriding a class parameter with
> (apparently) no effect
> After some digging, I found that there was an effect, the change was
> reflected in the compiled catalog
> but somehow the Puppet::Parser::Scope::lookupvar method ignored this
>
> I made a patch for puppet/parser/scope.rb (against puppet-2.7.16) that
> makes lookupvar look in the right place
>
> I don't know what effect this patch has on other parts of puppet, and if
> other people (puppetlabs?) are interested in this patch,
> but in my case everything kept working
>
> Fred.

Fascinating!

From all I had gathered since class parameters are available, overriding
them was not at all possible. It will be interesting to hear a
developer's comments on your approach.

I believe there are possible problems, but knowing there's a fix for the
bigger problem is great.

Thanks for sharing.

polaris_s0i

unread,
Dec 14, 2012, 1:07:27 PM12/14/12
to puppet...@googlegroups.com
Do you know if this was ever fixed in a later version of puppet?
If not, is there a bug filed with puppetlabs for this?
Reply all
Reply to author
Forward
0 new messages