Hi Wolf,
At the top of the hierarchy, yes (the hash merge is done top to bottom,
where the top is the highest of the hierarchy, see mine below). I have
this in place already and you're right it will work elegantly, however
it moves the 'decision' of what to do into Hiera and you have to "know"
that certain nodes require certain vm.swappiness
values depending on what hardware they are on:
---
:backends: - json
:hierarchy: - %{fqdn}
- %{lmax_role}_role
- %{lmax_env}_server
- %{pop}.tradefair
- common
:json:
:datadir: - /etc/puppet/private/
- /etc/puppet/environments/%{environment}/hiera_data_store/
- /etc/puppet/environments/%{environment}/rebirth_data_store/
-
/etc/puppet/environments/%{environment}/satellite_system_groups/
Thank you for everyone else who replied too. Re Gary, I already use a
slightly modified version of puppetlabs-sysctl's custom type and
provider, so I can define individual sysctl lines as well as with
create_resources, it's the combination of the two I've got problems
with. My next crazy idea is to try wrap them all in a class and use
inline_template to dynamically generate class names - I hope I can
override classes that are created with create_resources if resources
cannot be - but that could get very messy very quickly, I'll let you
know how I go.
Thanks,
-Luke
On 14/05/12 19:44, Wolf Noble wrote:
Hi Luke,
Would adding fqdn to the bottom of your hierarchy give you the ability to
override the values on the outliers that you can't automagically set while
retaining elegance in your class? Or am I missing something?
Wolf Noble
Datapipe Managed IT Services
On May 11, 2012, at 12:45 PM, Jeff wrote:
I have a similar issue with Hiera when decisions depend on more than facts
alone... thus exluded from the hierarchy.
In example, the hostname can tell a node is a database server (fact: role) but
only a custom group will tell it should run Oracle 10g or 11g (product) and the
proper sysctl to apply specifically. I can't build a fact about something that
ain't installed yet and I don't want a local file to define group membership
(giving up control). The node to group membership has to be in a CMDB
somewhere.
So far I think using an ENC with Hiera at the same time is the solution to
cover all cases.... unless you guys know of a better way.
jean
On Friday, 11 May 2012 13:19:33 UTC-4, Gary Larizza wrote:
I see (and I saw your post on create_resources - I tested it out and also
noticed that inheritance didn't work as expected for me either). My initial
thought would be to try and break down the individual sysctl entries as
individual resources that could be declared with a defined type (as Aaron
mentioned) - then you can use hiera to declare them with create_resources() AS
WELL as individually declaring additional resources.
On Fri, May 11, 2012 at 9:47 AM, Luke
Bigum<[email protected]<mailto:[email protected]>> wrote:
Hi Gary,
Not quite... Let me go into more detail.
I'm trying to handle sysctl "perfectly" which is probably my real problem. Hiera's
ability to merge hashes together makes it perfect for arriving at one set of sysctl options for a
server based on "business logic" (my hierarchy). For Hiera data on 'someserver' below
which has 'some_role', calling hiera_hash in a Puppet manifest will give me IP forwarding set and
rp_filter set, which is what I want:
--------- some_role.json ------------
{
"sysctl" : {
"net.ipv4.ip_forward" : {
"comment" : "Controls IP packet forwarding",
"value" : "1"
}
}
--------------------------------------------
--------- common.json ----------
{
"sysctl" : {
"net.ipv4.ip_forward" : {
"comment" : "Controls IP packet forwarding",
"value" : "0"
},
"net.ipv4.conf.default.rp_filter" : {
"comment" : "Controls source route verification",
"value" : "1"
}
...
...
}
-------------------------------------
Where it becomes difficult is trying to then incorporate pure Fact data to
influence or modify these decisions.
Lets say that I actually get back 20 keys of sysctl data, one of those is
'vm.swappiness'. Most of my nodes have a value of '10', but lets say
hypothetically that I have a small set of nodes that require a different value
because of the amount of RAM available in the machine (a decision needs to be
made based on hardware, not business logic). This is purely a Fact. Introducing
another level of hierarchy for Fact 'memorytotal' is a bit silly in this case.
The sysctl class looks roughly like this:
------- sysctl.pp ----------
class sysctl {
$sysctl_hash = hiera_hash('sysctl')
create_resources('sysctl', $sysctl_hash)
}
------------------------------
I love that simplicity, however it's difficult to introduce edge cases that modify the
data retrieved from Hiera based on Facts. Class inheritance won't work because
create_resources() seems to insert into the catalog in an uninheritable way - bug report
or fixable with Ruby DSL perhaps? Filling this class full of "if ($fact) modify
hash" to munge the data pulled from Hiera seems dirty too.
There may be no elegant solution and as you say, 80-90% may have to do.
-Luke
On 11/05/12 16:53, Gary Larizza wrote:
I see this with people looking to move to the hierarchical system that Hiera brings. It essentially boils down to
"How do I do this without having a ton of hierarchy levels?". Usually we tend to recommend using the
hierarchy to hit the 80% mark for the data you need in your modules. Anything that's module-specific-data should then
be broken out to a data.pp or params.pp file with conditional logic there. I tend to ask people: "Is this
something others are going to hit when they try to use the module too?", as in - "Are there path differences
between operating systems?", or "Are there important changes to the data between RHEL 5 and 6?". If the
answer to these is yes, then I tend to favor putting that data into a module's data class so that it's exposed for
ANYONE who wants to use the module. Why would you want to hide these differences in the hierarchy - especially if
others might run into them?
Does this sound similar to the problems you're facing? Or is this a case where
you have custom facts that are specific to your organization that determine how
you manage sysctl?
On Fri, May 11, 2012 at 8:42 AM, Luke
Bigum<[email protected]<mailto:[email protected]>> wrote:
Hi all,
I've been improving our sysctl module and come across an interesting design
problem I'd like feedback on.
I approached the re-factor with Hiera in mind - I would put all our sysctl data
in Hiera hash and pull that into a hiera_hash, merging the hierarchy of data
and allowing higher priority sysctl settings to override the baseline defaults.
I then use create_resources to write sysctl.conf. Works great to start with,
but now I come across more and more cases where the sysctl data is dependent on
machine logic (virtual vs physical, types of hardware, etc) that doesn't seem
right to put into Hiera as I'd have a complex hierarchy for a bunch of edge
case Facts.
I seem to need to make decisions on two sources: business logic in Hiera
hierarchy (that's easy with merging hashes) as well as considering what Facts
or Classes applies to a node (machine logic). That's not trivial to do,
especially with a potentially large set of data like sysctl.conf keys.
Does anyone have any thoughts or tips on how they might be managing a similar
situation?
Thanks,
-Luke
--
Luke Bigum
Information Systems
Ph: +44 (0) 20 3192 2520
[email protected]<mailto:[email protected]> |
http://www.lmax.com<http://www.lmax.com/>
LMAX, Yellow Building, 1A Nicholas Road, London W11 4AN
FX and CFDs are leveraged products that can result in losses exceeding
your deposit. They are not suitable for everyone so please ensure you
fully understand the risks involved. The information in this email is not
directed at residents of the United States of America or any other
jurisdiction where trading in CFDs and/or FX is restricted or prohibited
by local laws or regulations.
The information in this email and any attachment is confidential and is
intended only for the named recipient(s). The email may not be disclosed
or used by any person other than the addressee, nor may it be copied in
any way. If you are not the intended recipient please notify the sender
immediately and delete any copies of this message. Any unauthorised
copying, disclosure or distribution of the material in this e-mail is
strictly forbidden.
LMAX operates a multilateral trading facility. Authorised and regulated by the
Financial Services Authority (firm registration number 509778) and
is registered in England and Wales (number 06505809). Our registered address is
Yellow Building, 1A Nicholas Road, London, W11
4AN.
--
You received this message because you are subscribed to the Google Groups "Puppet
Users" group.
To post to this group, send email to
[email protected]<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]<mailto:puppet-users%[email protected]>.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
--
Gary Larizza
Professional Services Engineer
Puppet Labs
--
You received this message because you are subscribed to the Google Groups "Puppet
Users" group.
To post to this group, send email to
[email protected]<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]<mailto:[email protected]>.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
--
Luke Bigum
Information Systems
Ph: +44 (0) 20 3192 2520
[email protected]<mailto:[email protected]> |
http://www.lmax.com<http://www.lmax.com/>
LMAX, Yellow Building, 1A Nicholas Road, London W11 4AN
FX and CFDs are leveraged products that can result in losses exceeding
your deposit. They are not suitable for everyone so please ensure you
fully understand the risks involved. The information in this email is not
directed at residents of the United States of America or any other
jurisdiction where trading in CFDs and/or FX is restricted or prohibited
by local laws or regulations.
The information in this email and any attachment is confidential and is
intended only for the named recipient(s). The email may not be disclosed
or used by any person other than the addressee, nor may it be copied in
any way. If you are not the intended recipient please notify the sender
immediately and delete any copies of this message. Any unauthorised
copying, disclosure or distribution of the material in this e-mail is
strictly forbidden.
LMAX operates a multilateral trading facility. Authorised and regulated
by the Financial Services Authority (firm registration number 509778) and
is registered in England and Wales (number 06505809).
Our registered address is Yellow Building, 1A Nicholas Road, London, W11
4AN.
--
You received this message because you are subscribed to the Google Groups "Puppet
Users" group.
To post to this group, send email to
[email protected]<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]<mailto:puppet-users%[email protected]>.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
--
Gary Larizza
Professional Services Engineer
Puppet Labs
--
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/-/0NSu9kWGZggJ.
To post to this group, send email to
[email protected]<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]<mailto:[email protected]>.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
________________________________
This message may contain confidential or privileged information. If you are not
the intended recipient, please advise us immediately and delete this message.
See http://www.datapipe.com/legal/email_disclaimer/ for further information on
confidentiality and the risks of non-secure electronic communication. If you
cannot access these links, please notify us by reply message and we will send
the contents to you.
--
Luke Bigum
Information Systems
Ph: +44 (0) 20 3192 2520
[email protected] | http://www.lmax.com
LMAX, Yellow Building, 1A Nicholas Road, London W11 4AN
FX and CFDs are leveraged products that can result in losses exceeding
your deposit. They are not suitable for everyone so please ensure you
fully understand the risks involved. The information in this email is not
directed at residents of the United States of America or any other
jurisdiction where trading in CFDs and/or FX is restricted or prohibited
by local laws or regulations.
The information in this email and any attachment is confidential and is
intended only for the named recipient(s). The email may not be disclosed
or used by any person other than the addressee, nor may it be copied in
any way. If you are not the intended recipient please notify the sender
immediately and delete any copies of this message. Any unauthorised
copying, disclosure or distribution of the material in this e-mail is
strictly forbidden.
LMAX operates a multilateral trading facility. Authorised and regulated
by the Financial Services Authority (firm registration number 509778) and
is registered in England and Wales (number 06505809).
Our registered address is Yellow Building, 1A Nicholas Road, London, W11
4AN.
--
You received this message because you are subscribed to the Google Groups "Puppet
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.