Bruce Richardson <itsbr...@workshy.org> writes: > On Mon, Apr 05, 2010 at 04:54:30PM +1000, Daniel Pittman wrote: > >> >>> thank you so much for the reply. i have bunch of webserver, i want to >> >>> able >> >>> be able run svn update to all the webserver from master. >> >> this is not what puppet specializes in. you can probably do it, but you will >> almost certainly find it more productive to use some alternate tool to >> implement this feature. > > I don't understand why so many puppet people say this.
FWIW, I wouldn't claim to be anything but an end user of puppet, really. > Cfengine users do this kind of thing all the time (it's one of the very few > things that is possibly slightly easier in Cfengine and is perfectly secure; > you can't run arbitrary commands remotely via cfengine any more than you can > with puppet). > > Cfengine does this by allowing you to define arbitary "classes" (which > in cfengine means named conditions which are either defined/active or > undefined/inactive) when you trigger a run of cfengine either locally or > remotely. *nod* This is all equally true of puppet. [...] > Seems to me that the same thing can be achieved with puppetrun and tags > (or custom facts or some method you roll for yourself of communicating > arbitrary conditions to puppet). What am I missing? ...that deploying software to more than one machine is *significantly* more complicated than just "run svn update" on them. For example, I bet that the OP really doesn't want to react to an SVN update failing by just trying again, but wants to pull that machine out of the active pool until the problem is fixed. That is harder to script in puppet, and as far as I can see requires that you write your own wrapper around the process. It is also hard to synchronise actions across machines with puppet[1]: it is much harder to have puppet robustly update all the machines, and then if, and only if, every single machine updated successfully, restart the application server to load those new changes.[2] It is even worse when you want to synchronise "do A many times, do B once, do C many times" across machines; the classic example is that A and C are software updates, and B a database schema update, and that if you don't get the sequence right you get an outage. On the other hand, these are tasks that specialised tools exist for, and which mean you don't have to write "svn update and check for errors", but just lean on the existing tool that has built-in support for that. So, puppet can do it. It just doesn't provide (right now) all that many tools to make this *easy* for you. Does that clarify why I believe what I said? Daniel Footnotes: [1] ...and, boy, I really wish it was easier because it would make my life much better when dealing with complex software roll-outs. [2] ...or update the "current" symlink from the old version to the new version, or whatever mechanism you use to change the running version. -- ✣ Daniel Pittman ✉ dan...@rimspace.net ☎ +61 401 155 707 ♽ made with 100 percent post-consumer electrons -- 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.