On Tue, Jun 21, 2005 at 08:35:52PM +0200, Thierry Carrez wrote:
> I don't say that it cannot be done, and I don't ask what's the best way
> to do it. I just ask *if* we should try to provide higher-level tools
> (and/or doc) to help in doing so. It's not obvious (especially for
> non-developers) how to proceed in that situation, even if a lot of
> people have designed their own solution in their corner.
Best way to do it?  Scary notion, not the way we're doing it 
currently.

Push mode is preferable imo, 'cept no code exists to support that.  
Someone could write the necessary client/server code, but that would 
have issues when bound into existing portage apis...

> >> With automatic deployments, would we run into difficult-to-solve
> >> etc-update problems ? Should/could the ServicePack system take care of
> >> that ?
> > 
> >  I wouldn't use etc-update for this on a enterprise rollout personally.
> >    If you need config cfengine does a nice job, as well as using
> > cvs/rcs/something-else
> 
> Again, the technology is out there, it's just not tightly integrated.
> Should we leave it as-is and let everyone design his own tools to
> connect the dots or should we ?
Not sure if the technology persay is out there honestly.  If it were a 
cluster, cloned boxes, I'd say minimalize CONFIG_PROTECT, and 
(assuming you write the client/server cruft above) slip in config pkgs 
that get installed alongside... or, just jam the config changes into 
the pkg (not clean but it's possible).  Or just trigger 
staggered reboot's on the boxes if you've got a fast network and pxe 
boot + imaging setup (I like the other method a bit more however :)

If you're managing a half dozen servers, each server running it's own 
customized httpd.conf, I don't see an easy way to handle that 
(would love to hear any ideas people have on that one).

Basically, kind of curious of how one could easily handle config 
management of multiple boxes, with config's potentially being wildly 
different from system to system (talking about a bit more then just 
/etc/conf.d/net.* and /etc/hostname differences here).  I suspect just 
wrapping the config changes into a bingpkg, and sliding them out 
alongside on a push would suffice, but that's just one possible 
method.

> >> Even in a simpler setup (preprod > production) we don't have the tools
> >> to push a software configuration change from a test machine to a
> >> production one.
> > 
> > What exactly are you looking for here?
> 
> Should we provide high-level software that defines an update pack (new
> binaries + configuration changes), allows to test it on a preproduction
> system and (once tested) to push it to registered production systems ?
> Or let everyone write his own treefreezing + network mounts + shell
> scripts + cfengine / CVS magic combo to do it ?
How do you push it?  I don't mean, what protocol/underlying, I'm 
asking how do you actually push _portage_ to do what you want?  Either 
you try and abuse the craptastic api in stable to pull it off, or you 
probably resort to a catalyst akin trick of calling emerge via system.

Neither is a proper solution.  Api is required, further, preferably 
portage innards being designed such that you can swap in your own 
remote subsystem (whether cache tree or config) so it's a matter of 
pushing commands down the client/server pipes, with the portage 
config/installation on that box pulling what it needs (remote tree == 
having to pull all relevant files if building, binpkg is easier 
however).

> >   Portage needs work; I know the devs are working on it, I know there
> > are other people who are doing there own things.  I see a lot of
> > portage-2.1 features that greatly simplify what you are trying to do (
> > repositories, config rewrite..etc.. ).  I think portage and what it
> > covers is a big part of this.  Recollecting a conversation with jstubbs
> > about portage he mentioned that he wouldn't want the portage-team to
> > maintain a Enterprise-like distribution program, but that the new API
> > would be great to write one against ;)
> 
> I don't think it should be the role of the portage-team either.

I draw a slightly finer line... portaged, some hypothetical 
client/server ap, not our business to implement, just provide an api 
for them to use.  Thing is, if they're going remote, they'll either 
need to be able to trigger sync's on the boxes local tree 
(innefficient as all hell), or the tree is remote.  If the tree is 
remote, that falls on portage devs head to provide a framework so the 
tree can be remote, in other words abstraction/framework design.

Further... if you're pushing updates out, you need some method to 
query the vdb from the target- even if you're dealing with pushing 
updates down to a set of identical installations, you need to identify 
(easily/cleanly) what needs to be built, and what needs to be pushed 
down the line.  Dancing around it, but you need access to the vdb for 
that system definition, which probably would be stored locally... in 
which case, the system targets probably would need to have a remote 
vdb.

Implementing all of the crazy and fun stuff isn't portage (the 
project) business (interest in it personally, but other things have 
much higher priority).  To do the crazy/fun stuff requires a sane 
design so stuff can be swapped in/out as required, which falls on our 
heads though, and is what's being kicked around/worked on now.

> > I know Cardoe and genstef? are working on a seperate package manager
> > that just handles binaries but uses all the current portage stuff, so
> > you might want to talk to them as well.
> 
> I sure hope they will comment on that thread :)
Kind of curious what they're attempting myself, since I've not heard 
much thus far...
~harring
-- 
gentoo-dev@gentoo.org mailing list

Reply via email to