One of the advantages of the link-based opt
export technique
we describe in this document is its flexibility. In addition to the
"vanilla" workstation we describe
elsewhere, many other configurations are possible.
One example might be a web server machine. Depending on circumstance
(such as ours), developers might have occasion to log onto the web
server machine, and would want the complete suite of opt
tools to be available there just like any other workstation. However,
the web server program itself doesn't need to be exported to other
workstations on the network. Also, the web server program and other
supporting packages need to be available locally, so that the server
can ride through local node or network outages.
In this case, it makes sense to create local subdirectories in the web
server machine's /opt
directory containing the critical
packages needed for its operation:
In practice, we typically build all packages on our master
opt
node; for those packages which do not need to be
exported to the rest of the network, we simply do not create the
pkg/appname
link in the master opt
directory for them. We then copy the application directory trees
verbatim to the machines which require them. This requires care when
updating such packages--keep careful track of where the directories
are propagated.
Another customization which has proved useful is that of "alternate"
opt
server nodes. These might be used for reasons of
performance, configuration, authorization, limited storage space, or
many other purposes. In this example, the workstation gets most of
its tools from the normal master opt
node, but its
graphics tools are provided by an alternate node. This alternate is
structured exactly the same as the master, but in this case it exports
different packages:
Multiple identical master nodes can also be used, for load balancing as an example. Half of your machines could use node "A" and half use "B", etc. However, the more variations you create from the "vanilla" model, the more exceptions you must keep track of. Ensure that the need is strong, and that it can be solved in no other way, before you make an exception.