--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-dev+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/13559aa4-2760-43dc-a619-26e27630a8b5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi all,I would like to propose a new feature for puppet master: External Environment Locator (EEL)The main objective would be to make locating puppet environment locations more flexible compared to directory environments. Basic functionality would facilitate usage of external program to convert environment name to corresponding path (directory or environment configuration file).
--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-dev+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/56c3e851-b315-48e9-a2f9-ed3e0b2e4c16%40googlegroups.com.
Neat idea. I would consider using this for automatic git-checkout of project branches, rather than preemptively checking out all branches by cron or git-hook.
On 03/11/2015 05:56 PM, Bostjan Skufca wrote:
>
> I would like to hear your opinion about this, and whether this would
> be useful for you.
>
Hi,
I don't believe that such a feature would be useful to a majority of
users, myself included.
I do see two disadvantages to adding this:
1. It adds complexity, of which there is no shortage as far as
environments are concerned, at least that's my gut feeling.
2. It adds configuration options, so there is additional complexity for
the end user as well.
I'm not saying we should remove as many configuration settings and
options as possible, but we shouldn't go overboard with new ways for
users to shoot themselves in the foot.
On Thursday, 12 March 2015 23:31:58 UTC+1, Felix Frank wrote:On 03/11/2015 05:56 PM, Bostjan Skufca wrote:
>
> I would like to hear your opinion about this, and whether this would
> be useful for you.
>
Hi,
I don't believe that such a feature would be useful to a majority of
users, myself included.
I do see two disadvantages to adding this:
1. It adds complexity, of which there is no shortage as far as
environments are concerned, at least that's my gut feeling.I agree up to a point here, but see the rest of the post below.2. It adds configuration options, so there is additional complexity for
the end user as well.I'm not saying we should remove as many configuration settings and
options as possible, but we shouldn't go overboard with new ways for
users to shoot themselves in the foot.For such an occasion I like to say that, yes, doing "rm -rf /" is bad, but as a sysadmin I still want to have this tool available. :)Maybe puppet is becoming complex enough that Puppet Labs should think about classifying configuration settings into two categories: basic and advanced. This one (EEL) would definitely fall into advanced category, and directory environments should be advocated/documented as primary way to create/use environments.Anyway, what I am trying to say is:- puppet should not be holding power users back as a sacrifice for being nice to novices;
- puppet should strike a good balance between both extremes, by means of feature implementation and documentation organisation;
- achieving such a balance is not easy, I admit;
- puppet is a power tool, and irresponsible users that rush into using it, should not stand in the way of progress
b.
The main motivation for my setup is:- if something happens to puppet upgrade and puppet fails to work, I do not want to ssh into nodes to manually fix the problem.- Even "mcollective" is not proper solution here (usable for quickfix, yes), as some nodes might be down and will have to catch up eventuallyTo achieve this, I have two puppets (installed in dedicated separate dirs under /usr/local/puppet-1 and /usr/local/puppet-2). If, for the sake of argument, we forget that puppet-1 manages the whole system except itself, you can see the redundancy here (puppet-2 is served a special config catalog that only includes puppet-1 installation/upgrades). Each puppet definition is in own puppet module, so nothing is shared there.Up to this point it is all nice, and works, if you presume you use separate manifests for each puppet, for the same node. The annoying thing becomes when I have to manage manifests in separate git repos, at least partially.
On Thursday, March 12, 2015 at 5:33:35 PM UTC-5, Bostjan Skufca wrote:
On Thursday, 12 March 2015 20:30:23 UTC+1, John Bollinger wrote:
On Wednesday, March 11, 2015 at 11:56:44 AM UTC-5, Bostjan Skufca wrote:Hi all,I would like to propose a new feature for puppet master: External Environment Locator (EEL)The main objective would be to make locating puppet environment locations more flexible compared to directory environments. Basic functionality would facilitate usage of external program to convert environment name to corresponding path (directory or environment configuration file).
Greater flexibility is not a justification in itself. Just because I wouldn't use such a feature doesn't mean it's not worthy, but I would like to hear a bit about how you imagine using it, and in what other situations you imagine it being useful.John, please see here (in 9th message on this other thread I explained my use case), this is a direct link to that message:
So I guess, then, you're talking about this:The main motivation for my setup is:- if something happens to puppet upgrade and puppet fails to work, I do not want to ssh into nodes to manually fix the problem.- Even "mcollective" is not proper solution here (usable for quickfix, yes), as some nodes might be down and will have to catch up eventuallyTo achieve this, I have two puppets (installed in dedicated separate dirs under /usr/local/puppet-1 and /usr/local/puppet-2). If, for the sake of argument, we forget that puppet-1 manages the whole system except itself, you can see the redundancy here (puppet-2 is served a special config catalog that only includes puppet-1 installation/upgrades). Each puppet definition is in own puppet module, so nothing is shared there.Up to this point it is all nice, and works, if you presume you use separate manifests for each puppet, for the same node. The annoying thing becomes when I have to manage manifests in separate git repos, at least partially.
I think I'm having trouble understanding this scenario, or how the proposal helps, or both, so correct me where I'm wrong:
- I guess you have separate agents on each machine and separate masters to serve them, at least currently, for I can't imagine why you would want to go this direction if you were running masterless for even one of the two Puppets you describe.
- I infer that you want to consolidate the masters but not the agents, for consolidating the agents would eliminate the resiliency benefit that inspired this approach in the first place.
- The problem you then encounter, I take it, is that you have collisions between the environment names associated with the (erstwhile) two masters.
- The solution you propose is essentially to introduce namespacing for environments, via dynamically-selected environment (root) directories.
If all that's correct, then why does the ENC ability to designate node environments not sufficiently meet your needs? Instead of using same-named environments in different directories, you could instead use different environment names to separate the environment group for one purpose from the environment group for the other. Example: "production" and "production-puppet". That has the additional advantage of keeping all the external classification logic in the same place, instead of splitting it across two separate programs.
Hi,It would really help if you elaborated on your use cases in this thread. I read the one message you linked but I'm still not sure about it and I don't feel like reading the whole other thread to get context. If you propose a feature part of that proposal should be a rationale and intended use cases. Preferably with a comparison of how this makes things better compared to the old setup.
On Friday, 13 March 2015 16:52:13 UTC+1, Bostjan Skufca wrote:For such an occasion I like to say that, yes, doing "rm -rf /" is bad, but as a sysadmin I still want to have this tool available. :)Maybe puppet is becoming complex enough that Puppet Labs should think about classifying configuration settings into two categories: basic and advanced. This one (EEL) would definitely fall into advanced category, and directory environments should be advocated/documented as primary way to create/use environments.Anyway, what I am trying to say is:- puppet should not be holding power users back as a sacrifice for being nice to novices;That's a very broad argument that can be applied to the whole universe. It's not backed up by facts or any data, it's just a "thing you can say".
- puppet should strike a good balance between both extremes, by means of feature implementation and documentation organisation;You can't strike a balance between both extremes by having both, you need to meet in the middle. Which means maybe not all the features and maybe not the greatest documentation but enough of both so people don't shoot themselves.
- achieving such a balance is not easy, I admit;Balance means weighing things against each other. Having both all the features and excellent documentation and making sure that people can't shoot themselves is very very very hard. It's precisely because of this that we decide to reject features at times.
- puppet is a power tool, and irresponsible users that rush into using it, should not stand in the way of progressAgain, that's just a thing you can say. It sounds very impressive, but what does it mean and how does it apply to reality? Irresponsible users or not, we're the ones that get flack for it, that need to support it, that have crying users and get a bad name because "Puppet nuked my system". It will never be their fault, it will always be the fault of the system.
- both agents request the same environment: one master returns the whole system catalog, the other just bits to manage primary puppet
- on puppet masters server this means duplicate environment data/module repository clones
- puppet is a power tool, and irresponsible users that rush into using it, should not stand in the way of progressAgain, that's just a thing you can say. It sounds very impressive, but what does it mean and how does it apply to reality? Irresponsible users or not, we're the ones that get flack for it, that need to support it, that have crying users and get a bad name because "Puppet nuked my system". It will never be their fault, it will always be the fault of the system.
Huh? :)Users that have systems in production they do not understand, and then slapping puppet on top of it using modules they do not understand, bricking the service (or the system) and yelling "Puppet nuked my system" belong to the h(w)all of f(sh)ame, and not to the decision-making process about puppet features. Please do not take this personally or as offensive, as I am having a rather nice chuckle here, with many analogies springing up on "this is the tool's fault, not mine" subject :)
On 03/19/2015 01:08 AM, Bostjan Skufca wrote:
- both agents request the same environment: one master returns the whole system catalog, the other just bits to manage primary puppet
I don't quite see why the agents would have to use identical environment names. Could you perhaps also approach your problem by making the secondary agent use <environment>-meta or something in that vein?
- on puppet masters server this means duplicate environment data/module repository clones
But does the secondary agent even require a substantial amount of data and modules etc.?
- puppet is a power tool, and irresponsible users that rush into using it, should not stand in the way of progressAgain, that's just a thing you can say. It sounds very impressive, but what does it mean and how does it apply to reality? Irresponsible users or not, we're the ones that get flack for it, that need to support it, that have crying users and get a bad name because "Puppet nuked my system". It will never be their fault, it will always be the fault of the system.
Huh? :)Users that have systems in production they do not understand, and then slapping puppet on top of it using modules they do not understand, bricking the service (or the system) and yelling "Puppet nuked my system" belong to the h(w)all of f(sh)ame, and not to the decision-making process about puppet features. Please do not take this personally or as offensive, as I am having a rather nice chuckle here, with many analogies springing up on "this is the tool's fault, not mine" subject :)
There is such a thing as UX engineering. You seem to be under the impression that it is about catering to mediocre technicians. That is just not true.
Anyhow, I think everybody has understood that you intend to add this functionality for use by the most advanced users only, but if this includes but 10% of all users, and only an insignificant percentage of those has any use for this whatsoever, then the value of maintaining it upstream appears unimpressive.
On Monday, 16 March 2015 14:01:58 UTC+1, Daniele Sluijters wrote:Hi,It would really help if you elaborated on your use cases in this thread. I read the one message you linked but I'm still not sure about it and I don't feel like reading the whole other thread to get context. If you propose a feature part of that proposal should be a rationale and intended use cases. Preferably with a comparison of how this makes things better compared to the old setup.I specifically linked to a post (and not the whole thread), it should be more or less context-free.
I would rather not copy-paste the whole thing here, as next message (not yours specifically) would accuse me of copy-pasting instead of linking:). Aaron Stone provided another use case in this thread, couple of posts ago.Here is my use case summarized:- each node has two puppet agents installed, they manage one another- each of these agents talks to separate a master process- both agents request the same environment: one master returns the whole system catalog, the other just bits to manage primary puppet
- on puppet masters server this means duplicate environment data/module repository clones
- this is inefficient as secondary puppet only manages first puppet and thus utilizes one separate module from whole repository
- both puppet masters use the same ENC already
With this feature, I could downsize the management to:- single environment repository, with environment.conf for primary and environment.conf-secondary for secondary puppet master process- (please note that I have already patched puppet master so that it supports configurable name for "environment.conf")
Why? You have two separate masters managing disjoint aspects of the target machines, via disjoint sets of agents. Why do they need (or even want) to share *anything*?
Right. So what is the advantage in them sharing anything at all?
- both puppet masters use the same ENC already
Why? Each master needs to classify nodes altogether differently than the other. How does it make sense for them to use the same ENC? Not that it really matters, I guess.
With this feature, I could downsize the management to:- single environment repository, with environment.conf for primary and environment.conf-secondary for secondary puppet master process- (please note that I have already patched puppet master so that it supports configurable name for "environment.conf")
Wait, are you trying to get rid of your need for separate `environment.conf` files, or not? It sounds like you intend to continue with that mod, but if so, then I don't see why it doesn't already address all the issues you describe.
[...] This is the reason why I came up with the EEL idea. The more I think about it, the more natural it seems for puppet. Maybe it is just me.
If recording absolute paths in environment.conf files dissatisfies you, then you could use put symlinks in the per-master environment directories to direct relative paths into the shared master environment directory.
Although that may not be ideal, it would accomplish your main objectives, as I understand them.
John
On Thursday, March 19, 2015 at 6:19:19 PM UTC-5, Bostjan Skufca wrote:[...] This is the reason why I came up with the EEL idea. The more I think about it, the more natural it seems for puppet. Maybe it is just me.
I'm afraid responses seem to indicate that it's mostly just you. Perhaps that's because few people manage different dimensions of the same site via different masters, as you do.
In any event, I think you can achieve your objective of relying on a single repository / branch per environment with stock Puppet, like so:
- Each master has a distinct environment path
- Each environment directory contains an environment.conf file that gives an absolute path to a manifest directory located elsewhere.
- The manifest directories referenced by your environment configuration files are arranged however is convenient for you. Perhaps, for instance, the actual manifest directories would have paths such as /etc/puppet/shared-environment/production/puppet1 and /etc/puppet/shared-environment/production/puppet2, such that you could do a single git pull per environment, as you want. In fact, you could even arrange to be able to do a single git pull for all environments at the same time.
- Other bits that you want to share across masters but not between distinct environments (modules, for instance), could go directly in /etc/puppet/shared-environment/whatever, referenced, again, by absolute paths.
If recording absolute paths in environment.conf files dissatisfies you, then you could use put symlinks in the per-master environment directories to direct relative paths into the shared master environment directory.
Although that may not be ideal, it would accomplish your main objectives, as I understand them.
--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-dev+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/550DC03A.20608%40Alumni.TU-Berlin.de.
For more options, visit https://groups.google.com/d/optout.
In my opinion, this is one of the areas where Puppet shines and it is something that needs to be actively supported.Let the systems be safe by default and easy to use but don't stifle the power users lest they be alienated.After all this, back to the original topic:* Would I use it? No* Do I think it would be a great deal of upkeep? No* Do I think a large portion of users would use it? No* Do I see hard in incorporating it to see what happens? NoMy opinion: Try it and see!My suggestion is that Bostjan write a patch with clear instructions and announce it to the puppet-users list as something that you'd like to experiment with in terms of utility for the community.