← Back to team overview

maas-devel team mailing list archive

Re: DHCP packaging

 

On Friday 21 September 2012 09:36:46 Andres Rodriguez wrote:
> > One thing that's really bothering me is our special-cased "master" DHCP
> > which only exists to deal with the previous case of everything being
> > installed a-la Cobbler on a single machine.  This causes some friction at
> > installation time because at the moment maas-dhcp will call "maas
> > config_master_dhcp" which we don't want to happen for clusters.
> > 
> > I am thinking that we change this around a little when we start the
> > upstream work on task routing so that we have a celery worker for
> > maas-dns and a separate one for maas-dhcp.
> > 
> > This would remove the concept of a "master" DHCP entirely and let us have
> > a
> > totally generic cluster-controller that you can install on the master or
> > anywhere else.  This would obviate the need for the maas-dhcp package and
> > require the user to set up DHCP details in the UI or API.
> > 
> > The only fly in this ointment is how to migrate from 12.04 installations.
> > 
> > Thoughts?
> 
> The question is, are we always going to use DHCP server in the cluster
> controller? If we are considering the scenario that we would not, as we
> will use external DNS/DHCP, then I think is important to keep a
> maas-dhcp package.

Ok fair enough.

> 
> I, however, think there should not be any difference in configuring the
> DHCP server in the cluster controller, or in the all-in-one server.
> 
> Upgrades from 12.04 should be simply enough. See at the end.
> 
> > I don't think another branch is a good idea, it will be a lot more work to
> > maintain it.  Stacking is just a storage optimisation, not a magic way to
> > propagate changes to dependent branches.
> 
> I mentioned having a different packaging branch momentarily, as doing
> the packaging split in "packaging trunk" will mean that we wont be able
> to easily apply and release fixes to pre-split packages. Other idea
> might be to simply create something like packaging.presplit branch to
> handle the above if the need to use it arises.

I'm not sure I understand, let's chat on IRC so I can work it out.

> 
> > maas
> > 
> >  Depends: python-django-maas, maas-region-controller
> >  Recommends: maas-dns
> >  Suggests: maas-cluster-controller
> 
> Now, in order to handle upgrades correctly, we need to consider the fact
> that 12.04 is an all-in-one installation. This means that the upgrade
> should also be to an all-in-one installation. We cannot leave
> maas-cluster-controller aside (a Suggests) because we will end up with a
> 'broken' MAAS forcing the administrator to install a new machine with
> maas-cluster-controller, or forcing him to manually install it
> (something that he probably doesn't want to do). This means that 'maas'
> will become a meta-package that will install:
> 
> Depends: python-django-maas, maas-region-controller,
> maas-cluster-controller
> Recommends: maas-dns, maas-dhcp (Maybe even become a suggests)



> 
> So basically, if someone installs 'maas' from now own, is because he
> wants an all-in-one, single server MAAS.

Right, that's pretty much what I was thinking too, but I suspect I got my 
proposal wrong :)

> 
> Now, 'maas-region-controller' should install the WebUI, wsgi, etc, etc.
> 
> Furthermore, I think it is important to separate 'maas-dhcp', given that
> if the administrator doesn't want to manage DNS/DHCP with maas, then he
> shouldn't need to have isc-dhcp-server as a Depends of
> maas-cluster-controller. Note that Depends is required in order for the
> package/software to work. A Recommends enhances the functionality of it.

It sounds like a Suggests is more appropriate based on the documentation I've 
seen for Suggests vs Recommends (the latter being more of a strong dependency 
that is used except in unusual cirumstances).

(Especially since I think the default is to install Recommends: unless 
explicitly disabled?)

> In this case, maas-cluster-controller should not Depend on
> isc-dhcp-server if we have an all-in-one installation and we don't want
> to manage DHCP.

Right!  Given that, here's the new proposal:

=======

maas
 Depends: python-django-maas, maas-region-controller
          maas-cluster-controller

python-django-maas
 Installs: src/maasserver, src/metadataserver

python-maas-provisioningserver
 Installs: src/provisioningserver

maas-region-controller
 Depends: python-django-maas, python-maas-provisioningserver
 Installs: maas-txlongpoll upstart job, installs DB, apache2, etc.

maas-cluster-controller
 Depends: python-maas-provisioningserver
 Installs: maas-pserv, maas-celery upstart job (enlistment wrapper)
 Suggests: maas-dns, maas-dhcp

maas-dhcp
 Depends: isc-dhcp-server
 (Virtual package, configures DHCP in postinst)

maas-dns
 Depends: bind9, maas-dhcp
 (Virtual package, sets up /etc/bind/maas etc)

maas-cli
 Installs: src/apiclient

========

My only remaining packaging question, as an incompetent packager, is how to 
split the existing file installation up between -region and -cluster packages.

Cheers.


Follow ups

References