Havoc Pennington wrote,
Right, for a sufficiently low number of machines, setting up an
elaborate framework is going to be more annoying than just managing
them all separately. Though we should try to make the framework easy
enough to use that it makes sense even for a single machine, if we
can.
Do you have any feel for how low that number is given the current stage
of development?
I think there are maybe a couple answers to your question.
1) Should there be some kind of OS 'layering' (words like 'profile'
or 'inheritance' come to mind).
<snip/>
But the idea is that any system on the network can run any workload
(workload = service, or even have desktop users log in). You then
keep a central mapping that assigns workloads to specific machines,
but you can change that mapping as required.
This seems like the ideal, while in one sense "profiles" feels like a
workaround.
I'm not so sure about this. There are many scenarios where it makes
sense to restrict particular roles to a specific set of hosts, or to
restrict particular hosts to a specific set of roles. Security is one
(eg., to take an extreme example, I don't want a firewall to be able to
run any workload) but it's not the only one.
2) How can you avoid a separate 'profile' to make small
changes.
This is a matter of pulling state out of the OS install and config
files. We've been approaching this by saying there's a toolbox you
can use. Here are some of the approaches in the toolbox:
- dynamic/automatic configuration
- look up configuration from a central place, e.g. a directory
server, or even a file share
- write scripts that examine the machine and determine its desired
configuration based on hardware, network location, or by looking
up configuration from a central place
- move the configuration to be per-user rather than per-computer
So some of this can be done out of the box in the OS; for example for
desktops, NetworkManager helps address network configuration that
varies between machines. A good kudzu helps avoid hardware config in
general. etc. But you'd expect a local site to do some work as well.
As you say, a lot of this works already ... I work with parallel
applications on clusters, and common configuration in a shared
filesystem with symmetry-breaking via hostname works fabulously well
given how trivial it is to set up (until the NFS server goes down, that
is ;-).
But it's pretty much limited to machines which are always connected to
the same network. Extending this to laptops which move between
networks, or no network at all could be a lot more challenging. OTOH, a
scheme which could handle that case as well would be a huge bonus.
Anyway, to the extent that machines can vary by workload rather than
by install profile, so there can be a single install profile, that
seems desirable.
I'm kind of sleepy so sorry if this answer is sort of muddled; but I
think your questions really get to the heart of what we're trying to
solve here.
No, I think that it was clear and to the point. And I think it's an
excellent problem to be trying to solve.
Cheers,
Miles