Once you have mounted a resource on a unique directory, you have access
to all of the relevant filesystems on your network -- but you really
wanted the `local' filesystem to be mounted on /usr/local
. All
you need do now is to make a link:
links: any:: /usr/local -> /$(site)/$(binserver)/local
The meaning of this is that, on any host, the directory
/usr/local
should be a link to the `nearest' binary server's
`local' resource. The $(binserver)
variable can in principle
expand to any binary server in the list. In practice, cfengine goes
through the list in order and picks the first filesystem resource which
matches.
Could this lead to a collision? Suppose we are on the host `einstein'
and we execute the above command. The host `einstein' has a filesystem
/physics/einstein/local
on its local disk -- it is in fact the
binary server for the network, so it certainly doesn't need to mount any
NFS filesystems. But this is no problem because cfengine automatically
treats $(host)
as the highest priority binary server for any
host. That means that if you have a local filesystem, it will always
have priority.
In contrast, if the host `schwinger' ran the command above, it would
find no local filesystem called /physics/schwinger/local
, so it
would go along the list of defined binary servers, find `einstein' and
try again. It will succeed in finding `einstein' provided all the
binary servers were mounted before the link command is executed. This
means that you should structure the actionsequence
so that all
filesystems are mounted before any links are made.
With a little practice, the cfengine model can lead to an enormous simplification of the issue of NFS-mountable resources.
NOTE: cfengine does not try to export filesystems, only mount already
exported filesystems. If you want to automate this procedure also, you
can use the editfiles
facility to add entries to
`/etc/exports' See section editfiles. In practice this is very
difficult to do and perhaps not desirable.
Go to the first, previous, next, last section, table of contents.