On Tue, 2005-07-26 at 01:18 -0500, Ian Bicking wrote: > Well, the stack is really just an example, meant to be more realistic > than "sample1" and "sample2". I actually think it's a very reasonable > example, but that's not really the point. Presuming this stack, how > would you configure it?
I typically roll out software to clients using a build mechanism (I happens to use "pymake" at http://www.plope.com/software/pymake/ but anything dependency-based works). I write "generic" build scripts for all of the software components. For example, I might write makefiles that check out and build python, openldap, mysql and so on (each into a "non-system" location). I leave a bit of room for customization in their build definitions that I can override from within a "profile". A "profile" is a set of customized software builds for a specific purpose. I might have, maybe, 3 different profiles for each customer where the profile usually works out to be tied to machine function (load balancer, app server, database server). I mantain these build scripts and the profiles in CVS for each customer. I never install anything by hand, I always change the buildout and rerun it if I need to get something set up. This usually works out pretty well because to roll out a new major version of software, I just rerun the build scripts for a particular profile and move the data over. Usually the only thing that needs to change frequently are a few bits of software that are checked out of version control, so doing "cvs up" on those bits typically gets me where I need to be unless it's a major revision. So in this case, I'd likely write a build that either built Apache from source or at least created an "httpd-includes" file meant to be referenced from within the "system" Apache config file with the proper stuff in it given the profile's purpose. The build would also download and install Python, it would get the the proper eggs and/or Python software and the database, and so forth. All the configuration would be done via the "profile" which is in version control. I don't know if this kind of thing works for everybody, but it has worked well for me so far. I do this all the time, and I have a good library of buildout scripts already so it's less painful for me than it might be for someone who is starting from scratch. That said, it is time-consuming and imperfect... upgrades are the most painful. New installs are simple, though. So, anyway, the short answer is "I write a script to do the config for me so I can repeat it on demand". - C _______________________________________________ Web-SIG mailing list Web-SIG@python.org Web SIG: http://www.python.org/sigs/web-sig Unsubscribe: http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com