[Puppet Users] Bring a friend to PuppetConf!
Hi all, PuppetConf is just a few weeks away, believe it or not - the sessions are August 22-23, and there's training in SF the week before and after. Last year's conference was so packed, we’re hosting PuppetConf 2013 in a bigger (and more awesome) venue this year: San Francisco’s historic Fairmont Hotel. We have more educational tracks and an amazing speaker lineup[1]. You can get a quick intro to the venue and conference in a video tour I took of the hotel: http://puppetconf.com/location/ We’re offering a special 2-for-1 discount to all of you on the puppet users list. Bring a friend to PuppetConf, and you’ll each get a 50 percent discount. Here’s your code to register yourself and your friend (make sure to scroll down to access the 2-for-1 promotion): http://puppetconf2013.eventbrite.com/?access=BUYONEGETONE But hurry, we've limited slots, and we already have more registered than attended in 2012. Find a friend and sign up today. Given that a third to half of the attendees at our events tend to be new users, I think this is a great way to make it even easier for you to bring new people. This year’s speakers and tracks will offer great information and advice for people working in all kinds of organizations — from startups to the Fortune 500, and everything in between. We’re featuring sessions for Puppet beginners; speakers from companies doing very interesting things with Puppet Labs technologies; and an inside look at upcoming developments. And one of the best things about the venue is there will be lots of great places in the hallway track to hang out and get to know the community. Hope to see you in a few weeks, Luke 1 - http://puppetconf.com/schedule/ -- Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | +1-615-594-8199 Join us at PuppetConf 2013, August 22-23 in San Francisco - http://bit.ly/pupconf13 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscr...@googlegroups.com. To post to this group, send email to puppet-users@googlegroups.com. Visit this group at http://groups.google.com/group/puppet-users. For more options, visit https://groups.google.com/groups/opt_out.
Re: [Puppet Users] VMware investment in Puppet Labs
On Jan 24, 2013, at 9:22 AM, Nikola Petrov nikol...@gmail.com wrote: On Wed, Jan 23, 2013 at 07:25:18AM -0800, Luke Kanies wrote: Hi all, I'm proud to announce that VMware has invested $30 million in Puppet Labs: http://puppetlabs.com/blog/vmware-invests-30-million-in-puppet-labs/ This investment is about continuing to enable us to invest and grow, staying on the track of being a great, independent company. Just like when we announced OpenStack support, we're not suddenly switching to being a VMware company, a cloud company, a virtualization company - we're staying an infrastructure management company that supports massive heterogeneity. Please contact me if you have any questions. Thanks, Luke Glad to hear that you are receiving funding for the great job that you are doing. Thanks. It's all about being able to continue investing in the products. -- Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | +1-615-594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] VMware investment in Puppet Labs
Hi all, I'm proud to announce that VMware has invested $30 million in Puppet Labs: http://puppetlabs.com/blog/vmware-invests-30-million-in-puppet-labs/ This investment is about continuing to enable us to invest and grow, staying on the track of being a great, independent company. Just like when we announced OpenStack support, we're not suddenly switching to being a VMware company, a cloud company, a virtualization company - we're staying an infrastructure management company that supports massive heterogeneity. Please contact me if you have any questions. Thanks, Luke -- Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | +1-615-594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] access exported resources in template
I don't quite know the answer, and I agree, a running shell would be useful. I'd be looking in Parser::Scope and the TemplateWrapper class, wherever it is. Those should generally cover it, with maybe Parser::Resource. You should try deeper inspection of the resources. I think 'resource.to_hash' should give you all of the resource's parameters. On Sep 7, 2012, at 6:01 AM, ctrlc-root root.ct...@gmail.com wrote: Well, 3 years old or not, this is still in the first page of google results haha. I'm running puppet version 2.7.9 and the result of that template is a blank comment line for every instance of the Firewall::Rule type. If I replace 'resource[:comment]' with 'resource.type' then I can confirm that the iteration is actually working, because I see comment lines like this '# Firewall::Rule'. I tried 'resources[comment]', 'resources[:comment]', and 'resources.comment' (with this one triggering an error). I wish there was some easy way to get an interactive ruby shell running with the same environment so I could actually test this without running puppet apply every time, if I could I probably would have figured it out on my own already. If you don't know what the answer is, could you maybe point me in the general direction of how you would find out? Perhaps a relevant part of the puppet source code? And thanks for answering. On Friday, September 7, 2012 12:52:14 AM UTC-4, Luke Kanies wrote: Wow, talk about a blast from the past. I don't get a lot of replies to 3 year old email. :) What happens when you do this? It looks like it should basically work, although I'd use 'resources' instead of 'vertices', I think. What version is this? -- Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | +1-615-594-8199 -- 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/-/XEXWIRbxz9kJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | +1-615-594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] access exported resources in template
Wow, talk about a blast from the past. I don't get a lot of replies to 3 year old email. :) What happens when you do this? It looks like it should basically work, although I'd use 'resources' instead of 'vertices', I think. What version is this? On Sep 6, 2012, at 10:14 AM, ctrlc-root root.ct...@gmail.com wrote: The resource[:property] method doesn't seem to work. I'm pretty new with puppet and only just learned ruby, so I was hoping someone could perhaps just point me in the right direction. Here's what I've got so far: % scope.compiler.catalog.vertices.each do |resource| -% % if resource.type == Firewall::Rule -% # %= resource[:comment] % % end -% % end -% where Firewall::Rule is defined something like: define firewall::rule ($comment=$title){} Any ideas? On Wednesday, October 21, 2009 12:55:37 AM UTC-4, Luke Kanies wrote: On Oct 19, 2009, at 6:19 AM, Bernhard Bock wrote: Hi, I'm trying to develop a class that autogenerates a config file based on an .erb template. It shall populate the config file with data exported from various hosts. Some pseudocode to clarify my issue: node n1 { @@mytype { name: property = foo } } template.erb: % mytype.each do |bar| % %= bar.name % %= bar.property % % end % My question is: How can I access and iterate through the exported resources in the template? mytype.each will not work... This is getting into semi-supported internal APIs, but you can get the resource list from the catalog, something like this: compiler.catalog.vertices.each do |resource| resource.title resource[:property] end -- What happens to the hole when the cheese is gone? -- Bertolt Brecht - Luke Kanies | http://reductivelabs.com | http://madstop.com -- 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/-/1mmfEPyDYj4J. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | +1-615-594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Meet me in London tomorrow (Tuesday) night
Hi all, I'm in London for a couple of days, and if you're interested, please come meet me tomorrow night (Tuesday the 26th, I think - a bit jet lagged and brain addled, but that seems correct). Here are the details: Royal Festival Hall Belvedere Road London SE1 8XX There is an outdoor area, and if the weather is nice enough we'll be there from 18:30 onwards. Otherwise we'll be indoors. I (hope) to be there from 18:00 onwards if anyone wants to come along early. Nearest tubes are Embankment (over the bridge) or Waterloo. Cheers, Luke -- The difference between scientists and engineers is that when engineers screw up, people die.-- Professor Orthlieb - Luke Kanies -|- http://puppetlabs.com -|- http://about.me/lak -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Puppet 2.7.0rc1 (Statler) available!
On Apr 14, 2011, at 3:41 AM, Brian Gupta wrote: Congratulations on this long awaited and momentous release. As a community member that would prefer we stay on a GPLv2 or later license., I have severe mixed feelings. On one hand I strongly respect all the work and code you (and your team) have constituted to the community. On the other, I have no idea why you are forking this project. GPL represents the give and others will give back philosophy that I understood that the puppet community epitomized. Please explain why you are changing the give and others will give back policy that GPL represents? Hi Brian, I've significantly trimmed the list of addressees - if you'd like me to interact with lawyers from the FSF or whatever, please contact me separately. There are three ways to talk about this, so I'll take them easiest to hardest. First, calling this release a 'fork' is silly for so many reasons. I understand you were doing it just to lay claim to the idea that a relicensing constitutes a fork, but of course, I've got a fork of the repo in my github account, as does nearly every contributor. In the end, the 'main' repo is the one that everyone continues to use, and regardless of license, I'm confident that everyone will continue to use our public repo on github. Second, we've been talking about this literally for years, and I've always said that a big part of why we got CLAs was so that we could do this relicensing. You and I have talked about it multiple times, in fact, so it's not like this is a surprise to you. It's obvious that you don't like our decision, but this kind of grandstanding 2 years into the process isn't going to have much impact. Third, we obviously think that the Apache license is a better fit for our project. Can you point to any projects that are released under an open source license because Puppet was GPL'd? I can't. What I can do, however, is point to projects that we don't integrate all that well with because the barrier of integration is higher for us. Even worse, I can point to lots of people who are scared to redistribute Puppet in ways I particularly want to see happen because of the GPL. I've always been honest about why I produce free software - I think it's the best way to accomplish my goals. It just so happens that Apache is a better license to use to accomplish those goals than GPL is, at least at this point, but Apache is just as free as GPL is, and in many ways I think it's more free - anyone can use it in any way they want. Given that I want Puppet installed on every computer and every device pretty much everywhere in the world, that's pretty important to me. I'm willing to continue having this debate in public if I must, but you seem to be one of very few people who find it interesting, so I'd prefer to take it offline if you're willing. I'll also be in NYC in a month and I'm glad to talk it out over a beer or something then. -- What's the good of having mastery over cosmic balance and knowing the secrets of fate if you can't blow something up? -- Terry Pratchett, Reaper Man - Luke Kanies -|- http://puppetlabs.com -|- http://about.me/lak -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Puppet Enterprise
Hi all, We here at Puppet Labs are proud to announce Puppet Enterprise, which we launched today: http://www.puppetlabs.com/puppet-enterprise/ We've worked pretty hard to get it out the door, and in particular our team has worked very hard to get great packages for all of the Puppet projects and its dependencies and to test their interactions extensively. In terms of real-world usage, one of the big differences is that there is now a single package that will install everything it takes to scale Puppet very effectively, and we'll support the entire Puppet stack, not just the projects maintained by Puppet Labs. There's a more in-depth announcement on our blog: http://www.puppetlabs.com/blog/introducing-puppet-enterprise/ Please let me know if you have any questions or concerns, and feel free to email me directly if you prefer. Thanks, Luke -- The surest sign that intelligent life exists elsewhere in the universe is that it has never tried to contact us. --Calvin and Hobbes (Bill Watterson) - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Re: [Puppet-dev] Converting to Ruby DSL
On Dec 19, 2010, at 5:07 AM, Ken Barber wrote: Thanks Luke. So I've been making some notes here: http://wiki.bob.sh/confluence/display/TECH/Ruby+DSL This is a great doc. Would you be willing to migrate it to the Redmine wiki? I especially like how you draw out the bits that have pure ruby interfaces and the bits that don't. Do you have any inspirations for good interfaces for those unsupported bits yet? While I definitely don't want to get in the habit of directly exposing internal interfaces in a lot of ruby scripts, one of the big benefits of the pure ruby DSL is that people can do exactly this - hack in the support they need until it's available officially. And writing up some working examples: https://github.com/bobsh/puppet-rubydsl-examples ... based on your notes and some digging. You wouldn't be able to take a look and correct me where I've tapped into the wrong part of the API? I realise I'm obviously touching internals that may change ... I just figure if I can figure out how to do it with internals then it shouldn't be hard to extend the DSL. So obviously some of the ways I've done this should really be moved to convenience methods: * Defaults: I presume the capitalisation of the first letter of a missing_method would indicate someone trying to set a default This is a bit different in Ruby because capitalized terms are presumed to be constants, and they're actually pretty annoying to deal with automatically. I'd probably start with that, but I wouldn't hold out hope that it'll work in the long term. * Vars: not sure how you make this work at the correct scope in ruby for proper 'my_var = foo' type sugar ... maybe a wrapper is more appropriate (a bit like create_resource). You should be able to use normal instance variables for all of the variable setting/getting except at the very top scope: @var = foo This works for dereferencing variables set in Puppet DSL code, too. * Relationships: I'm not sure how to do this yet, looking at the AST::Relationship bit there is a lot going on so I imagine I tap that, but how I do that without extending the dsl code itself is not obvious (so obviously I'm going to try that :-). I would just add an 'edge' method and pass it a hash; something like: edge Package[foo] = Service[foo] This would then probably directly add edges to the current catalog, rather than relying on AST::Relationship: def edge(rels) rels.each do |source, target| raise Could not find resource #{source} unless source = catalog.resource(source) raise Could not find resource #{target} unless target = catalog.resource(target) catalog.add_edge(source, target) end end Something like that, anyway. How would one go about extending it to deal with top scope? I'm guessing somehow you need to be able to populate @__created_ast_objects__ directly right from ResourceTypeAPI? I hope not...? Your question here is how to make all of these methods available in the top scope, outside of a node/class/definition, right? I don't really know, and I had largely decided against that as a design decision, figuring people didn't want the top scope polluted. Given how many people have asked for this, though, I was clearly wrong about what people wanted. I don't have clarity on how exactly to do it, but it should probably resemble how we get those node/hostclass/etc methods in the top scope - put them in a module which is then used to extend Object. The methods themselves would then modify the 'main' class (which would need to be autocreated if it were missing). Does that make sense? On Friday, December 10, 2010 6:47:42 AM UTC, Luke Kanies wrote: On Dec 8, 2010, at 11:09 AM, Ken Barber wrote: (cross posting here as I originally posted in puppet-users - I figure the question is more of a dev one then for puppet-users) Hi everyone, I'm experimenting with converting some of my live puppet content to Ruby DSL and have found a few gaps I wouldn't mind some advice on. I'm not sure how many of you have already experimented in this arena yet. I've already read Dan Bode's excellent blog article on the subject: http://www.puppetlabs.com/blog/ruby-dsl/ I know the Ruby DSL is quite new - but I figured perhaps some of these items deserve to be tickets (or perhaps documented) and I thought I'd ask first :-). Thanks for testing this. As you say, it's still quite new, and definitely incomplete, but as with most things we do, I wanted to get a simple thing out and in the wild rather than wait for perfection before shipping. This kind of feedback is exactly what we need (although of course patches are even better). 1. Defaults How do I set defaults in Ruby DSL? For example what is the ruby DSL equivalent to this: Service { hasstatus = true } This is one of the things I left out of my initial implementation. You might be able to figure out how to add it by patching one
[Puppet Users] Re: [Puppet-dev] Converting to Ruby DSL
On Dec 8, 2010, at 11:09 AM, Ken Barber wrote: (cross posting here as I originally posted in puppet-users - I figure the question is more of a dev one then for puppet-users) Hi everyone, I'm experimenting with converting some of my live puppet content to Ruby DSL and have found a few gaps I wouldn't mind some advice on. I'm not sure how many of you have already experimented in this arena yet. I've already read Dan Bode's excellent blog article on the subject: http://www.puppetlabs.com/blog/ruby-dsl/ I know the Ruby DSL is quite new - but I figured perhaps some of these items deserve to be tickets (or perhaps documented) and I thought I'd ask first :-). Thanks for testing this. As you say, it's still quite new, and definitely incomplete, but as with most things we do, I wanted to get a simple thing out and in the wild rather than wait for perfection before shipping. This kind of feedback is exactly what we need (although of course patches are even better). 1. Defaults How do I set defaults in Ruby DSL? For example what is the ruby DSL equivalent to this: Service { hasstatus = true } This is one of the things I left out of my initial implementation. You might be able to figure out how to add it by patching one of the files in lib/puppet/dsl. 2. Top scope I notice the convenience methodology does not work at 'top scope' for example this will fail: file /tmp/zzz, :content = foo But this will not: node default do file /tmp/zzz, :content = foo end Is there a proper way to call resources without using the convenience methods? Or perhaps is there a way to define elements that reside in top scope? I made a decision when I did this not to pollute the top namespace - both for cleanliness, and also for simplicity of implementation. This has come up a few times, though, so it's something that I'm happy to revisit. 3. Class resource I think Dan Bode already raised this as a bug: https://projects.puppetlabs.com/issues/5236 The following returns an error 'method_missing': hostclass :foo do notify bar end node default do hostclass foo, :stage = baz end This is because hostclass has not been defined as a convenience method it would seem. Just like issues 2 If someone knows a way to call a resource directly without requiring the convenience method that would be a decent enough work-around. Hmm. It should be, but it looks like this is failing somewhere and has been marked as a high priority bug. :/ 4. exec Resource The 'exec' resource as a convenience method is overlapping with the ruby 'exec' method. So if you do this: node default do exec ls, :command = /bin/ls end You get: can't convert Hash into String on node obelisk.usr.bob.sh Returned from the Kernel.exec call. You should be able to use 'create_resource :exec, ...' here. 5. Referencing other resources I'm not quite clear how to reference other resources that already exist. This is obviously a problem for the 'require' attribute: node default do package foo, :ensure = installed service foo, :enable = true, :ensure = running, :require = ??? end I believe the internal implementation allows you to do 'require = [:package, foo]'. I couldn't find a reasonable syntax for this, without a lot more work making, e.g., Package[foo] work, which was my ideal. 6. Chaining Resources Is there a syntactical equivalent to this in Ruby DSL yet? For example: Stage[pre] - Stage[main] - Stage[post] Without knowing how to solve 5 I'm kind of stuck when it comes to defining dependencies :-). There isn't. The DSL is obviously still a subset of the full Puppet language (ironic, given how small the language is). -- Computers are not intelligent. They only think they are. - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Re: [Puppet-dev] Graph explosion and workaround technique with stages.
On Nov 3, 2010, at 10:02 AM, Trevor Vaughan wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 I'm cross-posting this to both the users and dev groups so that the users can use the workaround technique to reduce graph churn and the devs can hopefully fix the issue. So, I'm loving stages, but they appear, by default, to generate a many-to-many dependency graph. By adding 'pre' and 'post' stages that contain a single item, the graphs are vastly reduced in complexity and we're seeing something like a 3X speedup in graph execution in simple test cases. I've attached a couple of puppet files illustrating the issue with their associated graphs. If the graphs could be auto-reduced to a single point prior to execution automatically, it would be quite helpful. Thanks a ton for tracking this down. Unfortunately, I don't think it's as clear as your pictures make it seem. Which graphs are these pictures produced from? There are three graphs you might reasonably look at - the normal, pre-relationship graph which has just containment edges (I think this is normally called resources.dot), the graph with just the relationships (relationships.dot, I think), and the essentially multiplied graph of dependency times containment edges (not sure what this is called). The latter will generally be a many to many graph, and I think that's what you're using. The reason it's not in the case of your transitions version is that we had to keep those class objects in there (we would normally remove them) because if we didn't then certain kinds of dependencies got missed. So basically, this isn't so much a feature as the side-effect of an ugly hack to a bug. I think the right answer is to get rid of the need for this graph at all by having a single graph contain both dependency and containment edges, thus not needing the many to many nature. I tried very hard to get this into 2.6 but couldn't finish it in time. In seeing this multiplier, it's probably justification to raise the priority on this, which doesn't hurt my feelings at all. For those interested in the code, it's in my refactor/master/3691-no_relationship_graph branch but is likely no longer in a mergeable state. -- The easiest way for your children to learn about money is for you not to have any.-- Katharine Whitehorn - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Nigel Kersten has started at Puppet Labs
Hi all, I think many people know this already, but Nigel Kersten has officially joined us (started today) as product manager. His first job will be figuring out exactly what that means. In general, however, Nigel's main job will be making sure that we as a company are working on the right priorities - synthesizing input from all of you, our customers, me, our developers, and anyone else, and then turning that into a plan for continuing to produce great product. I'm very excited at Nigel joining the company, as he brings real-world experience at running the largest known Puppet installation, and he's both opinioned and motivated about where Puppet and related products should go. Please treat him nicely for the first week or so, and then begin bombarding him with requests. :) -- Always behave like a duck - keep calm and unruffled on the surface but paddle like the devil underneath. -- Jacob Braude - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Our new survey
Hi All, You've probably all received our new survey. We're hoping you'll spend a few minutes helping us understand how you use Puppet and what we (both the Puppet developers and Puppet Labs) can do to make your experience better. One of the things that the survey mentions is a commercial edition of Puppet - I've mentioned this before, and it's basically a packaged, supported distribution of Puppet, associated tools, and all of its dependencies needed for a fully scalable installation. I've mentioned this before, and the goal is to provide a higher level of support for those who want help with the full stack rather than just Puppet and for those who want less frequent and more consistent release cycles. We are still figuring this product out, and your filling out the survey will really help us understand what, if anything, you would like to see from us here. Thanks, Luke -- http://puppetlabs.com/ | +1-615-594-8199 | @puppetmasterd -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Proposal to remove redundant info in source = parameters
On Sep 27, 2010, at 7:04 AM, Brice Figureau wrote: Hi, It looks like I missed your original e-mail to puppet-dev. On Fri, 2010-09-24 at 11:20 -0700, Nigel Kersten wrote: [cross-posting as I'd like to know whether my intuition about this being the most common case is correct] class foo { file { /etc/foo.conf: source = puppet:///modules/foo/foo.conf, } } For me, every single one of my source specifications refers to a file inside the current module. My intuition is that this is the most common case outside my own deployment, so why don't we optimize for it? class foo { file { /etc/foo.conf: source = foo.conf, } } eg the proposal is that if you don't specify the protocol, server address, modules prefix, module name, it is assumed you are referring to a file path relative to the 'files' subdirectory of the current module. If you wish to fully specify the source URI, you're free to do so. My issue with your proposal is that at first glance it will look like a local copy (which should require an absolute path) and not a remote copy. This certainly violate the least surprise paradigm for new users. What about a new URI scheme (ie module) which would do the same: class foo { file { /etc/foo.conf: source = module://foo.conf, } } Another option is a new function: class foo { file { /etc/foo.conf: source = expand(foo.conf) } } Then all of the smarts could be in expand(). OTOH, I think it's a bit think in terms of syntax. Backticks? :) -- Everything that is really great and inspiring is created by the individual who can labor in freedom. -- Albert Einstein - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Proposal to remove redundant info in source = parameters
On Sep 25, 2010, at 10:23 AM, Nigel Kersten wrote: On Sat, Sep 25, 2010 at 10:10 AM, Patrick kc7...@gmail.com wrote: On Sep 25, 2010, at 10:02 AM, Nigel Kersten wrote: On Fri, Sep 24, 2010 at 12:34 PM, Nan Liu n...@puppetlabs.com wrote: On Fri, Sep 24, 2010 at 11:20 AM, Nigel Kersten nig...@google.com wrote: eg the proposal is that if you don't specify the protocol, server address, modules prefix, module name, it is assumed you are referring to a file path relative to the 'files' subdirectory of the current module. If you wish to fully specify the source URI, you're free to do so. Since we can determine module_name in 2.6, I agree with this change. But we should update template behavior so it's the same as file. Currently for templates: content = template(foo.erb), Ah I missed addressing this point. I don't think we can do this and still have backwards compatibility. How do you tell whether 'foo/bar.erb' refers to 'foo' the module or a subdirectory 'foo' in the current module? Which should take precedence? How do we throw a deprecation warning? I don't think we can feasibly forbid references to templates outside the current module. That would have a significant effect upon our ability to share modules. With the benefit of hindsight, we should possibly have made the source parameter, file function and template function consistent... Can we get there from here? What about instead defining something uncommon to be module root. Something like, as a random example, ~/. Then the syntax goes from file:///modules/$modulename/file to ~/file. I'm normally really reluctant to add more special characters to the syntax, as I feel like we're way too busy as it stands, but I really do quite like this idea, using normal *nix syntax for your home vs other users... Let me incorporate your suggestion as I think adding syntax allows us to make all three consistent. modules/$module_name/files/foo file { source = ~/foo } File (source) from another module 'bar': file { source = ~bar/foo } modules/$module_name/templates/foo.erb template(~/foo.erb) modules/bar/templates/foo.erb: template(~bar/foo.erb) modules/$module_name/files/foo file(~/foo) modules/bar/files/foo file(~bar/foo) All of this *only* applies if you are within a module. We don't deprecate the puppet:// or file:// syntax Do we deprecate the existing template function syntax? If not, do we add the existing template function syntax to the file function for consistency? We don't support setting the server, or access to static mount points. If you want those, use the puppet:// syntax. This feels good. We're optimizing for the two most common cases, without removing the most flexible syntax. I agree, this is a good option. The only other one I thought of was introducing a 'module_path' function or something similar to do the path expansion. -- Hegel was right when he said that we learn from history that man can never learn anything from history. -- George Bernard Shaw - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Re: [Puppet-dev] ANNOUNCE: Puppet 2.6.1 released!
On Sep 13, 2010, at 8:32 PM, Todd Zullinger wrote: James Turnbull wrote: In the long Puppet tradition of fast releases and agile iteration comes the 2.6.1 release! For those using Fedora or RHEL/CentOS, I've updated the yum repos at: http://tmz.fedorapeople.org/repo/puppet/ Packages for EL 4 - 6 and Fedora 12 - 14 are available for testing. Add the puppet.repo file from either the epel or fedora directories to /etc/yum.repos.d to enable. If you find problems with the packaging, please let me know. If you find other bugs, please file them in redmine: http://projects.puppetlabs.com/projects/puppet/issues I'm particularly interested in anyone updating from 0.25.x to 2.6.x and whether you run into regressions or other issues that would make this an unsuitable update to push into the stable Fedora and EPEL repositories. Thanks for being so prompt on this, Todd, and very happy to finally have the release out. -- The one thing more difficult than following a regimen is not imposing it on others. -- Marcel Proust - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Re: Puppet use with OLPC's XS
On Sep 8, 2010, at 7:20 AM, Martin Langhoff wrote: [...] [ Did I say THANKS!? Should say it lots, and often. ] Hi Martin, It looks like the list has you pretty well handled, so mostly I'm writing back to say I'm glad to see ISconf users still around, and very glad to see it looks like Puppet will work for you. That being said, I'll throw my responses in here, too, since I've got more of the ISconf context. 1 - With a high number of identical nodes, we are very precious about deploying the exact same sw package (rpm in this case) to all nodes. Can I declare an exact rpm version/revision in a packages[] section? Can I later update it with a later version and will it know to upgrade via yum? ensure = '1.0' or whatever works fine. 2 - Can I say install this shellscript and run it once? How? Not in so many words, but as Patrick said, use the 'creates' argument to provide idempotency and you'll actually be happier. 2a - Is there an ISConf-like facility that says run it until it succeeds once? [ Happy to use Makefiles, but if there's a Puppet-supported elegant way of doing it... ] Execs run every time by default, so this is essentially on. You need some additional check (onlyif/unless/creates) to make them idempotent. [...] 5 - Is there any server status monitoring tool that integrates/piggybacks with Puppet? Our NAT'ted clients make most monitoring tools a pain... Our own Dashboard, along with Foreman and a few others. 6 - For disconnected configuration clients -- is there a way to tell the puppet client: the puppet config of the server is available to you on file:///media/usb/puppetconfig ? The XS already has a mechanism that can guarantee the integrity of files coming from the sysadmin team (so only signed files are accepted over usb). Yes, use stand-alone 'puppet' rather than a client/server. You can still report back in this mode, although that probably won't help you much if you're disconnected. -- The surest sign that intelligent life exists elsewhere in the universe is that it has never tried to contact us. --Calvin and Hobbes (Bill Watterson) - Luke Kanies | http://puppetlabs.com | http://madstop.com -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Centralised Graphing?
On Aug 25, 2010, at 9:54 AM, Matt Wallace wrote: Hi all, I'm starting to look at the graphing features of Puppet and I'm struggling to find a way of collating the graphs for testing purposes. Is there a way to centralise the output from the graphs into something like hostname.relationships.dot on the puppet master? There isn't currently a way to do this, but we're working on it - it's a very high priority for us based on customer feedback. The only real way to do it right now is to manually send the graphs back to the server. But yeah, at some point this will all be visible in the Dashboard. -- The real art of conversation is not only to say the right thing at the right place but to leave unsaid the wrong thing at the tempting moment.-- Dorothy Nevill - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] inventory of managed resources
That really does seem like something storeconfigs can give you, at least if you write the query. It's basically finding all files owned by the host in question. Something like (in ActiveRecord): Puppet::Rails::Node.resources.find_all { |resource| resource.type == file }.collect { |resource| resource.title } That should return an array of file names. Haven't tested it mind you, but something like that should work. Another option involves client-side opening the catalog and reading the files. I've written a script that does this for a bank that delivers its output to their auditors. Ended up being very simple. On Aug 10, 2010, at 7:34 AM, Adam Winberg wrote: i've tested the storeconfigs option but i'm not fully getting what i want (do we ever..?). i've got quite a lot of files i sync with my clients via puppets fileserving capabilities. these files are tagged with different suffixes as labels, like: resolv.conf--serverA resolv.conf--CLUSTER1 resolv.conf--GROUP2 my.cnf--DBGROUP1 and so forth (and for the record - the files above are only examples and i do also use templates). what i want to do is query my puppetmaster which files a specific node is getting, from a fileserving point of view. if serverA is part of the DBGROUP1 group then my query would result in a list of files: my.cnf--DBGROUP1 resolv.conf--serverA any ideas on how to accomplish this? //Adam On 10 July 2010 10:48, Adam Winberg adam.winb...@gmail.com wrote: ah, good point! i will look into it, thank you. //Adam On 9 July 2010 09:23, David Schmitt da...@dasz.at wrote: On 7/7/2010 4:33 PM, Adam Winberg wrote: Hi, are there any good ways of scripting an inventory of managed resources on all nodes? I've found the inventory script by R.I.Pienaar (http://www.devco.net/archives/2010/02/26/what_does_puppet_manage_on_a_node-2.php ) which does what I want but only locally on each client. Is there any native way of syncing the client_yaml data centrally or any other way of doing this? I need a script-friendly way of checking which clients have this or that configuration, i.e. which ip addresses are managed by puppet on client X or which files... and so on. If you activate storedconfigs, puppet will keep a database of all currently configured resources. Best Regards, David -- dasz.at OG Tel: +43 (0)664 2602670 Web: http:// dasz.at Klosterneuburg UID: ATU64260999 FB-Nr.: FN 309285 g FB-Gericht: LG Korneuburg -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en . -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en . -- Man is the only animal that can remain on friendly terms with the victims he intends to eat until he eats them. -- Samuel Butler (1835-1902) - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] dpkg in puppet returns 2 but at command line returns 0
On Jul 12, 2010, at 12:00 PM, Jon Choate wrote: I have an exec defined as exec {dpkg --configure -a: path = /usr/bin:/bin, user = root } puppet complains: Exec[dpkg --configure -a]/returns: change from notrun to 0 failed: dpkg --configure -a returned 2 instead of one of [0] but when I run dpkg --configure -a outside puppet it returns 0. Has anyone ever seen this before or have any insights? It's almost got to be something related to your environment or your access (i.e., the user you run the commands as). -- I hate to advocate drugs, alcohol, violence, or insanity to anyone, but they've always worked for me. -- Hunter S. Thompson - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Proposed changes to Puppet's IP management
Hi all, As discussed multiple times earlier, but most recently at [1], we're going to take the next step on managing the IP of Puppet and related projects. This is currently a proposal, so please speak up if you have any concerns about this. Basically, our plan is to stick to either GPL or MIT+GPL for all of our projects, and all contributors will need to either sign a CLA or contribute their code under the MIT. Non-core tools like Facter will have MIT attached so that they can easily be used wherever you want, and the core projects like Puppet and Dashboard will be GPL'd. Our goal is to have enhanced rights to all of the code in the projects we maintain so we can relicense to partners and customers. Note I didn't say 'own' - we're using a form of the Apache CLA, which just gives us enhanced rights, not ownership. If you're not comfortable with that, or if your contribution is small enough that it's not worth signing a CLA, you can submit your code under the MIT (or equivalent, I assume) license, which gives us (and everyone else) the right to relicense your code. We've got a plugin ready for Redmine (written for us by Eric Davis of LittleStream Software) that will track who's signed a CLA, and it has a click-through agreement just like Google uses, so signing a CLA should be entirely easy. We'll be working through the list of contributors in the next quarter or so. If you're a contributor and haven't yet signed a CLA, you should expect to hear from Amy Hoang, who will be working through the list. We'll be installing the Redmine plugin in the next week, at which point we'll send out another email. Also - we know that nearly everyone is moving toward an Apache license rather than GPL. We don't rule out such a move in the future, and doing so would still require that we get these enhanced rights, but from I can tell the GPL does a much better job of encouraging a profitable ecosystem. This is something we'll be revisiting constantly, but it seems the right answer for now. 1 - http://www.mail-archive.com/puppet-users@googlegroups.com/msg07284.html -- 'Tis better to be silent and be thought a fool, than to speak and remove all doubt. --Abraham Lincoln - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Variable Scoping: What do you want?
Hi all, Given the number of threads on variable scoping recently, it's pretty clear we need to change how it works. Markus has a lot of this redone in his futures branch, and I'm asking him to fully describe what the results will be when that's merged, but my guess is that there are different expectations for what people want to see. So, my question is, what behaviour changes would you like to see in how variable scoping works? How would you like the edge cases that are currently hurting you to behave? -- On Bureaucracy The Pythagorean theorem contains 24 words. Archimedes Principle, 67. The Ten Commandments, 179. The American Declaration of Independence, 300. And recent legislation in Europe concerning when and where to smoke, 23,942. -- The European, June 23-29, 1995 - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Puppet dashboard
On Jun 29, 2010, at 9:16 AM, Dan Bode wrote: Hi Alex, On Tue, Jun 29, 2010 at 8:25 AM, Alex Howells li...@howells.me wrote: On 26 June 2010 23:15, Douglas Garstang doug.garst...@gmail.com wrote: Am I the only dinosaur on the mailing list? Not really. Admittedly I haven't had an in depth look at the puppet dashboard yet, but I'm not sure I get the point of it. If it's solely for reporting purposes, then great, but is it also a tool for making changes to nodes? That's the bit I don't understand. As an admin, revision control is _everything_, and I need to be able to account for every single configuration change that is made to a system. I need to know who did what, when, and exactly what they did. Does the dash board allow you to do that? Such auditing could fairly trivially be implemented into a Ruby on Rails web application, and is probably beyond the scope of what they're trying to achieve with the initial releases. I agree it is definitely a worthwhile goal to implement auditing if the long-term future for Puppet Dashboard is to action changes to infrastructure, and not just present a pretty interface to data. we're pretty open around here. There's a ticket open for that which has been accepted. (if its trivial, a patch would be welcome :) ) http://projects.puppetlabs.com/issues/3511 watching tickets is how we measure community interest during triage (its also the best way to keep up to date on a ticket's status). In addition, I believe the audit trail is already present in the database, it's just not visible to the user yet. -- You only have to be open minded if you're wrong. - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Seemingly simple question - current status?
On Jun 28, 2010, at 6:38 AM, dbs wrote: I have a 3 different puppetmasters running different groups of machines (dev, testing, and production). I'd like to very simply say Give me a brief summary of the status of the nodes you manage. I've been having nightmare dependency problems trying to get things like Dashboard running that seem to be able to do this (Ruby, which may be an elegant language, is very crunchynew in regards to specific versions and stable updates. Frustrating). What I'd like to see is something like: $ puppetstatus Node etl01.foo.com : Ok (Last contact: 6/28/2010 12:40pm, last update: 6/26/2010 11:05am (Module sudoers) Node etl02.foo.com : Ok (Last contact: 6/28/2010 11:25am, last update: 6/26/2010 11:03am (Module sudoers) Node etl03.foo.com : Ok (Last contact: 6/28/2010 12:18pm, last update: 6/26/2010 9:05am (Module sudoers) Node db02.foo.com: Error (Last contact: 6/28/2010 12:18pm) : Depedency not met : MySQL v5.1.20 Is this possible? I looked at the external nodes methodology, but that seems to be a mechanism for just storing node definitions, not getting status updates. The Puppet Dashboard provides this as long as you hook your reports up to go to it, plus there are other things like puppetlast and Foreman that can do similar work. -- The cure for writer's cramp is writer's block. -- Inigo DeLeon - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] New Puppet Labs employee: Matt Robinson
Hi all, I'm happy to announce our newest developer here at Puppet Labs, Matt Robinson: I'm happily returning to working with Ruby after a stint developing data intensive web apps in Perl. I enjoy developing in Vim, Ubuntu and GNU Screen. I'm looking forward to applying some of my college education in computational mathematics to Puppet. Outside work I enjoy hiking, rock climbing, playing guitar and traveling. My family is currently my wife Kim and my dog Ubu, but it will be expanding this summer to include a baby girl. He'll be working on just about everything, so you should start seeing commits from him any minute now. :) -- Once...in the wilds of Afghanistan, I lost my corkscrew, and we were forced to live on nothing but food and water for days. -- W. C. Fields - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] puppet for switches
On May 4, 2010, at 9:25 PM, James Turnbull wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 5/05/10 1:53 PM, Geoff Crompton wrote: This might be a crazy idea, but it just popped into my head, and I wanted to know if it's possible. Perhaps not possible right now, but possible in a theoretical sense. Is it possible that puppet could be modified to be used to manage switches that have a command line based interface? When I manage our Allied Telesis switches (which have a CLI similar to cisco IOS) I wonder if I could control it via a puppet-like node: node 'switch-101' { vlan { storage: id = 1234, untagged_ports = 3/e1, 4/e3, tagged_ports = 1/e1-2/e48, } include gvrp include stp::rstp stp::portfast { 1/e1-e48,2/e1-48,3/e1-48: } } Now I know we probably can't get puppet to run on the switch, but we can get a host to ssh or telnet to the switch, and to download the current configuration of the switch. It's feasible - you could create a type and provider that connects to the switch and interacts with the CLI to retrieve the configuration, manipulate it in some way (depending on how complex the format is) and then send it back and apply it. Obviously there would be limitations - no Factor facts and you'd have to create a dummy node I guess because the switch wouldn't be a real node. Others may have niftier ideas on how to do this - an easier mechanism might be use Puppet's REST API to integrate with the switches own management tool if it has an exposed API. The way that I would implement this would basically to write a system that read in the whole switch config, used the catalog and RAL to compare states and write a new config, and then a hook at the end to write the new config. You could use the (new in 0.25) pre and post transaction hooks to retrieve and store the switch config, and then it's just a question of having RAL types that modify that config in some way. Make sense? -- When I die, I want go out just like my grandfather, in his sleep, peaceful and quiet...not kicking and screaming like the other guys in his car. - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] puppet arrays, and selectors...
On May 3, 2010, at 7:22 AM, Daniel Pittman wrote: G'day. I have a problem. Mostly a theoretical problem, granted, but a problem: We have machines with a variety of hardware RAID controllers, and some that don't have one at all. We want these monitored, which usually involves some vendor-specific binary blob, plus support code, installed and running. Supporting *a* RAID controller isn't too hard; I have a fact that pulls that out and lets me install the right support. In the event we got two RAID controllers in a single machine (or, theoretically, I run into this elsewhere), how would I best go about this? As far as I can tell, this doesn't work; it matches nothing, ever: $test = ['one', 'two'] case $test { 'one': { ... } 'two': { ... } } So, how can I make decisions about the content of that array? My best guess, right now, is that I would need to use a define, then expand that using the array as the name, and have the content perform the case statement to include the appropriate class. Ick. define what_a_nasty_hack () { case $name { 'one': { ... } 'two': { ... } } } what_a_nasty_hack { $test: } Anyway, is there a better way to handle this that I can't see right now, or is this perhaps something that the language could stand enhancing? It probably is a deserved language enhancement, but in the short term a function is your best bet. -- Getting caught is the mother of invention. --Robert Byrne - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Jeff McCune joins Puppet Labs
Hi all, I'm pleased to announce that Jeff McCune will be joining Puppet Labs and moving to Portland, OR in May. Jeff has been a critical part of Puppet's great support for OS X, having developed much of the initial functionality. He was also the main driver in a lot of the configuration flexibility that exists in Puppet, such as its support for alternate naming schemes via 'certname' parameter. We're very excited that he'll now be able to work full time on Puppet. He'll be doing training, professional services, and development.. -- The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. -- George Bernard Shaw - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Jeff McCune joins Puppet Labs
Hi all, I'm pleased to announce that Jeff McCune will be joining Puppet Labs and moving to Portland, OR in May. Jeff has been a critical part of Puppet's great support for OS X, having developed much of the initial functionality. He was also the main driver in a lot of the configuration flexibility that exists in Puppet, such as its support for alternate naming schemes via 'certname' parameter. We're very excited that he'll now be able to work full time on Puppet. He'll be doing training, professional services, and development.. -- The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. -- George Bernard Shaw - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] REST, catalogs, and dot, oh my
Hi all, I'm doing this as an email rather than a blog post because it's very half-baked and I'm not quite willing to stand behind it and make promises. Still, it's useful and interesting, so I figure I should spread the knowledge. Some of you probably already know we've added a couple of new settings to Puppet for 0.25.5 (and rowlf), one of which is 'catalog_terminus'. Like 'node_terminus', this gives you some flexibility for creating new places to store catalogs and lets you configure the master to do so. I've got a proof of concept up that does a couple of interesting things: http://github.com/lak/puppet/tree/features/0.25.x/degenerate_catalog_service Basically, it caches the catalogs on the server in json, and then provides a simple interface for RESTful clients to retrieve a dot- formatted catalog. It's a kind of mixture of two goals: 1) I want to build a memcached catalog terminus to store catalogs in. This would allow the client-facing master to just serve files somewhat plainly -- that is, it would just return catalogs from memcached, not compile them -- and you'd have other compiler processes on the side compiling catalogs and sticking them in memcached. (At least, that's my idea - it could be done lots of ways.)f 2) I wanted to make it easy to get the dot output of a catalog. I want this so we can visualize the catalogs in the dashboard. So, the proof of concept does exactly this. Start the master like this: sbin/puppetmasterd --confdir /tmp/foo --vardir /tmp/foo --debug -- manifest ~/bin/test.pp --certname localhost --no-daemonize -- catalog_terminus=service_faker Then run through the puppetd/puppetca stuff as necessary for certs, with a certname of 'testing', (although you can probably skip this), and then run puppet-test like this: sudo ext/puppet-test --suite rest_stuff_for_dot --test dotconfig -- server localhost --confdir /tmp/bar --vardir /tmp/bar --certname testing testing You'll notice two things - first, the catalog is printed in dot format on stdout. This can just about be piped directly to graphviz or OmniGraffle. Second, the server caches the catalog in $vardir/ catalogs/$name.json. Again, this is just a proof of concept, showing what kind of flexibility the addition of this one parameter provides. Hopefully Michael DeHaan will be doing a more realistic example using memcached in the near future. -- The most incomprehensible thing about the world is that it is at all comprehensible. --Albert Einstein - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Reductive Labs renamed to Puppet Labs
Hi all, Reductive Labs was created to fund the development of Puppet and tools built on top of and around it. I always expected to produce multiple projects, each with their own brand and reputation, but in the meantime Puppet has swamped Reductive in terms of recognition. In recognition of this fact, and because we're tired of introducing ourselves as you know, the people behind Puppet, we've renamed our company to Puppet Labs, Inc., and rebased all of our web sites on http://puppetlabs.com , accordingly. All of the old sites should automatically redirect to the new locations. It will take a little while for DNS to propagate, and for us to find all of the little corners that have 'Reductive Labs', and for me to finish mourning a name that I've been using for five years, but you should see all of our services pointing to our new domain within 24 hours. Because Google Apps don't support changing domain names, it will also likely take us a bit to get all of our email coming from the right place. Please email us at i...@puppetlabs.com if you find anything you think we need to fix. And, as always, please email me directly if you have any questions, comments, or concerns. Thanks, Luke -- Venter's First Law: Discoveries made in a field by some one from another discipline will always be upsetting to the majority of those inside. - Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Using Puppet for application deployment
On Mar 9, 2010, at 9:54 AM, Joe McDonagh wrote: Michael DeHaan wrote: On Mon, Mar 8, 2010 at 9:46 AM, Julian Simpson simpsonjul...@gmail.com wrote: Given that there are so many ways to skin the same cat, I'm wondering how others are doing their application deployments using Puppet. Or, if you are using Puppet but do your app deployments via some other mechanism, how do you do it, and why aren't you using Puppet to do it? Pete I use capistrano for application deployment. I've managed to use both Puppet and Capistrano for deployment: Cap for the business code, and Puppet to ensure that dependencies are met. Puppet was called from Capistrano. J. Can you share some examples of where your dividing line is and some of the tasks that are hard to handle in Puppet today? Ideally I'd like to figure out how to incorporate more of that into puppet-core.Bruce has been working on a version control type, that could be used to check sources out of version control and eliminate some packaging needs for hosted apps, though I'm curious as to what other niches might not be covered. --Michael Example of what puppet can do best: Configure a system with apache2, a basic security configuration, some enabled modules, a bunch of packages admins expect to have available (screen, irb, etc). Example of what capistrano can do best: A. Deploy your puppet manifests to your puppet server. B. Deploy your web content out of svn onto your web server. They're two distinct areas of 'deployment'. Puppet is more like, systems deployment, cap is app or content deployment in my eyes. I would essentially agree with that, with one caveat - that's something Puppet's not very good at today, but I'm willing to make some bets (not promises, quite yet) about it being good at it within a year or so. -- Fallacies do not cease to be fallacies because they become fashions. --G. K. Chesterton - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Using Puppet for application deployment
On Mar 11, 2010, at 12:53 PM, Julian Simpson wrote: They're two distinct areas of 'deployment'. Puppet is more like, systems deployment, cap is app or content deployment in my eyes. Yes, I want to change that observation. I use Puppet for deploying my blog. It's a WordPress distro with a bunch of plugins, etc. It was too slow. I ended up inelegantly using rsync from puppet to push out the distro instead, which was insanely fast. Even that didn't come for free as I'm not using a Puppetmaster at the moment, and paths got annoying. (I do accept that's probably my issue, however). Anyway, my point is that Puppet needs to give you a way to deploy a tree of files, fast. If the new type mentioned above starts to give you that, so much the better: it gets tedious to push files to your version control system, ensure that your puppetmaster is up to date, and then invoke puppet on the node that you're deploying to. What's appealing about some developer-style deploy tools is that you can push exactly what you're working on to one or more nodes and test it. My experiences with Puppet suggest that it's not so convenient. My 6 years as a build and release manager tell me that it's generally a poor idea to use two application deployment tools. Hmmm. I essentially agree on both sides: Puppet isn't yet that great at solving this problem, but using two tools sucks. We're basically still in the formative stage of what we're going to do here, but we've got some pretty good ideas. Mostly, it builds around a much more powerful data model in the catalog, combined with a centralized system that tracks inter-node dependencies. Keeping in mind that this is all still a bit vague: We'll be extending the data model to support service state dependencies and simple state machines, along with (probably) some kind of fill-in-the-value (which Markus insists on calling 'futures') catalog. This, I think, gets us most of the way to what we need on a single machine: If you have two services, where one service specifies that it being in a 'running' state requires that the other service must also be in a 'running' state, when you got to restart the required service then the requiring service can automatically be brought down first. If you have a single composite service (e.g., a web app composed of a db and apache), then you could have a specification that defines how it should behave depending on whether it should be running or not, and then external data that defines which value you want in a given case. Once we start tracking resource collection as a dependency (because one host's configuration is now dependent on another's), plus a centralized database containing all compiled catalogs, we've basically got builtin node-order dependencies, all emergent rather than declared. You could get dependencies through declaration, I think, but it doesn't scale as well. The 'external_resource' module I sent in last week[1] is a good example of what the first bit will look like, but it has a lot of here be dragons associated with it. To make it supportable in the long term, you need to add builtin interfaces for checking service state (probably with central correlation rather than direct connectivity) plus the inter-node dependency system needs to recognize this as a dependency. Obviously, this is 80% theory, 15% plan, and 5% bs, but we do have ideas for how it'll work, and we're making baby steps toward getting some of it actually done. In the meantime, I'd appreciate any results from people testing this external resource stuff. 1 - http://github.com/reductivelabs/puppet-external-resource -- The Internet, of course, is more than just a place to find pictures of people having sex with dogs. -- Time Magazine, 3 July 1995 - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet-dev] Re: [Puppet Users] Using Puppet for application deployment
On Mar 16, 2010, at 4:07 AM, David Schmitt wrote: [crossposting to puppet-dev, please trim follow-ups appropriately] On 3/16/2010 11:52 AM, Jesús Couto wrote: On Mon, Mar 15, 2010 at 3:18 PM, Michael DeHaan mich...@reductivelabs.com mailto:mich...@reductivelabs.com wrote: that are very much procedural while Puppet manifest are more useful on a description of required software level. Sort of. The long story is that we don't have a really native feeling way to model multinode deployments and workflow now, but we can think of modeling it based on a set of checkpoint conditions. On a complete pipe-dream, I'm not the one with the skills to do this comment, I think it would be great to extend the Puppet language toward site configurations. As exported resources, but more. If you could define, say, an application resource that is not on a node but on several nodes, that would model the application - this app is this and this running on those 2 servers who are on loadbalancing and this and that on those other 2, and the parts on the webservers requires the parts on the appservers that requires the parts on the database servers...dont know at what level could it be modeled to be flexible enough and not one size deploy model for all, but the idea would be to make it like Puppet goes from let me script this to let me describe how it should be, with you describing your application structucture and relationships and such. If you want to prototype something like this, you can use a define outside of a node in the site.pp and use checks against $fqdn to distribute resources among hosts. Maybe even use the external_resource type that's currently floating around to sequence the deployment. Which leads me to another idea: inter-node dependencies: | node a { mysql_db { foo: ... } } | | node b { app { x: after = AMysql_db[foo]; } } The external resource stuff does just about exactly this, except that it's not a special syntax. It's not as manageable as I'd like -- there's no way, for instance, to really understand the dependencies between hosts without reading all of the code -- but it's a good start and should help us set the model. -- Seize opportunity by the beard, for it is bald behind. -- Bulgarian Proverb - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] tidy -- ignoring sockets?
On Feb 26, 2010, at 12:07 PM, Alan Sparks wrote: I've a tidy resource for /tmp under 0.24.8, which throws errors each run due to a socket file created by xfs under /tmp/.font-unix/. It's relatively harmless, but it fills the logs with error messages... /var/log/messages.4:Jan 31 04:01:34 vm03 puppetd[15362]: (//Node[vm03]/Tidy::Olderthan[/tmp]/Tidy[/tmp/.font-unix/fs7100]/ ensure) change from /tmp/.font-unix/fs7100(age)1264176925 to anything failed: Cannot tidy files of type socket Since tidy does not have a parameter for directories or files to ignore, and there's no option to specify the types of files to consider, is there any way short of hacking the code to eliminate these errors? I don't think so. I basically threw that failure in there because I wasn't sure what the behaviour should be for anything other than the standard file types. It'd be pretty easy to fix tidy to behave appropriately if you can describe how it should actually behave. -- Take the utmost trouble to find the right thing to say, and then say it with the utmost levity. -- George Bernard Shaw - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Making Puppet run faster
On Mar 10, 2010, at 10:24 AM, Douglas Garstang wrote: We aren't using storeconfigs. Putting config in a db is crazy. I think there's some confusion here on what storeconfigs does for you - you're just caching the compiled configurations in a database, nothing else really changes. -- A government that robs Peter to pay Paul can always depend on the support of Paul. -- George Bernard Shaw - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Making Puppet run faster
On Mar 10, 2010, at 1:38 PM, Douglas Garstang wrote: On Wed, Mar 10, 2010 at 1:34 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Wed, Mar 10, 2010 at 1:17 PM, Brice Figureau brice-pup...@daysofwonder.com wrote: On 10/03/10 22:06, Douglas Garstang wrote: So, it became apparent to me, after emailing someone off list, that managing a lot of files in deep directory structures might be part of the cause. We are running 10 instances of JBOSS and 10 instances of tomcat on each of these servers. Don't ask me why, it's just the way it was done before I arrived and changing it is not trivial. On disk, each instance of JBOSS starts at /opt/jboss/current/server/tfelN (where N is the instance number) and each instance of tomcat starts at: /opt/tomcat/tfelN/starterkit/current (where N is the instance number) Do you source the whole hierarchy? Or do you only manage it? I manually looked through the puppet config and counted 25 unique files that are being managed for jboss and tomcat within these paths. If you do the math, 25 x 10 x 2 = 500. That's therefore (currently) 500 unique files that are being managed in these deep directory structures. Could that potentially be the reason behind puppets crap performance? What do you manage for those files? But no, 500 doesn't seem like a high number to me. You mentioned in another e-mail in this thread that the problem is more the 20 minutes run than the CPU. Could it be possible you have many slow execs? Or you manage many packages? This also reminds me Ohad's bug: http://projects.reductivelabs.com/issues/1719 At this stage you should probably run puppetd on the console in -- debug to see what happens (and run with --summarize too) and if it stalls. I just ran puppet in debug mode and it was obvious that most of the puppet run time was spent in checksumming files. Eg: debug: //Node[app01.fr.xxx.com]/Jboss::Instance[tfel8]/File[/opt/ jboss/current/server/tfel8/conf/jboss.web/localhost/ rewrite.properties]: Creating checksum {md5}f5d16bcc20b92631eb59514018fd34e5 ... takes a long time to run. Multiple that by several hundred files... However, when I run this on the command line: md5sum /opt/jboss/current/server/tfel8/conf/jboss.web/localhost/ rewrite.properties ... the result is instananeous... So... is puppet using a ruby library for performing md5 checksums? Is that where the performance bottle neck could be? Doug Also... I just grabbed an example online of performing an md5 checksum on a file in ruby. Ran it on the same file above. Result was instananeous... the question remains... what is puppet doing??? The short answer is, more than md5sum is. All you're seeing is the log message, you don't really know if that's what's taking all of the time. We've always known about the performance problems of using Puppet to manage large file heirarchies, which is why we generally recommend you don't do it unless you've tested that it works for your use cases. I've basically only ever seen two non-pathological cases where client runs take a long time: Either you're using a lot of yum (which we've mostly resolved), or you're doing a lot of large file heirarchies (or a few very large ones). You can look at the reports coming out of your systems to see where time is being spent, and that should tell you almost immediately. It already looks like it's files, so I'd start by trying to trim back recursion where you can, and try not to manage large files where you can avoid it. -- Silence is a text easy to misread. -- A. A. Attanasio, 'The Eagle and the Sword' - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Using puppet to automate tasks (ex: mysql slave setup)
On Mar 10, 2010, at 5:18 AM, Doug Warner wrote: I'm not sure if puppet can be coerced to do something like this, but I wanted to throw it out there as it's a process that seems fairly easy to automate. To create new mysql slaves my process goes something like this: 1) run innobackupex [1] on mysql master 2a) copy data from master to slave (takes a decent amount of time depending on wire speed and database size; usually on the order of 6-24 hrs) 2b) setup mysql slave w/ data from mysql master to start replicating binary log 3) import backup using innobackupex The problem here seems to be that I need to do things on two different hosts and only once certain things have happened. I figured I could easily specify the node that is the master and the slave in the manifests, but I'm not sure how far this gets me. I imagine through the creative use of exec's and onlyifs this should be doable, but I wanted to get other people's experiences with automating processes like this. Hi Doug, I, um, don't know if this is a good idea, but this might work for you: http://github.com/reductivelabs/puppet-external-resource Basically, I've created a simple resource that functions as a kind of gate for exactly that situation. I've tested it in very simplistic situations, but you should consider this to be experimental code and by no means a complete solution. I just made this repo public five minutes ago and wrote it for a customer last week. For long delays -- 12 hours -- this will likely be pretty spammy, because you'll get a lot of 'skipped because of failed dependencies' reports, and you'll likely want to run it with a timeout of 0 and verify that it works correctly in that case. With this, your slave would have something like: class dbslave { external_resource { db-backup: check = ..script to verify backup is complete... } db::import { mydb: , require = External_resource[db-backup] } } By default, it'll run the external resource check every 10 seconds, and if it doesn't complete within five minutes then it fails, causing all dependent resources (in this case, your import) to be skipped. You can tune both the frequency and timeout, but I haven't tested it with a timeout of 0; it might just sleep infinitely in that case. -- There is only one success - to be able to spend your life in your own way. -- Christopher Morley - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Living with Puppet...
think that's where the greatest opportunity is. The differences between the tools is healthy and gives us both the opportunity to steal ideas from each other, which is healthy and good for everyone. Our telling Ohad not to work on Foreman would be just as bad as the community telling us not to produce the Dashboard - there's not only room for competition, it's very good. That's one of my goals over the coming year -- to make Puppet even easier to contribute to, and make it clear to folks how they may do so. External integrations are of course very important to us -- but the out of the box Puppet experience will be as complete as we can make it rather than fragmenting workarounds between various external tools. This is a bit of a conflation - the Dashboard will be part of the out of the box Puppet experience for our customers, but it won't be part of everyone's ecosystem. Obviously, for us to provide the best story to our customers and users, we're going to do what we can to do as much as possible as cleanly and consistently as possible, but doing so will never preclude anyone else telling the story their way, and each individual piece - Puppet, Facter, Dashboard, and everything else -- will always be stand-alone entities. -- You can't wait for inspiration. You have to go after it with a club. -- Jack London - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet-dev] Re: [Puppet Users] Plugins in modules with environments and the puppetmaster libdir
On Feb 9, 2010, at 6:55 AM, Nigel Kersten wrote: On Mon, Feb 8, 2010 at 2:45 PM, Luke Kanies l...@reductivelabs.com wrote: On Feb 5, 2010, at 8:47 AM, Nigel Kersten wrote: On Fri, Feb 5, 2010 at 3:29 AM, Thomas Bellman bell...@nsc.liu.se wrote: Nigel Kersten wrote: So facter plugins are kind of different, as they're not actually required to be in the puppetmaster libdir. Say this was a type/provider, and you wanted to add a new parameter, but only roll it out to your testing environments. Functions also have this limitation, by the way. What do you do then? If the version in the puppetmaster libdir doesn't accept that parameter, the manifest compilation will fail for clients who *are* getting a version of the plugin that supports that parameter. You lose... Well, there are a couple of things you can do to work around this limitation. For one thing, you could run a second puppetmaster process, perhaps on another port, or listening on another IP address, or perhaps even on another machine. Another thing you can do, is to run puppet with local manifests, instead of puppetd connecting to puppetmasterd, when developing the new version of the plugin. That's what I do. It does get a bit iffy if your manifests want to fetch files from the puppetmaster (i.e. that aren't in the modules namespace) though, or otherwise need to access files that are only available on the puppetmaster. Good news, though, is that the upcoming Rowlf version of Puppet is supposed to solve this for at least resource types. At least Luke has posted patches to the devel list that I gather will do that. But it will probably still be a problem for custom functions (I have somewhat volunteered to take a look at it, but I'm unlikely to find the time before Rowlf is supposed to be out). + puppet-dev Luke, how is this going to be solved in practice? The puppetmasterd will automatically add modules/*/lib dirs to it's own libdir in the context/environment of the current client? Hmm, not quite true yet. At this point, rowlf has a bunch of refactoring around just the language stuff, not the pure-ruby stuff. We're on the path to converging the language resource types and the pure ruby Puppet::Type classes, but we're still a ways away. Part of that convergence will be fixing this problem, but I don't expect to see a real long-term fix until at least the release after rowlf - mostly just because we don't want to delay rowlf too much further. Can you give us an overview of the way this is intended to work? Not sure exactly how to answer this question, since there's a lot there. The convergence of the two classes (Puppet::Type and Puppet::Resource::Type) is complex to describe. Basically, current resource types are subclasses of Puppet::Type, and resources are instances of those subclasses. We'll be changing things so that resource types are instances of Puppet::Resource::Type, and resources are instances of Puppet::Resource. In terms of observable differences, other than the constants involved there won't really be any - it'll just make contribution, maintenance, and custom development much easier. However, it'll also enable us to do a lot of things we currently can't, like maintain non-global (i.e., environment-specific) resource types. The refactoring I did to enable the pure-ruby DSL was the main step toward this: When you use 'define' in the language, you're creating an environment-specific resource type, it's just not as functional as a builtin resource type. I think the next major release will normalize the functionality between the two, and hopefully also make it possible to use existing providers with new-style resource types. Then it's just a question of porting over the existing types to use the new class structure. I'm thinking that in the meantime I may need to encode plugin versions in their names, so when a client's manifest contains a given plugin, it's always going to refer to that version, and I script something that collates all the lib/... directories into the puppetmasterd libdir. I feel dirty. Yeah, that's ugly. I think it'd be way easier to run environment- specific masters on a different port or server, wouldn't it? Not for the number of environments we have... Ah. BTW, if this is a big priority to someone, I think it's approachable today - far more than six months ago, with recent refactoring - and I'm happy to work with someone who's committed to getting it fixed. And I know this has been coming up a lot recently, so it's getting pushed up on my priority list. What would you need from those of us who are interested in working on this with you Luke? Code? :) -- Finn's Law: Uncertainty is the final test of innovation. - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you
Re: [Puppet-dev] Re: [Puppet Users] Plugins in modules with environments and the puppetmaster libdir
On Feb 5, 2010, at 8:47 AM, Nigel Kersten wrote: On Fri, Feb 5, 2010 at 3:29 AM, Thomas Bellman bell...@nsc.liu.se wrote: Nigel Kersten wrote: So facter plugins are kind of different, as they're not actually required to be in the puppetmaster libdir. Say this was a type/provider, and you wanted to add a new parameter, but only roll it out to your testing environments. Functions also have this limitation, by the way. What do you do then? If the version in the puppetmaster libdir doesn't accept that parameter, the manifest compilation will fail for clients who *are* getting a version of the plugin that supports that parameter. You lose... Well, there are a couple of things you can do to work around this limitation. For one thing, you could run a second puppetmaster process, perhaps on another port, or listening on another IP address, or perhaps even on another machine. Another thing you can do, is to run puppet with local manifests, instead of puppetd connecting to puppetmasterd, when developing the new version of the plugin. That's what I do. It does get a bit iffy if your manifests want to fetch files from the puppetmaster (i.e. that aren't in the modules namespace) though, or otherwise need to access files that are only available on the puppetmaster. Good news, though, is that the upcoming Rowlf version of Puppet is supposed to solve this for at least resource types. At least Luke has posted patches to the devel list that I gather will do that. But it will probably still be a problem for custom functions (I have somewhat volunteered to take a look at it, but I'm unlikely to find the time before Rowlf is supposed to be out). + puppet-dev Luke, how is this going to be solved in practice? The puppetmasterd will automatically add modules/*/lib dirs to it's own libdir in the context/environment of the current client? Hmm, not quite true yet. At this point, rowlf has a bunch of refactoring around just the language stuff, not the pure-ruby stuff. We're on the path to converging the language resource types and the pure ruby Puppet::Type classes, but we're still a ways away. Part of that convergence will be fixing this problem, but I don't expect to see a real long-term fix until at least the release after rowlf - mostly just because we don't want to delay rowlf too much further. I'm thinking that in the meantime I may need to encode plugin versions in their names, so when a client's manifest contains a given plugin, it's always going to refer to that version, and I script something that collates all the lib/... directories into the puppetmasterd libdir. I feel dirty. Yeah, that's ugly. I think it'd be way easier to run environment- specific masters on a different port or server, wouldn't it? BTW, if this is a big priority to someone, I think it's approachable today - far more than six months ago, with recent refactoring - and I'm happy to work with someone who's committed to getting it fixed. And I know this has been coming up a lot recently, so it's getting pushed up on my priority list. -- Men never do evil so completely and cheerfully as when they do it from a religious conviction. --Blaise Pascal - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] commercial support
On Feb 2, 2010, at 8:24 AM, Angelo Fazzina wrote: Is there an option to purchase support for Puppet ? There definitely is - Reductive Labs (the company I founded when I started the Puppet project) provides support, training, and other professional services around Puppet. One of our favorite services is custom development -- customers have paid for Puppet's environment support, the queueing support, and much more. You can always email me directly for questions, or you can email our VP of sales, Scott Campbell, at sc...@reductivelabs.com, with questions. We're happy to provide customer references. -- The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents. --Nathaniel Borenstein - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Re: Proposals for modules naming conventions
On Dec 17, 2009, at 11:19 AM, Al @ Lab42 wrote: On 17 Dic, 17:28, David Schmitt da...@dasz.at wrote: Hi Al, Welcome back, great post! +1, except for (as predicted) #8, where I think that the rationale doesn't make sense, especially if one wants to start configuring modules via facter and/or external nodes. prefixing with the module name would make more sense for me. Regards, DavidS Hi David, thanks for the reply. You and Michael have definitively convinced me about variable name namings (modulename_ is surely a better prefix). I take the occasion of your reply to discuss deeper a topic that I've always found somehow controversial. Many use to say, if I've understood well, that in a puppet infrastructure there should only be variables generated by facts, that it's not a good idea to define custom variables at node's level (or using different ways to group/classify them). I can understand this if we talk about external nodes, when you can have powerful and easy ways to aggregate/define variables for nodes (and still they are not fact variables), but I still have to understand why and how it should be better to define variables necessary for your classes (for example an external server where to send syslog messages, which changed according to different servers' locations or test/prod status or whatever logic) in a fact. I find more difficult to write and control this logic in custom facts splattered in different modules, rather that in a single infrastructural class where all variables are defined according to custom logic and groupings, or, as I generally do, in a nodes' inheritance structure, where there are intermediate node that can define networks or geographical locations or whatever groups that are inherited by host nodes. Excuse my ignorance, if someone can enlighten and convince me on the advantages of placing the logic of a puppet infrastructure in facts, please do it. I like to redefine my beliefs :-D I'm playing a bit of catch-up on this thread, so bear with me as I work through it. First, to address using variables for logic: I would never recommend anyone rely entirely on facts for configuration - quite the opposite, I would recommend people *only* use facts for cases where the client is the only host capable of generating or discovering a given piece of data. For instance, I think it's bad form to send a fact to the client whose value is static or relies on a database (or data file) also distributed with the fact. I think server-side functions (usually doing a DB call) is a much better choice. I see, at the least, these sources of data: 1) Client facts -- discoverable and/or calculable only on the client 2) Declared client data -- declared in external node tools by a human, per-node or per-server class etc. 3) Dynamic data -- retrieved with an extlookup-style function or equivalent which essentially uses a db backend for all of its data but has some understanding of class logic that can selectively load data Then, of course, you have essentially internal temporary variables whose value entirely derives from one of these three sources. Any attempt to push any of these behaviours into a different data type will hurt. Obviously we have to answer this question in terms of standards, but for me the more interesting question is how we should develop Puppet going forward. It's obvious to all of us that Puppet doesn't perfectly solve all of these problems, and I'd much rather fix those issues than calcify standards that work around fixable problems. Here are some steps I think we need to take that will help this considerably: 1) Consider any system running without an external node tool to be in a degraded mode. That is, you've chosen to forego an entire data type in your system, so you've got less functionality. There are now multiple functional external node tools, one of them supported by Reductive Labs, so there's no good reason not to at least plan on using one in the near future. 2) Integrate an extlookup-like functionality directly into Puppet classes. This has been discussed a bit, but no real design has been proposed, much less decided upon. I'd like some kind of data interface that can support multiple backends and then have classes automatically look their data up, rather than having to trigger the lookup as functions currently require. There are some other features I think we need, but I'll add them to my response to the opening email because they're less data-focused. -- There is nothing so useless as doing efficiently that which should not be done at all. -- Peter Drucker - Luke Kanies | http://reductivelabs.com | http://madstop.com -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us
Re: [Puppet Users] Proposals for modules naming conventions
] { ensure = absent, } } - If you want an application stopped provide something like: apache::stopped inherits apache { Service[apache] { ensure = stopped, } } - If you want an application not enable at boot time provide something like: apache::disabled inherits apache { Service[apache] { enable = false, } } 7- PROPOSAL for general class configuration define (based on augeas or other inline modificators) define ssh::config ($value) { # Augeas version. augeas { sshd_config_$name: context = $operatingsystem ? { default = /files/etc/ssh/sshd_config, }, changes = set $name $value, onlyif = get $name != $value, # onlyif = match $name/*[.='$value'] size == 0, } # Davids' replaceline version (to fix) # replaceline { # sshd_config_$name: # file = /etc/ssh/sshd_config, # pattern = $name, # replacement = ^$name $value, # } } This define can be used in a class like class ssh::eal4 { # Cripto settings ssh::config { Protocol: value = 2, } ssh::config { Ciphers: value = 3des-cbc, } # X11 forwarding (You MAY allow) ssh::config { X11Forwarding: value = no, } [] } 8- PROPOSAL (don't think it will be widely liked): Variables names needed for module configuration (the ones used in templates, for example) should have a my_ prefix, in order to easily distinguish them from fact variables. Glad you retracted this. :) So, the point of this post is to know if there has been some agreement on naming standards and eventually to stir the discussion about it. My general idea is that if the community doesn't find a general agreement, a suggested standard should come from Reductive Labs, so that whoever is interested in sharing modules (for reusage) knows how to behave and, possibly, users can more easily use and integrate modules picked from different repositories. I think this is a relatively good starting point. There are a bunch of areas that it doesn't yet cover -- e.g., the whole problem of managing modules written by others, such as what to do when two people have produced a module with the same name. A lot of those will come out as the module forge starts to develop. 1 - http://projects.reductivelabs.com/issues/2596 -- Men never do evil so completely and cheerfully as when they do it from a religious conviction. --Blaise Pascal - Luke Kanies | http://reductivelabs.com | http://madstop.com -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] New developer: Jesse Wolfe
Hi all, We just hired a new developer, Jesse Wolfe: For most of the last decade, Jesse has been writing web applications and sysadmining web servers, usually at the same time. He sees programming languages as a form of user interface, and thinks the Ruby language is the best way to talk to a computer that he's found so far -- but even so, he was eager to join a project that included a parser. Recently, Jesse has been seen trying to talk small business owners into moving their servers onto the Amazon cloud, having long conversations about how to balance between object-oriented and pure- functional programming styles, and competing in programming competitions. His hobbies include drinking coffee. You might have already seen Jesse's contributions, first as a means of proving both his commitment and ability, and more recently as a contractor. His work has been great, so we're happy that we're able to bring him on full time at Reductive Labs. Cheers, Luke -- My favorite was a professor at a University I Used To Be Associated With who claimed that our requirement of a non-alphabetic character in our passwords was an abridgement of his freedom of speech. -- Jacob Haller - Luke Kanies -|- http://reductivelabs.com -|- +1(615)594-8199 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] /wiki/TypeReference is slow/timing out
On Dec 2, 2009, at 11:12 AM, Andrew Schulman wrote: It takes a really long time for http://reductivelabs.com/trac/puppet/wiki/TypeReference to render. I've noticed it for a while, but today for the first time it actually timed out on me. Any idea what's making this page take so long? Is it just too much restructured text? It is a very long page. If that is the case, then I have a suggestion to alleviate the problem: move the nagios_* types onto a separate page. For those of us who don't use Nagios, those types are a giant lump in the middle of a very long page. We're in the process of moving these pages to a static, external format, based on RailsGuides. I don't have a specific time on getting it done, but this is one of Bruce's main focuses at the moment, so I expect he'll get it working quickly. The problem, at this point, with moving the Nagios docs elsewhere is that the page is all autogenerated. It's a good point, though, that we could pretty easily manually do so. If someone wants to edit those docs for now to do exactly that, that might be a good interim step, while we're waiting for Bruce's work to come through. -- I don't want the world, I just want your half. - Luke Kanies | http://reductivelabs.com | http://madstop.com -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] /wiki/TypeReference is slow/timing out
On Dec 2, 2009, at 11:51 AM, Andrew Schulman wrote: It takes a really long time for http://reductivelabs.com/trac/puppet/wiki/TypeReference to render. I've noticed it for a while, but today for the first time it actually timed out on me. We're in the process of moving these pages to a static, external format, based on RailsGuides. I don't have a specific time on getting it done, but this is one of Bruce's main focuses at the moment, so I expect he'll get it working quickly. OK, thanks. I don't know RailsGuides, but just looking around, it seems that it uses Textile. So will all of the wiki docs be converting to Textile? Looks like Bruce will be modifying RailsGuides to use Markdown, and we'll use that. I don't relish converting the module docs that I've already built, but I can't say I'd be sorry to say goodbye to restructured text. If Bruce is developing an automated conversion tool for restructured - Textile, it would be great if he'd make it available. One of the reasons for using Markdown, in addition to it generally being a better format, is that we can't seem to find rst2textile converters, but it's easyish to do rst2markdown. [...] -- The intelligent man finds almost everything ridiculous, the sensible man hardly anything. -- Johann Wolfgang von Goethe - Luke Kanies | http://reductivelabs.com | http://madstop.com -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] Downloaded plugin does not get loaded after puppetd gets restarted.
On Nov 28, 2009, at 9:57 AM, Robert wrote: Hi When I run puppetd for the first time, it syncs ownpkg.rb from puppetmasterd just fine, and then it autoloads it. notice: /File[/var/puppet/lib/puppet/provider/ownpkg.rb]/content: content changed '{md5}efd758a6094c813f8480423b01d823ac' to '{md5} b0f1f52803738bace6724ef5bfe5318a' Finishing transaction -971820348 with 1 changes Loading downloaded plugin /var/puppet/lib/puppet/provider/ownpkg.rb Then I start puppetd again and because the file's hash did not change it's not going to be retransmitted, and therefore it's not going to be autoloaded. So later on when I try to intall a package with provider = ownpkg, it's going to fail: err: Could not run Puppet configuration client: Invalid package provider 'ownkpg' at /etc/puppet/manifests/classes/squid.pp:7 Any ideas how can i make it load it all the time? I thought I already answered this somewhere else, but maybe not. Basically, you have the wrong path for your provider - use provider/ package/ownpkg.rb, so Puppet will autoload it. -- Every great advance in natural knowledge has involved the absolute rejection of authority. --Thomas H. Huxley - Luke Kanies | http://reductivelabs.com | http://madstop.com -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] manitest - a simple tool to help your puppet development and testing
On Nov 29, 2009, at 6:18 AM, Ohad Levy wrote: If it happened to you before that someone broke your manifest because of simple change (e.g. didnt test it on all hosts/classes external nodes ... combinations) this tool might be useful for you. the idea is very simple, just try to compile the manifest based on customized facts, classes, environments and external nodes parameters (if you use it) . You need to run this script only were you develop your manifests (e.g. your puppetmaster), there is no need to try out a puppet run on each and every system type that you have. You might also find it useful to run this script in some sort of a cron or via a repo hook, to find out any broken manifests running around.. This script was originally written by a colleague of mine (Paul Kelly), however, I've adjusted it to hopefully common usage. Its brand new, so any comments / improvements (which I'm sure there are plenty) are welcomed. This is definitely very cool. It seems a bit limited because it actually runs the whole configuration, but I like it. It should definitely be straightforward to extend it to use a given host's Facts. You might also be able to get some inspiration on how to use the internal APIs by looking at puppet-test, which covers most of these bits using the internal APIs. -- I wanna hang a map of the world in my house. Then I'm gonna put pins into all the locations that I've traveled to. But first, I'm gonna have to travel to the top two corners of the map so it won't fall down. -- Mitch Hedberg - Luke Kanies | http://reductivelabs.com | http://madstop.com -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] Re: conditional restart of service
On Nov 12, 2009, at 11:58 AM, Jason Lavoie wrote: On 10/29, Peter Meier wrote: I'm trying to have a exec dependency on a service object that would keep it from being restarted if the exec fails. Unfortunately, the service gets refreshed regardless whenever the exec is run, failure or not. [...] don't set the command to refreshonly. this will trigger the exec only if it get triggered by someone else otherwise the resource counts as successful. That doesn't seem to help. Here's a simpler test manifest: service { dep: hasstatus = true, status = /bin/true status, start = /bin/true start, stop = /bin/true stop, subscribe = File[/tmp/dep], require = Exec[check-dep], } exec { check-dep: command = exit 1, path = /bin, subscribe = File[/tmp/dep], } file { /tmp/dep: content = foo, } Shouldn't the Skipping because of failed dependencies in the output below be absolute? Why is puppet still refreshing the Service[dep] (in the very next log line)? Am I misunderstanding how the dependencies should work? The short answer (as I put on the ticket) is that this is behaving as designed, because otherwise you're running in an inconsistent state. The easy fix here is to not have the service depend on the file, but rather only on the exec - the exec subscribes to the file, the service subscribes to the exec. If the exec fails, nothing happens, if it succeeds you're all good. -- Life isn't fair. It's just fairer than death, that's all. -- William Goldman - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Relicensing and copyright, starting with Facter
On Nov 10, 2009, at 1:16 PM, James Turnbull wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Paul Nasrat wrote: I'd like to make sure there is still a low cost of entry to getting patches in - so it should be possible to insert a simple pointer in a ticket to the CLA, it should also be really easy for me to discover (probably based on redmine login) if someone has signed the CLA so I can merge patches efficiently. I can add a link to the top of the New Issue template - we'll create a page that holds the document and a list of those people who've signed it. It should also be possible to modify the user account in Redmine to indicate whether they've signed or not, which might help. -- To my embarrassment I was born in bed with a lady. --Wilson Mizner - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Simple script for restoring puppet hosted files from local backup
On Nov 4, 2009, at 7:40 AM, Kenneth Holter wrote: Hi. I found this script to retrieve backed up puppet hosted files: http://markmail.org/message/nybqh3be7bcge33h ..and made some adjustsments. I've pasted the script below in case anyone else are in need of such a script: --- snip --- #!/bin/bash file=$1 BUCKETDIR=$( puppetd --configprint clientbucketdir ) PREFIX=* entries_found=0 echo Searching for local backups of file $file (this may take some time)... for f in $( find $BUCKETDIR -type f -name paths -exec grep -l $file {} \; |xargs -r ls -t); do md5sum=$( basename $(dirname $f)) filename=$( $f ) modify_time=$(stat --format '%y' $f) echo -e $filename\t$md5sum\t$modify_time entries_found=1 done if [ $entries_found -eq 1 ]; then echo echo Horray, backup(s) were found! echo * To view the contents of the file, issue this command: \filebucket -b /var/lib/puppet/clientbucket get md5sum\ echo * To restore the file, issue this command: \filebucket restore -b /var/lib/puppet/clientbucket /path/to/new/file md5sum\ else echo No entries were found. Exiting. --- snip --- Note that the script retrieves files only from the local backup directory. I added the -r argument to xargs so that the loop structure would not run unless the find command actually find a match. Without the -r switch, the loop would run even if you pasted a invalid file name, which for me caused unexpected results. Note that there's a 'filebucket' script that is actually in the bin directory in the Puppet repo. -- I hate to advocate drugs, alcohol, violence, or insanity to anyone, but they've always worked for me. -- Hunter S. Thompson - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Relicensing and copyright, starting with Facter
Hi all, As promised in the spring[1], we're finally starting to execute on our licensing and copyright strategy. At this point, our plan is to convert Puppet and Facter to the Apache license, release any further projects under the same license, and require CLAs for any significant contribution. We're not yet sure how hard or successful that plan will be, so we're going to start with Facter, and then make our plans for Puppet based on how that project goes. Our plan at this point is to follow the Apache project for our CLAs. For example, here's the individual contributor agreement: http://www.apache.org/licenses/icla.txt However, that is not set in stone. This project necessarily involves conversations with lawyers on our end, because we'll need to be able to make promises to customers, and those promises need the appropriate documentation to back them up. As everyone knows, lawyers are crazy, so those conversations might result in some kind of change of the CLA. Over the next week or two, we'll be adding the necessary documentation to the web site, hopefully with all of the questions answered. Anyone who's contributed to Facter should also expect contact from Beth Raby, who works for me and will be tracking individual contributors down and managing who's signed what. Once we've got all of the contributions either assigned or rewritten, we'll officially relicense Facter to the latest Apache license, and reassess our plan from there. If anyone's interested in participating in this project, please let me know, as I'm sure we can use the help. Does that work for everyone? 1 - http://groups.google.com/group/puppet-users/browse_thread/thread/c7121b1d5b392ad3/0919e1d229ef3d3d?lnk=gstq=licensing#0919e1d229ef3d3d -- Aizu's Second Law: What changes the world is communication, not information. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Puppet Not Running chkconfig correctly.
On Nov 9, 2009, at 5:27 PM, Douglas Garstang wrote: So, I noticed that when adding a service to puppet, puppet is running a chkconfig service. However, as far as I can tell, puppet should be running a chkconfig --add service, otherwise the symlinks don't get created from the service in /etc/rc.d/rc6.d back to the service in /etc/init.d. As as a result, the service is not stopped on shut down. I must be missing something here... Anyone? Have you tested that this is the case? Because I'm essentially positive that Puppet is using chkconfig correctly. I don't know enough about chkconfig to confirm this for you, but lots of people are using it happily. And there's no need to double post. -- If a dog jumps onto your lap it is because he is fond of you; but if a cat does the same thing it is because your lap is warmer. -- Alfred North Whitehead - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: The /var/lib/puppet/clientbucket directory grew 4GB in minutes, filling up /var on production server
On Oct 23, 2009, at 12:44 AM, Kenneth Holter wrote: Hi. Last night the /var/lib/puppet/clientbucktet directory on one of our production servers suddenly grew about 4 GB, filling up the entire / var partition. Around that time, I see that there was a problem with one of our CIFS mount points (i.e. our CIFS client had problems reaching our CIFS server). We're using puppet to set up the CIFS mount point. Under the clientbucket folder, I have a great number of folders and subfolders like this: --- 0/2/0/f/4/f/3/0/020f4f30aa1670825e81cae2faac4d1d/paths 0/2/0/e/b/d/3/2/020ebd32755675f65bab06b96d7f2265/paths 0/2/0/c/0/1/d/7/020c01d71491b1139b0f23b6ba81d410/paths --- Investigating the contents of a few of the paths-files like the ones above, if find that the contents seems to be related to the mount points. I found this by grepping for the name of the mount point withing these filers. I looks like each of the paths-file contains the name of exactly one file (seems to be different name within each of the paths-files) found under the mount point. What exactly is the clientbucket folder used for? It's not the same as filebucket I presume. Next: How come the paths-files above contain names of individual files found within the CIFS mount point? Anyone know why this is so, and why the clientbucket folder so suddenly got filled up with those paths-files? And how can I make sure this doesn't happen again (at least not on our production servers)? I've only ever seen this happen in one other case, and it was related to NFS - something caused Puppet to back up a whole filesystem to the filebucket: http://projects.reductivelabs.com/issues/2019 It'd be awesome if you can track down the problem, because we're stymied. As to why the individual file names are in the 'paths' files - that's what they do - hold the paths that have been backed up there. -- Due to circumstances beyond your control, you are master of your fate and captain of your soul. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Reductive Labs people
Hi all, I've been hesitant to send Reductive Labs updates to the community lists, but I've been told that not knowing who works for us makes some communication difficult. So, I'm going to start sending notifications when we bring people on (at least, those I expect to spend time in the community), and I'll start with a list of people we've brought on recently. Markus Roberts and Rein Henrichs have joined as developers, and Bruce Williams will be working with them starting in November. Markus has been working in the computer industry since the 1900's, when computers were large, slow, and simple, and programming them was still pretending to be a branch of mathematics instead of a black art. He has programmed professionally in over two dozen languages (several of which he wrote) and unprofessionally in many more. He prides himself on his design and debugging skills, which are objectively verifiable, and his sense of humour, which is not. Rein started out in the design world but quickly discovered an affinity for development. He's fond of talking to people about patterns and practices and other ideas that can help write better software. He occasionally writes software of his own in an attempt to put those practices into practice, so to speak. Rein is most fond of Ruby, but has found endearing qualities in a number of languages, from Haskell to Smalltalk to Intercal, and even Perl, and enjoys the new perspective he gains by learning an unfamiliar language. As a Ruby developer since 2001, Bruce Williams has been pleased to see his favorite OO language rise out of obscurity the last few years -- and pay the bills in the process. Bruce has contributed to or served as the technical editor for a number of Ruby-related books, speaks at conferences when inspiration strikes, and is an aimless open source hacker, language designer, graphic artist, photographer, amateur chef... and serial enthusiast in his copious free time. Dan Bode will be helping with training, professional services, and whatever else we can convince him to do. Dan is joining Reductive Labs after completing his consulting world tour; with stops in London, Osaka, Budapest, and finally Vienna. Dan will miss speaking broken Hungarian and German, but cant wait to indulge in the conveniences of America, like take-out food and shopping on Sundays. He has just completed an audit trail and compliance based IT solution for his customer in Vienna using Puppet. He enjoyed working with Puppet and immediately saw that its flexibility and functionality made it a great tool for creating some really cool automation solutions. He has also enjoyed learning ruby and thinks that it might actually inspire him to get back into programming. Scott Campbell has joined us as our VP of Sales, business development, and whatever else he can convince me to do to make money. Scott's primary goal in life is to make sure that his daughters get their education paid for. Being slightly masochistic, Scott has made a career in leading the sales efforts of several successful software startup organizations, taking them from their early stages of sales and marketing traction to leaders in their respective marketplaces. Most recently, he spent 4 years heading the world-wide sales organization at Jive Software. Joining the organization as one of the first employees, Scott guided Jive to a leadership position in the emerging Web 2.0 space. In a more relevant vein to Puppet, prior to Jive, Scott spent 6 years at Tripwire, Inc., a provider of enterprise compliance and configuration management solutions. While at Tripwire, he lead the Western Region Field Sales organization. Before Tripwire, he spent 5 years at Rogue Wave Software, a maker of C++ and Java development tools. At Rogue Wave, Scott held several roles including the Director of Business Development, Director of Western Region Sales, and Director of Inside sales. Lastly, Andrew Shafer has left Reductive Labs. We'll also be maintaining a 'Team' page on our site that hopefully covers this same information, which you should be able to use as a handy reference. -- Get forgiveness now -- tomorrow you may no longer feel guilty. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: access exported resources in template
On Oct 21, 2009, at 3:34 AM, Sven Mueller wrote: Luke Kanies schrieb: On Oct 19, 2009, at 6:19 AM, Bernhard Bock wrote: Hi, I'm trying to develop a class that autogenerates a config file based on an .erb template. It shall populate the config file with data exported from various hosts. Some pseudocode to clarify my issue: node n1 { @@mytype { name: property = foo } } template.erb: % mytype.each do |bar| % %= bar.name % %= bar.property % % end % My question is: How can I access and iterate through the exported resources in the template? mytype.each will not work... This is getting into semi-supported internal APIs, but you can get the resource list from the catalog, something like this: compiler.catalog.vertices.each do |resource| resource.title resource[:property] end Being semi-supported or not, can I get to this from a template? I tried with lookupvar('compiler') and lookupvar('compiler.catalog.vertices'), but lookupvar returns not the variable, but a string. And that is empty in both cases. Do I need to define my own function to return something more useful? Ah; I think you need scope.compiler.catalog, sorry. We should make that visible within the template, I guess. Also: how can I check which type the resource has? resource.type seems wrong (as I expect that the ruby Type is not the same as the type)? It actually is 'resource.type' - Ruby has deprecated 'type' as a means of getting the class, so I was comfortable using it. The idea Bernhard had, if I understand it correctly, is to use a custom type just to store the wanted data (and being a type, not a variable, many instances can exist and get exported). The data is then collected by a template. For me, this has two advantages (over other solutions available to collect data from multiple hosts): 1) The user can change the template as needed 2) The resulting file is not edited, but recreated on each run, so its content is deterministic after the run, even if someone edited it manually beforehand. The downsides, though, are that you're directly mapping the resource to a file, which is a bit limited unless you're using file fragments of some kind. And if you're doing that, why not just export a defined type that generates the file with a normal template? -- Between two evils, I always pick the one I never tried before. -- Mae West - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Failed to generate additional resources during transaction
On Oct 21, 2009, at 8:22 AM, Reno wrote: Hello, puppetd --test return this output: err: /File[/var/lib/puppet/lib]: Failed to generate additional resources during transaction: Cannot access mount[plugins] err: /File[/var/lib/puppet/lib]: Failed to retrieve current state of resource: Cannot access mount[plugins] Could not describe /plugins: Cannot access mount[plugins] how to fix it? You've got pluginsync enabled but it looks like you've either configured your fileserver.conf to refuse access to plugins, or you've not got any plugins. You can safely ignore this error, though. -- The real art of conversation is not only to say the right thing at the right place but to leave unsaid the wrong thing at the tempting moment. -- Dorothy Nevill - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Can't create user on OS X
On Oct 18, 2009, at 9:05 PM, Tony Williams wrote: Hi, I'm just starting to get a puppet config system running on OS X 10.6 and have hit a snag. I am attempting to create a user and get an error on the client :- (//User[ladmin]) Failed to retrieve current state of resource: undefined method '' for nil:NilClass The manifest I am using is the output of 'ralsh user ladmin' on another 10.6 box with the uid shifted to 901. Any clues? Is this a problem with 10.6? What's the stack trace on that? (Retrieved running with --trace.) AFAIK user management works fine on 10.6, but I don't have any 10.6 boxes so I can't actually try it. -- Don't throw away the old bucket until you know whether the new one holds water. -- Swedish Proverb - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: CPU on client ?
On Oct 19, 2009, at 3:01 AM, Xavier Beaudouin wrote: Hum... People there think it is use to mutch... more than 20% during a run... I'd expect Puppet to use as much cpu as possible while it's actively configuring a box, unless it's IO bound, and the only way around this is to nice it, which as mentioned means the services it starts are also niced, which is probably a bad idea. In other words, you're kind of stuck unless you want to somehow just put a sleep in between each resource or something weird. -- He is indebted to his memory for his jests and to his imagination for his facts. --Richard Brinsley Sheridan - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: How to determine if there is a room for a copied file in puppet before copying?
On Oct 19, 2009, at 5:29 AM, Adam Ryczkowski wrote: Really, though, you probably don't want to use Puppet to copy a 1gb file - it still copies the files into memory. Is this true also for local copies (i.e. copies which doesn't involve file server, and where source and destination are on the same system)? You know, I've never really thought about them differently, but yeah, it is true, and that could probably easily be optimized out. It just comes up so rarely that I haven't considered it. Maybe open that as a bug? -- I have lost friends, some by death... others through sheer inability to cross the street. -- Virginia Woolf - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: access exported resources in template
On Oct 19, 2009, at 6:19 AM, Bernhard Bock wrote: Hi, I'm trying to develop a class that autogenerates a config file based on an .erb template. It shall populate the config file with data exported from various hosts. Some pseudocode to clarify my issue: node n1 { @@mytype { name: property = foo } } template.erb: % mytype.each do |bar| % %= bar.name % %= bar.property % % end % My question is: How can I access and iterate through the exported resources in the template? mytype.each will not work... This is getting into semi-supported internal APIs, but you can get the resource list from the catalog, something like this: compiler.catalog.vertices.each do |resource| resource.title resource[:property] end -- What happens to the hole when the cheese is gone? -- Bertolt Brecht - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: How to handle failures of resources
On Oct 19, 2009, at 7:56 AM, LdvT wrote: I wouldn't mind having failure detection. Say somehow a bad copy of a .conf file is distributed; and the service fails to start. If that can be detected and used as a condition, puppet could than call up another manifest to drop in a default/backup copy of the .conf file and restart the service almost immediately. Toss in a notify function on that manifest, and it would be a very handy feature for making changes on diverse production systems. My goal has always been to support this, but I've never quite gotten there, and it's never seemed to matter enough to people that. At the least, you need every resource to be reversible (including execs), and you need a more consistent internal event log than we currently maintain, but I think ordering issues become really complicated too -- if you installed a package then started a service, you have to do them in the inverse order, but if you modified a file and restarted the service then you have to do them in the same order. Basically, you need a much richer language for talking about dependencies, and I think that's the real complexity. -- Risk! Risk anything! Care no more for the opinions of others, for those voices. Do the hardest thing on earth for you. Act for yourself. Face the truth. -- Katherine Mansfield - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: any plans to support pkgutil?
On Oct 19, 2009, at 7:24 PM, windowsrefund wrote: Seems that blastwave is all about pkgutil now. Are there any plans to support this? We don't really target specific providers - in general, people who want the support provide it (heh heh). We've got enough package providers at this point it should be pretty darn easy to write a new one, tests and everything. -- If a `religion' is defined to be a system of ideas that contains unprovable statements, then Godel taught us that mathematics is not only a religion, it is the only religion that can prove itself to be one. -- John Barrow - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: trouble with puppetrun on 0.24.8
puppetmasterd[14811]: Processing reports tagmail, log for devel05.devel.local Oct 20 12:22:57 devel-111 puppetmasterd[14811]: Processing reports tagmail, log for devel05.devel.local Oct 20 12:22:58 devel-111 puppetmasterd[14811]: Processing reports tagmail, log for devel05.devel.local Oct 20 12:22:58 devel-111 puppetmasterd[14811]: Processing reports tagmail, log for devel05.devel.local - puppet client's /var/log/messages: Oct 20 12:22:24 devel05 puppetd[28835]: devel-111.devel.local (172.25.195.111) triggered run Oct 20 12:22:34 devel05 puppetd[28835]: Starting catalog run Oct 20 12:22:43 devel05 puppetd[28835]: (//cron_www_g1/File[/var/ spool/ cron/www]) Filebucketed to with sum ef042c30a04a3f8b892e4be3a1009c53 Oct 20 12:22:43 devel05 puppetd[28835]: (//cron_www_g1/File[/var/ spool/ cron/www]/source) replacing from source puppet://devel-111.devel.local/data/bw_base/var/spool/cron/www-g1 with contents {md5}7b2f019b56fa8593d4e3973edc89d83c Oct 20 12:22:58 devel05 puppetd[28835]: Finished catalog run in 24.22 seconds - puppetmaster server's puppet.conf [main] vardir = /var/lib/puppet logdir = /var/log/puppet rundir = /var/run/puppet ssldir = $vardir/ssl [puppetmasterd] reports = tagmail, log reportfrom = *...@***.*** tagmail.conf all: *...@***.*** fileserver.conf [data] path /var/lib/puppet/data allow * site.pp $fileserver = 'devel-111.devel.local' node 'devel05.devel.local' { include 'cron_www_g1' } class cron_www_g1 { file { '/var/spool/cron/www': source = puppet://$fileserver/data/bw_base/var/spool/cron/www- g1, mode = 600, owner = 'www', group = 'root'; } } - puppet client's puppet.conf [main] vardir = /var/lib/puppet logdir = /var/log/puppet rundir = /var/run/puppet ssldir = $vardir/ssl [puppetd] configtimeout = 300 server = devel-111.devel.local daemonize = true listen = true report = true namespaceauth.conf [puppetrunner] allow devel-111.devel.local /etc/sysconfig/puppet PUPPET_EXTRA_OPTS=--no-client Why is this set? -- Ours is the age that is proud of machines that think and suspicious of men who try to. -- H. Mumford Jones - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Using the Puppet language to describe installation parameters.
On Oct 20, 2009, at 3:05 PM, James Turnbull wrote: 2009/10/21 Cameron cr...@kojeware.com: I would like to capture the description of a computer platform, either physical or virtual, and use this description as the basis for machine generating pre-configured appliances. Puppet appears ideal for maintaining the configuration of an appliance once it has been created. I'm wondering if the Puppet language could also be used to describe the computer platform in sufficient detail to drive the image creation process in a manner similar to livecd and Anaconda/ Kickstart. Kickstart is too limited to describe a platform sufficiently and livecd seems to be closely tied to the host platform running the creation process. If the Puppet is descriptive enough then a ruby- based tool could be developed to generate a virtual images for various platforms based on a detailed machine description. A tool could also be created to generate a Kickstart file based on the description to facilitate installation from media. I think this is feasible - have a look at the ralsh binary as an example of how some of this might work to model an existing host. I am also sure that Ohad (who wrote The Foreman - http://theforeman.org/) might have some ideas in this direction also. As a further pointer, looking at the 'cft' tool that David Lutterkort (I think) wrote, you should get an idea for what it looks like to do this. -- Don't hit at all if it is honorably possible to avoid hitting; but never hit soft! -- Theodore Roosevelt - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Arbitrary 3rd party installers
On Oct 20, 2009, at 3:00 PM, Andrew S wrote: Hi all, I've just started deploying a puppet infrastructure, and have run across what I'm sure is a common problem - third party software that does not use the systems package manager, instead using their own script/binary blob/etc. Now my environment doesn't have any NFS at present (and I'm loath to add it for just this one purpose), and though I could wget the file and checksum it I'd prefer to manage all configuration content through puppet and it's filebuckets. My first cut at doing this was an exec that required a file resource for the installer, however this means the install package remains on the system. Is there some method or trick I'm missing here? If not, I'm considering writing a provider for package that would source the installer from a filebucket and run it, and potentially uninstall if the package has that option - problems with this approach are of course where you put the installer (and having the space etc), being sure that the third party provided installer is idempotent, and checking that the software is installed. Would this be useful, or is it foolishness? It's probably less foolish than my other plan, which was to add source to exec. :) FWIW the software I'm looking at here is Netbackup, EMC Symcli and the HP Proliant support pack. And potentially others. :/ This is definitely a common problem, but AFAIK there's no real common solution. The only real thing I can recommend is either 1) package the software yourself (by far the best option) or 2) use a defined type to do a wget, install, and rm of the tarball. Really, if you look at the Blastwave pkg-get script, that's pretty much what it does, so you'd be walking in the footsteps of giants or whatever. -- The world tolerates conceit from those who are successful, but not from anybody else. -- John Blake - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: List of puppet builtin variables apart from those from facter
On Oct 20, 2009, at 8:26 AM, Johan Finnved wrote: Is there a list of builtin variables that get addad to thos from facter. I have found $server and $servername and $environment in examples from the puppet documentation but I would like a comprehensive list and a way to dump all values. I know that I can add custom facts, but I prefer looking for builtins to avoid reinventing the wheel. In looking at the code (lib/puppet/indirector/catalog/compiler.rb), I see servername, serverip, and serverversion. I'm pretty sure that's it. Environment should be from the client, but not from Facter so I guess it's not obvious. -- The world is round; it has no point. -- Adrienne E. Gusoff - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: CA Not Found
On Oct 15, 2009, at 1:04 AM, Brice Figureau wrote: On Wed, 2009-10-14 at 15:19 -0700, Douglas Garstang wrote: Can someone tell me what this means? I am getting this in /var/log/puppet/masterhttp.log on the server. [2009-10-14 15:07:35] DEBUG accept: 10.10.1.23:33626 [2009-10-14 15:07:35] ERROR `/production/certificate/ca' not found. [2009-10-14 15:07:35] DEBUG close: 10.10.1.23:33626 This is with puppet 0.24.8. Happens when puppetmaster starts up. This looks like a 0.25 client connecting to a 0.24.8 master which is a setup that can't work. This, and some serialization issues, are what are driving the release of 0.25.1, which it looks like should be out this week. Until then, using a certificate generated by a 0.24 server doesn't work with 0.25 clients unless you hand-copy the ca.pem to the place where the client expects it. -- I do not feel obliged to believe that the same God who has endowed us with sense, reason, and intellect has intended us to forgo their use. -- Galileo Galilei - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: req on a file distributed under recursive dir
On Oct 15, 2009, at 6:51 AM, Arnau Bria wrote: Hi all, I'm not sure if next conf is going to work: I'd like to distribute a dir in recurse way, but then add a req on a certain file that is under that reurse dir. Example: file { /opt/localconf: ensure = directory, owner = root, group = root, mode= 700, recurse = true, source = puppet://ser01.pic.es/ gLite/opt/localconf_test, } But then do some notify like: file { /opt/localconf/gLite3.1/yaim: recurse = true, owner = root, group = root, mode= 700, source = puppet://ser01.pic.es/wn_yaim/opt/ localconf/gLite3.1/yaim, notify = Exec[yaim_conf_32], } Is this conf going to work? source of both files is the same. This doesn't work, unfortunately - the only choice is to notify on the whole directory. I *really* wanted this to work, but we need to resolve all of the relationships before we can sort the resources, and the files discovered through recursion don't exist at that stage. -- I have learned to use the word 'impossible' with the greatest caution. -- Wernher von Braun - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Service bug?
On Oct 15, 2009, at 3:10 PM, Dan Bode wrote: there is also a param for service called pattern that allows you to specify the regex that should be used to determine the process (in case one of them doesnt properly implement status) This is almost certainly the issue - Puppet just looks for the service name in the process table, anywhere, if your init script doesn't have a 'status' option and/or you haven't told Puppet to use it. Try specifying hasstatus = true or a pattern. On Thu, Oct 15, 2009 at 8:53 PM, Matthias Saou th...@spam.spam.spam.spam.spam.spam.spam.egg.and.spam.freshrpms.net wrote: Douglas Garstang doug.garst...@gmail.com wrote: [...] It seems to me like there might be a bug here. Puppet appears to think the syslog-ng and syslog service are the same thing and stops syslog-ng instead of syslog. If I change the name of the syslog service, like this... service { XXXsyslog: ensure = stopped, enable = false; } then puppet does NOT stop syslog-ng. Is it doing a regex search on the first part of the service name or something and stopping when it gets a match? I think puppet looks for the process name by default. What you want to do is use hasstatus = true after making sure that service syslog status returns a correct exit status (i.e. zero only when the service is actually running). Matthias -- Hoare's Law of Large Problems: Inside every large problem is a small problem struggling to get out. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: How to handle failures of resources
On Oct 18, 2009, at 2:15 AM, Adam Ryczkowski wrote: Welcome all, Resources can depend one from each other, and failure of a required resource prevent the dependants from being run. But how to trap these failures and handle them? Is there any way to e.g. set a variable $error_happened to true if some promise about the resource couldn't be kept? Maybe even there is a way to capture the error string? Some preventive actions can be automated, and Puppet seems to be a good place to implement them. And users who program Puppet are encouraged to keep from external scripts as far as they could. What are your goals here? There isn't a lot of room for programming these aspects of Puppet from within the language, but you're the first person to ask for this kind of feature, so for all I know, what you're asking for might be straightforward to add. -- A conservative is a man who believes that nothing should be done for the first time. --Alfred E. Wiggam - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: How to determine if there is a room for a copied file in puppet before copying?
On Oct 18, 2009, at 2:15 AM, Adam Ryczkowski wrote: Good afternoon all, How one can predict a problem with copying before puppet actualy starts it? Copying is expensive, because I'm talking about many GB of data. I suspect that it should be easy to know how much free space and how many free nodes are available on the target device. I realize that it is not so easy to accurately predict the space requirements beforehand, but from the other hand, since I don't use compressed file systems, there are obvious checks one can make to predict a failure in many cases. One cannot fit directory of 1GB files when there is only 500MB free space on target... This would be possible once we move the Exec checks into metaparams. Someone's working on that right now and we're shepherding it in, but it's probably not going to make it until the next major release at the end of the year. Really, though, you probably don't want to use Puppet to copy a 1gb file - it still copies the files into memory. Use an exec, for now, and have it conditional on there being space. Or, of course, use NFS. :) -- You don't learn anything the second time you're kicked by a mule. -- Anonymous Texan - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: trouble with custom type on 0.24.8
On Sep 10, 2009, at 6:48 AM, Justin Kinney wrote: I'm having trouble getting a simple custom type to work. Clients are giving me the following error: Could not retrieve catalog: Could not find resource type zypper_repo at /etc/puppet/manifests/nodes/mgt.pp:33 on node host.fqdn The custom type is present in the /var/lib/puppet/lib/puppet/type directory on both clients and server (via pluginsync), but it's not working. My node.pp, init.pp for the module, and custom type are listed below. Any ideas? Does the type compile? E.g., if you do 'ruby -rpuppet file', do you get an error? If you load that file directly in irb using 'load', can you retrieve the type with Puppet::Type.type(:...)? -- We cannot really love anybody with whom we never laugh. --Agnes Repplier - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Activerecord and 0.25 issues
' /Library/Ruby/Site/1.8/puppet/util/settings.rb:565:in `each' /Library/Ruby/Site/1.8/puppet/util/settings.rb:565:in `to_catalog' /Library/Ruby/Site/1.8/puppet/util/settings.rb:625:in `use' /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ 1.8/sync.rb:229:in `synchronize' /Library/Ruby/Site/1.8/puppet/util/settings.rb:619:in `use' /Library/Ruby/Site/1.8/puppet/indirector/ssl_file.rb:50:in `initialize' /Library/Ruby/Site/1.8/puppet/indirector/indirection.rb:310:in `new' /Library/Ruby/Site/1.8/puppet/indirector/indirection.rb:310:in `make_terminus' /Library/Ruby/Site/1.8/puppet/indirector/indirection.rb:130:in `terminus' /Library/Ruby/Site/1.8/puppet/indirector/indirection.rb:39:in `cache' /Library/Ruby/Site/1.8/puppet/indirector/indirection.rb:213:in `find_in_cache' /Library/Ruby/Site/1.8/puppet/indirector/indirection.rb:189:in `find' /Library/Ruby/Site/1.8/puppet/indirector.rb:51:in `find' /Library/Ruby/Site/1.8/puppet/ssl/host.rb:175:in `certificate' /Library/Ruby/Site/1.8/puppet/ssl/certificate_authority.rb:241:in `setup' /Library/Ruby/Site/1.8/puppet/ssl/certificate_authority.rb:154:in `initialize' /Library/Ruby/Site/1.8/puppet/ssl/certificate_authority.rb:31:in `new' /Library/Ruby/Site/1.8/puppet/ssl/certificate_authority.rb:31:in `init_singleton_instance' /Library/Ruby/Site/1.8/puppet/util/cacher.rb:106:in `send' /Library/Ruby/Site/1.8/puppet/util/cacher.rb:106:in `cached_value' /Library/Ruby/Site/1.8/puppet/util/cacher.rb:46:in `singleton_instance' /Library/Ruby/Site/1.8/puppet/ssl/certificate_authority.rb:45:in `instance' /Library/Ruby/Site/1.8/puppet/application/puppetmasterd.rb:163:in `run_setup' /Library/Ruby/Site/1.8/puppet/application.rb:216:in `run' /Library/Ruby/Site/1.8/puppet/application.rb:306:in `exit_on_fail' /Library/Ruby/Site/1.8/puppet/application.rb:216:in `run' /usr/sbin/puppetmasterd:66 /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/ dependencies.rb:440:in `load_missing_constant': uninitialized constant Puppet::Network::Handler (NameError) from /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/ active_support/dependencies.rb:80:in `const_missing' from /Library/Ruby/Site/1.8/puppet/network/server.rb:105:in `register_xmlrpc' from /Library/Ruby/Site/1.8/puppet/network/server.rb:104:in `each' from /Library/Ruby/Site/1.8/puppet/network/server.rb:104:in `register_xmlrpc' from /Library/Ruby/Site/1.8/puppet/network/server.rb:72:in `initialize' from /Library/Ruby/Site/1.8/puppet/application/puppetmasterd.rb: 112:in `new' from /Library/Ruby/Site/1.8/puppet/application/puppetmasterd.rb: 112:in `main' from /Library/Ruby/Site/1.8/puppet/application.rb:226:in `send' from /Library/Ruby/Site/1.8/puppet/application.rb:226:in `run_command' from /Library/Ruby/Site/1.8/puppet/application.rb:217:in `run' from /Library/Ruby/Site/1.8/puppet/application.rb:306:in `exit_on_fail' from /Library/Ruby/Site/1.8/puppet/application.rb:217:in `run' from /usr/sbin/puppetmasterd:66 --- Thanks, Allan Marcus 505-667-5666 On Sep 9, 2009, at 5:01 PM, Luke Kanies wrote: Can we get a stack trace for that? If you start puppetmasterd with -- no-daemonize --trace, you should get stack traces on stdout. On Sep 9, 2009, at 12:47 PM, Allan Marcus wrote: More info. I see the following in /var/log/system.log: Sep 9 13:44:29 puppet-dev puppetmasterd[46746]: Could not create resources for managing Puppet's files and directories in sections [:main, :puppetmasterd, :ssl]: undefined local variable or method `x' for main:Object Sep 9 13:44:29 puppet-dev puppetmasterd[46746]: Could not create resources for managing Puppet's files and directories in sections [:ca]: undefined local variable or method `x' for main:Object Sep 9 13:44:29 puppet-dev puppetmasterd[46746]: Could not create resources for managing Puppet's files and directories in sections [:main, :ssl, :ca]: undefined local variable or method `x' for main:Object Sep 9 13:44:29 puppet-dev puppetmasterd[46746]: Could not create resources for managing Puppet's files and directories in sections [:main, :ssl]: undefined local variable or method `x' for main:Object --- Thanks, Allan Marcus 505-667-5666 On Sep 9, 2009, at 1:22 PM, Allan Marcus wrote: Ug. I updated ActiveRecord and now I get a new error (see below). any ideas? --- Thanks, Allan Marcus 505-667-5666 bash-3.2# gem list *** LOCAL GEMS *** actionmailer (2.2.2, 1.3.6) actionpack (2.2.2, 1.13.6) actionwebservice (1.2.6) activerecord (2.3.4, 2.2.2, 1.15.6) activeresource (2.3.4, 2.2.2) activesupport (2.3.4, 2.2.2, 1.4.4) acts_as_ferret (0.4.3) capistrano (2.5.2) cgi_multipart_eof_fix (2.5.0) daemons (1.0.10) dnssd (0.6.0) fastthread (1.0.1) fcgi (0.8.7) ferret (0.11.6) gem_plugin (0.2.3) highline (1.5.0) hpricot (0.6.164) libxml-ruby (1.1.2) mongrel (1.1.5
[Puppet Users] Re: Pluginsync always downloads the same unchanged file
On Sep 14, 2009, at 11:20 AM, Bostjan Skufca wrote: Hi! I have developed couple of plugins and puppet is syncing them. But it always downloads one particular file disregarding the fact that it has not changed at all. The md5 hash it displays in the log is indeed different, but if I do md5sum on the file it displays the correct hash. Can someone hint me what could be wrong or what am I doing wrong b. The only time I've ever seen this happen is when something on the local machine is rewriting the file as it's going to disk, such as SELinux likes to do. That doesn't seem appropriate here, so I've no idea. -- There is nothing so useless as doing efficiently that which should not be done at all. -- Peter Drucker - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Puppet Camp codefest prelude
I'll be arriving in SJC on Monday and making it up to the city on Tuesday evening, and I'm also staying in the Serrano. -- Levy's Law: The truth is always more interesting than your preconception of what it might be. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Activerecord and 0.25 issues
Can we get a stack trace for that? If you start puppetmasterd with -- no-daemonize --trace, you should get stack traces on stdout. On Sep 9, 2009, at 12:47 PM, Allan Marcus wrote: More info. I see the following in /var/log/system.log: Sep 9 13:44:29 puppet-dev puppetmasterd[46746]: Could not create resources for managing Puppet's files and directories in sections [:main, :puppetmasterd, :ssl]: undefined local variable or method `x' for main:Object Sep 9 13:44:29 puppet-dev puppetmasterd[46746]: Could not create resources for managing Puppet's files and directories in sections [:ca]: undefined local variable or method `x' for main:Object Sep 9 13:44:29 puppet-dev puppetmasterd[46746]: Could not create resources for managing Puppet's files and directories in sections [:main, :ssl, :ca]: undefined local variable or method `x' for main:Object Sep 9 13:44:29 puppet-dev puppetmasterd[46746]: Could not create resources for managing Puppet's files and directories in sections [:main, :ssl]: undefined local variable or method `x' for main:Object --- Thanks, Allan Marcus 505-667-5666 On Sep 9, 2009, at 1:22 PM, Allan Marcus wrote: Ug. I updated ActiveRecord and now I get a new error (see below). any ideas? --- Thanks, Allan Marcus 505-667-5666 bash-3.2# gem list *** LOCAL GEMS *** actionmailer (2.2.2, 1.3.6) actionpack (2.2.2, 1.13.6) actionwebservice (1.2.6) activerecord (2.3.4, 2.2.2, 1.15.6) activeresource (2.3.4, 2.2.2) activesupport (2.3.4, 2.2.2, 1.4.4) acts_as_ferret (0.4.3) capistrano (2.5.2) cgi_multipart_eof_fix (2.5.0) daemons (1.0.10) dnssd (0.6.0) fastthread (1.0.1) fcgi (0.8.7) ferret (0.11.6) gem_plugin (0.2.3) highline (1.5.0) hpricot (0.6.164) libxml-ruby (1.1.2) mongrel (1.1.5) mysql (2.7) needle (1.3.0) net-scp (1.0.1) net-sftp (2.0.1, 1.1.1) net-ssh (2.0.4, 1.1.4) net-ssh-gateway (1.0.0) rails (2.2.2, 1.2.6) rake (0.8.3) RedCloth (4.1.1) ruby-openid (2.1.2) ruby-yadis (0.3.4) rubynode (0.1.5) sqlite3-ruby (1.2.4) termios (0.9.4) xmpp4r (0.4) bash-3.2# puppetmasterd --no-daemonize /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/ dependencies.rb:440:in `load_missing_constant': uninitialized constant Puppet::Network::Handler (NameError) from /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/ active_support/dependencies.rb:80:in `const_missing' from /Library/Ruby/Site/1.8/puppet/network/server.rb:105:in `register_xmlrpc' from /Library/Ruby/Site/1.8/puppet/network/server.rb:104:in `each' from /Library/Ruby/Site/1.8/puppet/network/server.rb:104:in `register_xmlrpc' from /Library/Ruby/Site/1.8/puppet/network/server.rb:72:in `initialize' from /Library/Ruby/Site/1.8/puppet/application/puppetmasterd.rb: 112:in `new' from /Library/Ruby/Site/1.8/puppet/application/puppetmasterd.rb: 112:in `main' from /Library/Ruby/Site/1.8/puppet/application.rb:226:in `send' from /Library/Ruby/Site/1.8/puppet/application.rb:226:in `run_command' from /Library/Ruby/Site/1.8/puppet/application.rb:217:in `run' from /Library/Ruby/Site/1.8/puppet/application.rb:306:in `exit_on_fail' from /Library/Ruby/Site/1.8/puppet/application.rb:217:in `run' from /usr/sbin/puppetmasterd:66 -- Talent hits a target no one else can hit; Genius hits a target no one else can see. -- Arthur Schopenhauer - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: /etc puppet or some of the directories can't be symlinks.
On Sep 6, 2009, at 3:59 PM, Tim Uckun wrote: For development purposes I have set up /etc/puppet to be a symlink to /home/me/puppet/etc. Every time I run puppetmasterd the link id destroyes and the directory gets created from scratch. This also happens if I create a /etc/puppet and create symlinks for the manifests directory So far it hasn't happened for the modules, plugins, files or templates directories. This is the same kind of behavior described in bug http://projects.reductivelabs.com/issues/750 which was closed two years ago! I am running puppet 2.5 which was released a couple of days ago. Is this really that big of a deal? You can use puppet.conf to configure where the directories will be, so at worst you have a single file in /etc/puppet/puppet.conf, or you can start your daemons with -- config /my/puppet.conf. -- Today at work an ethernet switch decided to take the 'N' out of NVRAM -- Richard Letts - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: reporting and err tag. [was Silent failure]
On Sep 6, 2009, at 7:42 PM, Tim Uckun wrote: As long as you are on a recent version there is an 'err' tag, which you can use in conjunction with tagmail to mail you any errors. I send mine to a distribution group that ends up going to my team mates. I am trying to implement this but I am not getting any logging or reporting at all. I do get emails if I put all: tag in the tagmail.conf but no emails when I put in err: tag in the file (I force an error). Here is my configuration on the puppetmaster [main] confdir=/usr/local/home/tim/puppet/etc ssldir=/etc/puppet/ssl vardir=/var/puppet [puppetmasterd] storeconfigs=true reports = tagmail,store,log tagmap=/etc/puppet/tagmail.conf smtpserver=some.smtp.server I also run puppetmaster like this (just to be sure) puppetmasterd --no-daemonize --verbose --debug --reports tagmail,store,log This is what tagmail.conf looks like #all: timuc...@gmail.com #this works err: timuc...@gmail.com #this doesn't work if I force an error. This is what the client puppet.conf looks like [main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter #pluginsync=true [puppetd] report=true This is how I run the client (just to make sure) puppetd --server my.server.com --no-daemonize --logdest console --verbose --onetime --debug --test --trace --report No reports get generated. There is nothing int he /var/puppet/reports directory. No indications of anything going wrong in the log files. Nothing anywhere telling me what the problem might be. For me this has been the biggest problem with puppet. Complete silent failure. I have followed the documentation carefully, there is no indication of why it failed even with full debugging on and logging to the console. We just caught this problem of not being able to use the log level as a tag, and I think it got fixed around 0.24.8, so that might be the issue if you're running a slightly older version. I'm still a little confused, though -- how do you know you're getting an error if you're not getting any error reports anywhere? -- I'm worried about Bart. Today, he's sucking people's blood, tommorrow he might be smoking. -Marge Simpson - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: classes param avaible at compile time?
On Sep 8, 2009, at 6:29 AM, Dan Bode wrote: is the classes section from Puppet::Node accessible at parse time? example: from yaml/node/supercoolmanchine.super.cool.place.yaml classes: - workstation - httpd - dev can I access this list from within puppet manifests? Hmm. No; no one's ever asked for it. It's in memory, so it wouldn't be hard to add a function for it, I think. -- Fallacies do not cease to be fallacies because they become fashions. --G. K. Chesterton - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: puppetca issues after moving to mongrel
On Sep 8, 2009, at 11:30 AM, Ian Cottee wrote: I've been running puppet for nearly two years. As the number of clients have expanded so performance has eroded. I've done stop gaps solutions such as creating two puppet masters and feeding a fileserver off one of them and reducing the frequency that clients check in, but I knew they were stop gap solutions and not cutting the mustard. Last week I bit the bullet and created a new puppetmaster on Ubunty Hardy, installing from the 0.24.9 source. The bones of the config come from http://reductivelabs.com/trac/puppet/wiki/UsingMongrel And all as well last week and I had apache serving up 10 puppetmasters. I'd copied the ssl details from the previous server and existing clients were checking in, doing their puppety stuff and being happy. Today we needed to create a new node but no dice. On my client, when first starting puppetd I get: r...@sn1204:~# puppetd --test warning: peer certificate won't be verified in this SSL session err: Could not call puppetca.getcert: #RuntimeError: HTTP-Error: 502 Proxy Error /usr/lib/ruby/1.8/puppet/network/client/ca.rb:31:in `request_cert': Certificate retrieval failed: HTTP-Error: 502 Proxy Error (Puppet::Error) from /usr/sbin/puppetd:356 On the server I see this in syslog. Sep 8 19:22:52 puppet puppetmasterd[1965]: Client sn1204.bb2(xx.xx.xx.xx) requested unavailable functionality puppetca Which tied in with what I was seeing when I switched from mongrel to webrick as a test to debug this. http://www.pastie.org/609530 I have since upgraded the server to 0.25.0 but the messages are the same. All the clients are 0.24.4 (stock hardy) with a few gutsies. They're all connecting fine. My puppet.conf from the server is at http://www.pastie.org/609537 and the apache conf at http://www.pastie.org/609541 #puppet on irc have been very helpful but have drawn a blank so far. Having peered at the code I assume the puppetca code is loaded as a module by the puppetmaster process and that is 'failing' somehow/ somewhere? Or not being loaded? Any pointers on how to debug further gratefully received. Do you have 'ca = false' somewhere in your configuration? That's the only thing I can think of that would cause the CA functionality not to be available. -- Fallacies do not cease to be fallacies because they become fashions. --G. K. Chesterton - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: problems with log files
On Sep 8, 2009, at 9:09 PM, Matt Delves wrote: Hey Folks, I've just migrated from 0.24.8 to 0.25.0 and I'm finding that the logfiles aren't being updated promptly. If I restart the puppet-server service it dumps the logs then though only intermittently. Is this a known problem? The only other change I've made is that I've added storeconfigs as well. Not a known problem that I know of. Never flushing the logs, eh? Can you file that, with some context? -- The intelligent man finds almost everything ridiculous, the sensible man hardly anything. -- Johann Wolfgang von Goethe - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Puppet Camp
On Sep 9, 2009, at 1:05 AM, Al @ Lab42 wrote: So, it seems that a bunch of puppetmasters will be roaming around SF waiting for the Camp. I suppose we can arrange a meeting at least the evening of 30 September, but also earlier for somebody. We can define here a meeting place hour in a sensible, recognizable, place, and then move to a restaurant, pub or whatever. Any suggestion from SF natives? I'm not a native, but I recommend the following places: Irish Bank - good pub, central location Rye - great cocktail bar Bourbon and Branch - even greater cocktail bar, but you *have* to make reservations - they give you a password and you can't get in without it The View - decent cocktail bar at the top of the Marriott with a really good view of the bay Thai food in SF is excellent; use yelp to find a good one, there are lots. I, um, don't have much to recommend other than places to drink; you can tell what I do when I visit. :) Also, I expect we'll set up some code sprints in the day or two before the conference; specifically, on the dev call today Paul recommended that we do a continuous integration code sprint, which I think is a great idea. We specifically need to get the AMIs in better shape so it doesn't take so long to start each machine for testing. -- The Roman Rule: The one who says it cannot be done should never interrupt the one who is doing it. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Emitting warnings in a custom function.
On Sep 9, 2009, at 1:41 PM, Trevor Vaughan wrote: All, I apologize for asking the question since I know I've done this before, but...does anyone know how to emit warnings in a custom function? I tried Puppet.warning, but that didn't appear to print a warning message anywhere. It... should. That's exactly how we do all of our warnings and such. Do you just get a no-op on that? -- The big thieves hang the little ones. -- Czech Proverb - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: accessing resource attributes
On Aug 20, 2009, at 1:25 AM, Jan wrote: Hi, I came across a use case where I would like to access a value of an attribute of a particular resource. I cannot find anything like this in the documentation. Essentially, I am trying to do something like this: $cacert_path = Base::X509::Cert[cacert].path Did I miss something in the concepts? There's no ability to do this right now, but... I don't see a whole lot of reason not to support it, and it's likely to be a relatively simple language change. I've kind of avoided it just because it's a pretty significant increase in visibility of resources throughout the catalog, but in the end, relative to what else we've added, it's actually a small change now. I guess file a feature request for it? -- The brain is a wonderful organ. It starts working the moment you get up in the morning and does not stop until you get into the office. --Robert Frost - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Resource ordering
On Jul 21, 2009, at 5:31 PM, Trevor Vaughan wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 This is going to be a great feature. Over time, I've been struggling with trying to keep things extremely modular (perhaps too much so) but still well ordered. When I can make every class that needs apache just 'require apache', I will be quite happy. However, I think that this means that if *anything* in the class fails, the dependent classes will fail too, is this correct? Yes, the dependent classes will be skipped if any resources in the required classes fail. Is there any way to make some things fail softly so that they can be less hard than class-wise fatal? Hmm, no one's ever asked before. It seems reasonable that we could mark some resources as non-fatal, but what resources would you mark this way? Thanks, Trevor On 07/21/2009 05:31 PM, James Turnbull wrote: Burkholder, Peter wrote: I just finished listening to the Configuration Management panel from OSBridge (on blip.tv). Near the end of it, Adam Jacob states that Puppet's resource dependency ordering is non-deterministic, and that manifests that work fine 19 times will fail the 20th time. Is this true? I'm puzzled that what Luke considers one of Puppet's strong suits is derided by others as its Achille's heel. There is a change in 0.25.0 that I also should have mentioned because it impacts this discussion. In 0.25.0 we've added a 'require' function. The doco is here: Evaluate one or more classes, adding the required class as a dependency. The relationship metaparameters work well for specifying relationships between individual resources, but they can be clumsy for specifying relationships between classes. This function is a superset of the 'include' function, adding a class relationship so that the requiring class depends on the required class. .. Warning:: using require in place of include can lead to unwanted dependency cycles. For instance the following manifest, with 'require' instead of 'include' would produce a nasty dependence cycle, because notify imposes a before between File[/foo] and Service[foo]:: class myservice { service { foo: ensure = running } } class otherstuff { include myservice file { '/foo': notify = Service[foo] } } This takes some of the (potential) pain out of the ordering by allowing class level dependencies. This adds dependency resolution higher than between individual resources. It doesn't solve issues where you haven't built the right dependencies at a resource level but does provide more flexibility. This isn't the same as Chef - as Adam has pointed out Chef has top- down ordering rather than Puppet's dependency graph - but I think it'll make life easier for some people. Regards James Turnbull -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkpmXc4ACgkQyjMdFR1108BPnwCbBAYZ+kFWaKrORho1NOZK6+Ij bNQAn2bb0SDw0aofNRH0wKf/fv5iDpzw =eDIA -END PGP SIGNATURE- -- In our civilization, and under our republican form of government, intelligence is so highly honored that it is rewarded by exemption from the cares of office. --Ambrose Bierce - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Custom type fails when requiring another plugin
On Jul 16, 2009, at 2:48 PM, S H wrote: Puppet 0.24.8. I'm building a custom type and have run into a bit of a snag. If I try to require another plugin, my type fails to load on the Retrieving plugins stage of the client run. Puppet immediately loads all downloaded ruby files, with the expectation that it is often reloading files that are already in memory. If the plugins are downloaded in the wrong order (i.e., the requiring file and then the required file), you've got a problem. Truthfully, this is the first time this has ever come up. A reasonable fix would be to wait until all files are downloaded before we load any files. If I publish a branch with a fix for this, would you be able to test it? It'd be against the 'master' branch. I've tried to isolate this from my code by running extremely simple plugins. Here's my custom type (called by the relevant init.pp): - # puppet/modules/testmodule/plugins/puppet/type/testtype.rb require 'puppet/external/testing' module Puppet newtype(:testtype) do newparam(:target) do desc The path to the configuration file we're editing defaultto /usr/local/etc/testfile end newparam(:name, :namevar = true) do desc The name end newproperty(:ensure) do desc Basic state newvalue :present newvalue :absent def retrieve File.exists?(@resource[:target]) ? :present : :absent end end end end - Here's puppet/external/testing: - # puppet/modules/testmodule/plugins/puppet/external/testing.rb class JustTesting end - Both plugins are getting synced up correctly to the client machine (under /var/puppet/lib), but if the client runs like this I end up with the following error: err: Could not retrieve catalog: Could not find resource type testtype at /usr/local/etc/puppet/modules/testmodule/manifests/ init.pp:119 on node testbox If I comment out the require line in testtype.rb, it runs just fine. If I change that line to require something builtin like puppet/ external/lock, it works. Am I doing something wrong here? I *highly* recommend you do all your development in a non-networked test environment relying entirely on the 'puppet' executable, rather than puppetd and puppetmasterd. Isolate your problems there, and only once you're sure it's all working should you switch to the client/ server testing. What behaviour do you get there? -- In science, 'fact' can only mean 'confirmed to such a degree that it would be perverse to withhold provisional assent.' I suppose that apples might start to rise tomorrow, but the possibility does not merit equal time in physics classrooms. -- Stephen Jay Gould - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Newbie provider development: Failed to retrieve current state of resource
On Jul 22, 2009, at 8:55 AM, S H wrote: As I mentioned in another thread, I'm trying to work through the kinks in developing my own types/providers. I appear to be doing something very wrong, but I don't know what. On my puppetmaster, I've got the following: - # modules/test/plugins/puppet/type/testtype.rb Puppet::Type.newtype(:testtype) do @doc = A test type ensurable newparam(:name, :namevar = true) do desc The name end end - # modules/test/plugins/puppet/provider/testtype.rb Puppet::Type.type(:testtype).provide do desc Test provider def create return true end def destroy return true end def exists? return true end end - # modules/test/manifests/init.pp testtype { testinstance: ensure = present, } - My test machine downloads the plugins to the right location but throws this error when it makes the catalog run: err: //unix/test/Testtype[testinstance]: Failed to retrieve current state of resource: No ability to determine if testtype exists If I skip the ensurable and provider steps and just dump the right code into the newproperty(:ensure) do block, it works fine. What am I doing wrong here? It looks like your provider isn't valid - you haven't provided (heh) a name for it. My guess is that you're using an older version of Puppet that's not correctly showing the error that comes up with that code, so your type isn't getting the provider which means it's not seeing those methods. Try 'ruby -rpuppet /path/to/file' to make sure your provider works. -- Reality is that which, when you stop believing in it, doesn't go away. -- Philip K. Dick, How to Build a Universe - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Resource ordering
On Jul 17, 2009, at 6:08 AM, Burkholder, Peter wrote: I just finished listening to the Configuration Management panel from OSBridge (on blip.tv). Near the end of it, Adam Jacob states that Puppet's resource dependency ordering is non-deterministic, and that manifests that work fine 19 times will fail the 20th time. Is this true? I'm puzzled that what Luke considers one of Puppet's strong suits is derided by others as its Achille's heel. Dependency ordering is entirely deterministic. Ordering of unrelated items, just like in any other topological sort of a graph, is currently nondeterministic. We could trivially add deterministic ordering for unrelated items: Just sort any equivalent resources based on name. Ten seconds after you do this, you'll have people naming resources things like '1myservice' because they want to use alphabetic sorting instead of declared dependencies, and then they'll complain when specified dependencies get preference. Basically, once we start saying unrelated resources will always happen in a predictable order, we can never change the internal implementation or add parallelism. There might be some ways to increase consistency without sacrificing these, but no one besides Adam has complained much about it, and he was never willing to actually contribute code to fixing it. -- It's very hard to predict things . . . Especially the future. -- Prof. Charles Kelemen, Swarthmore CS Dept. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: puppetd no-daemonize
On Jul 13, 2009, at 2:13 PM, Derek Yarnell wrote: So I have been trying to run puppet once in my kickstart %post scripts but every time it detaches and daemonizes even though I have explicitly stated otherwise. Am I missing something? # rpm -q puppet puppet-0.24.8-1 # /usr/sbin/puppetd --onetime --no-daemonize --verbose --debug debug: Creating default schedules debug: Failed to load library 'shadow' for feature 'libshadow' debug: Failed to load library 'ldap' for feature 'ldap' debug: /Settings[/etc/puppet/puppetd.conf]/Settings[puppetd]/File[/ var/puppet/state/state.yaml]: Autorequiring File[/var/puppet/state] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/private]: Autorequiring File[/etc/puppet/ssl] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/public_keys]: Autorequiring File[/etc/puppet/ssl] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[puppetd]/File[/ var/puppet/state/classes.txt]: Autorequiring File[/var/puppet/state] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/certs/#.pem]: Autorequiring File[/etc/ puppet/ssl/certs] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/certs]: Autorequiring File[/etc/puppet/ssl] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/private_keys]: Autorequiring File[/etc/puppet/ssl] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[main]/File[/etc/ puppet/ssl]: Autorequiring File[/etc/puppet] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[main]/File[/var/ puppet/run]: Autorequiring File[/var/puppet] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/csr_#.pem]: Autorequiring File[/etc/ puppet/ssl] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[main]/File[/var/ puppet/state]: Autorequiring File[/var/puppet] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[main]/File[/var/ puppet/log]: Autorequiring File[/var/puppet] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[main]/File[/var/ puppet/lib]: Autorequiring File[/var/puppet] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/certs/ca.pem]: Autorequiring File[/etc/puppet/ssl/certs] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/private_keys/###.pem]: Autorequiring File[/etc/puppet/ssl/private_keys] debug: /Settings[/etc/puppet/puppetd.conf]/Settings[ssl]/File[/etc/ puppet/ssl/public_keys/###.pem]: Autorequiring File[/ etc/puppet/ssl/public_keys] debug: Finishing transaction -606390474 with 0 changes It's not daemonizing there, it's exiting -- if you use --onetime, it exits after the run. -- The Number 1 Sign You Have Nothing to Do at Work... The 4th Division of Paperclips has overrun the Pushpin Infantry and General White-Out has called for a new skirmish. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: testing filebuckets in 0.25
On Jul 16, 2009, at 8:08 AM, Steven Jenkins wrote: I've been looking at Redmine 2371 for a while and had been looking strictly on the code and spec testing side until yesterday, when I set up a puppetmaster and client to verify the filebuckets. I found that I'm not able to get filebuckets to work at all (via puppetd), so I'm hoping I just have a simple user error. I have verified that using the 'filebucket' command mostly works as I expect. Can someone confirm that local filebuckets are working (via puppetd) for them on 0.25? Additionally, I've included my configs below, as I confirmed both local and remote in the course of my own testing of this bug. I always go singificantly simpler than your config; I do my best to stick to just a single test.pp file. For instance, I'll start my master like this: sbin/puppetmasterd --verbose --no-daemonize --confdir /tmp/ plugintesting --vardir /tmp/plugintesting --manifest ~/bin/test.pp -- modulepath ~/.puppet/modules --certdnsnames localhost And then I'll start puppetd like this: sudo sbin/puppetd --test --confdir /tmp/plugintesting/ --vardir /tmp/ plugintesting --no-daemonize --server localhost --pluginsync I use a new /tmp directory for every set of tests, so I know I'm always starting from scratch, and I'm not getting an artifact from some other setup. With that setup plus a single filebucket and a single file managing its content, I got backups all around. -- Someday I want to be rich. Some people get so rich they lose all respect for humanity. That's how rich I want to be. --Rita Rudner - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Provider API: delete vs. destroy
On Jul 10, 2009, at 1:15 PM, jcbollinger wrote: I have been working on a custom provider for User resources, relying in part on the documentation on the Wiki: http://reductivelabs.com/trac/puppet/wiki/CompleteResourceExample http://reductivelabs.com/trac/puppet/wiki/ProviderDevelopment Somewhat to my surprise, my provider is generally working. Contrary to the Wiki docs, however, I found that when an existing User resource is ensured absent, the method invoked on my provider is named delete, not destroy. Is this a peculiarity of the User type, or is the wiki simply incorrect? It's a peculiarity of the User type. This is, unfortunately, an area in which we haven't been able to enforce standardization through a clean API (although I've got ideas for one), and no one has particularly felt like going through all of the existing types and providers and just generally enforcing it. More recent types and providers tend to follow the convention described on the wiki, but Users and Packages were the types that resulted in providers, and thus were the first to use them, so they tend to not follow convention. Digging further, it appears that among the standard User providers, only user_role_add has an explicit destroy method. None of the standard providers explicitly defines a delete method, but it appears that some of them may acquire one by declaring :delete among their commands. Most likely, they all inherit Nameservice or one of its children. That whole class heirarchy needs to be converted to modules and mixins, but until that's done, it's a bit messy. (And if there's a thread you think I should be replying to but am not, feel free to forward it to me or puppet-dev.) -- We cannot really love anybody with whom we never laugh. --Agnes Repplier - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Multiple default providers for service: init, base; using init
On Jul 1, 2009, at 9:30 AM, Pete Emerson wrote: I have a bunch of CentOS machines. In the process of puppetizing one of them I'm getting this warning (more complete debug info at the end): warning: Found multiple default providers for service: init, base; using init info: /Service[gmond]: Provider init does not support features enableable; not managing attribute enable Given that all of my instances are running the same OS and should be identical, and none of my other instances are exhibiting this problem, something on this instance must be slightly different. I've run the client in debug mode (see below) and the puppetmaster in debug mode, but haven't seen anything that is causing this issue (like the default PATH, for example). How do I best go about figuring out what is going on and fixing it? This kind of issue is normally caused by a funky PATH, but it looks like your service providers are halting their loading early, so maybe you've got a provider there that's not parsing correctly and is breaking the loading of the rest of the service providers. I *think* that was a bug in an earlier version but is fixed in 0.24.8 or so -- providers can't break loading for other providers. -- Good judgment comes from experience, and experience comes from bad judgment. --Barry LePatner - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Funded, but not different
Hi all, You may have heard that Reductive Labs got funding: http://reductivelabs.com/2009/06/23/reductive-labs-funding-from-true-ventures/ Most of the discussions and press around the announcement are focused on business, but the community aspect is just as important to us. This funding is going to be used mostly to do more development on Puppet. We're growing, but we think it will be great for Puppet and the Puppet community. And did I mention we're hiring? :) -- You only have to be open minded if you're wrong. - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Puppet Certification?
On Jun 3, 2009, at 6:03 AM, paul matthews wrote: I realise this could be a long way off as Puppet is rapidly evolving, with development still at the forefront but are there plans in the furture to offer a Puppet Certification exam. I know the subject of certification is not to everyone's taste, but I find studying for these is a good way for me to focus on learning all the subject areas and to demonstrate some level of competence to any would be employers. I think there would be benefits to Reductive too, I guess mostly in the area of getting people to attend training courses I'll get my flame proof suit on in anticipation for any replies We've actually had quite a few people ask for certification, for various reasons, and we plan on offering it. We hope to have a first pass available something like the end of 2009. Obviously, the more people ask for it, the faster it will get done. -- You can't wait for inspiration. You have to go after it with a club. -- Jack London - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Puppetrun timeout
On Jun 8, 2009, at 4:39 PM, Pete Emerson wrote: I'm using puppet 0.24.7-4. I have a situation where I have some very long running puppet runs in order to do upgrades (removing applications from load balancers gracefully, et cetera). My puppet runs triggered via puppetrun are finishing successfully: Jun 8 20:31:29 puppetd[10178]: Finished catalog run in 345.18 seconds Puppetrun itself is timing out: err: Connection timeout calling puppetrunner.run: execution expired Host myhost failed: Connection Timeout myhost finished with exit code 2 I'm calling puppetrun with --foreground: puppetrun --host=myhost -- host=myhost2 --host=myhost3 --foreground --parallel However, I don't see anything in the puppetrun doco that hints at setting the execution exiry time. Any suggestions? I'd run with --no-foreground. Or, modify puppetrun to have a timeout? -- It's impossible to foresee the consequences of being clever. -- Christopher Strachey - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: puppet client looking for server puppet
On Jun 10, 2009, at 12:50 PM, Asif Iqbal wrote: In my puppet client I have puppet.conf defined puppet server as mypuppet server = mypuppet.example.net Not sure why the puppet client puppet-test is still sending these noises to the syslog Jun 10 13:36:23 puppet-test puppetd[10863]: [ID 702911 daemon.error] Could not find server : getaddrinfo: node name or service name not known Jun 10 13:36:23 puppet-test puppetd[10863]: [ID 702911 daemon.error] Could not request certificate: Certificate retrieval failed: Could not find server puppet Jun 10 13:36:44 puppet-test puppetd[13502]: [ID 702911 daemon.notice] Starting catalog run Jun 10 13:36:44 puppet-test puppetd[13502]: [ID 702911 daemon.notice] Finished catalog run in 0.03 seconds Am I hitting a but? Almost every time I've seen this it's a problem with a filebucket -- do you have a server-side filebucket specified to use 'puppet'? -- Never esteem anything as of advantage to you that will make you break your word or lose your self-respect. -- Marcus Aurelius Antoninus - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: puppet client looking for server puppet
On Jun 11, 2009, at 11:36 AM, Asif Iqbal wrote: On Thu, Jun 11, 2009 at 11:58 AM, Luke Kaniesl...@madstop.com wrote: On Jun 10, 2009, at 12:50 PM, Asif Iqbal wrote: In my puppet client I have puppet.conf defined puppet server as mypuppet server = mypuppet.example.net Not sure why the puppet client puppet-test is still sending these noises to the syslog Jun 10 13:36:23 puppet-test puppetd[10863]: [ID 702911 daemon.error] Could not find server : getaddrinfo: node name or service name not known Jun 10 13:36:23 puppet-test puppetd[10863]: [ID 702911 daemon.error] Could not request certificate: Certificate retrieval failed: Could not find server puppet Jun 10 13:36:44 puppet-test puppetd[13502]: [ID 702911 daemon.notice] Starting catalog run Jun 10 13:36:44 puppet-test puppetd[13502]: [ID 702911 daemon.notice] Finished catalog run in 0.03 seconds Am I hitting a but? Almost every time I've seen this it's a problem with a filebucket -- do you have a server-side filebucket specified to use 'puppet'? my puppetmaster is a ubuntu server and I do not see anything in /var/lib/puppet/bucket dir. Is that what you are asking? sorry I am a puppet newbie Look for a 'filebucket' resource in your manifests. -- Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- (attributed to) Brian W. Kernighan (unconfirmed) - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---
[Puppet Users] Re: Puppetrun timeout
On Jun 11, 2009, at 5:52 PM, Pete Emerson wrote: Hrm, I'm running it with --foreground so that I know when it's complete, and I'm getting these execution expired messages, which I took to mean that puppetrun already has some sort of internal timeout mechanism. Is that not the case? I guess an alternative would be to run with --no-foreground. If I do that, is there a way to query host and see when it's last successful update was, in order to show that the changes have been completed? If that doesn't work, then I guess I'd have to ssh to each box and run puppetd there and wait for it to finish. I'd recommend using reports from the client to figure out when it's done. -- The truth is that there is nothing noble in being superior to somebody else. The only real nobility is in being superior to your former self. -- Whitney Young - Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~--~~~~--~~--~--~---