This is a followup to my earlier post soliciting feedback on the
right namespace for my object oriented Unix system administration
framework. I've thought about the issues some more, and I've revised
the names of the modules I've written.
The PAUSE document states that "You need not wait for a response. Generally
a lack of response can be taken as acceptance of the module name being
proposed." Now, my previous proposal was so crappy, I can't take that
statement too seriously. 8).
Upon reflection it seems obvious that such a framework should live under
Unix::Sysadmin or something like that. Accordingly, I'd like to announce
that I intend to upload modules in development under the following names:
Unix::Sysadmin::Ainf; # Automount map entry class
Unix::Sysadmin::Ginf; # Unix group entry class
Unix::Sysadmin::Hinf; # Unix host entry class
Unix::Sysadmin::Nginf; # Netgroup class
Unix::Sysadmin::Uinf; # Unix user entry class
Unix::Sysadmin::List; # Abstract list class
::Ainf; # Automount map
::Ginf; # Group list
::Hinf; # Host list
::Nginf; # Netgroup list
::Uinf; # User list
Unix::Sysadmin::Cmds; # Unix commands base class
::FreeBSD; # FreeBSD platform specific commands
::Linux; # Linux platform specific commands
::SunOS; # Solaris platform specific commands
Unix::Sysadmin::Files; # Unix file paths base class
::FreeBSD; # FreeBSD platform specific files
::Linux; # Linux platform specific files
::SunOS; # Solaris platform specific files
Unix::Sysadmin::Config; # Framework-wide configuration class
Unix::Sysadmin::Utility; # Framework-wide utility class
I'm about 90% finished designing, 80% finished documenting and 75% finished
coding this puppy. (What? You're supposed to do those in sequence? Bah!)
I'll wait a month or so to digest any feedback, or simmer in resentment
over beeing ignored. Just kidding about the last part. 8)
Here follows the toplevel Pod. Thanks for your attention and keep on saving
the world!
NAME
Unix::Sysadmin - Object Oriented Framework for Unix System
Administration
SYNOPSIS
use Unix::Sysadmin::Ainf; # Automount maps class
use Unix::Sysadmin::Ginf; # Unix groups class
use Unix::Sysadmin::Hinf; # Unix hosts class
use Unix::Sysadmin::Nginf; # Netgroup class
use Unix::Sysadmin::Uinf; # Unix user class
use Unix::Sysadmin::List::<admin object> # Lists of the above
use Unix::Sysadmin::Cmds::<OS> # Platform specific commands classes
use Unix::Sysadmin::Files::<OS> # Platform specific files classes
use Unix::Sysadmin::Config # Framework-wide configuration class
use Unix::Sysadmin::Utility # Framework-wide utility class
DESCRIPTION
Unix::Sysadmin is an object oriented Perl framework for Unix system
administration. It's main features are platform independence (at least
among FreeBSD, Linux and Solaris), secure transport and a
peer-to-peer management model that is in tune with many Unix networks
we've seen.
This framework does much of what NIS does, but uses a secure transport
based on ssh. The trust model is therefore closely patterned on
ssh1. It's cross platform (across FreeBSD, Linux and SunOS) and hides
architectural differences from the user, so one can update passwd,
group and automount information to a heterogeneous groups of hosts
without regard to their OSen, or your own for that matter. Any host on
the network can manage any number of other hosts provided that the
managing host has the ssh key that enables root access on the managed
hosts, and also has access to the database of managed hosts and users.
Users may be granted access to one, some or all hosts on the network.
Automount maps work transparently with amd or autofs, and particular
keys may be distributed in the same way as users. Groups work
similarly. Though managed users, hosts, groups and amd maps may be
distributed selectively, the framework provides a place to keep these
objects globally unique.
Entity Classes
Unix::Sysadmin provides several classes that represent entities that
are frequently the target of Unix system administration activity. Of
particular interest are the Hinf and Uinf classes, which represent
hosts and users respectively. These are treated in detail in the
section on "The Hinf Classes" and the section on "The Uinf Class"
below. Other classes that represent manageable entities are the Ainf
class for automount maps (either amd or autofs), the Ginf class
for Unix groups and the Nginf class for "netgroups", an idea stolen
from but not orthogonal with NIS.
Support Classes
In addition to entity classes, Unix::Sysadmin includes several classes
that augment manageable entities. The List class is a base class for
lists of the basic entity classes. This class provides storage,
iteration, sorting, addition, and deletion of lists of the basic
entities. The various subclasses of List provide methods to update
their corresponding Unix administrative files. The Cmds and
Files classes provide architecture dependant information about
their respective subject matter.The Config and Utility classes
contain the sort of information you'd expect.
The following sections provide a somewhat lower-level treatment of
each of these classes in turn Each class also has one or
more manpages which are referred to in the appropriate
section below.
Entity Classes
Entity classes represent manageable objects or resources in the
Unix::Sysadmin framework.
The Hinf Classes
Unix::Sysadmin::Hinf is a base class for several system specific
classes describing Unix hosts of various architectures:
Unix::Sysadmin::Hinf::FreeBSD
Tested on FreeBSD versions from 2.2.5 to 4.0
Unix::Sysadmin::Hinf::Linux
Tested on Redhat 6.1 and 6.2
Unix::Sysadmin::Hinf::SunOS
Tested on SPARC Solaris 2.6 through Solaris 8.
An Hinf object knows what its hardware and software architectures
are, what sorts of commands it can perform and where its
configuration files are. It can therefore take actions (methods) on
itself such as updating administrative files (with the help of
List:: objects). Any host can be nominated as a 'master' host for
all or a subset of Unix hosts on a network. All that is required for
this is that the host possess an ssh key allowing root access on the
hosts to be managed, and access to a database of the various
entities. These databases are lists (see the section on "The List
Classes") of Hinf, Uinf, Ainf, Ginf and Nginf objects.
For a detailed look at the properties and methods of the Hinf class,
see the Unix::Sysadmin::Hinf(3) manpage.
The Uinf Class
The Uinf class describes users in a Unix network. Uinf objects
contain traditional Unix passwd information, as well as data
suitable for export to an LDAP or other directory format. The class
also keeps track of access permissions assigned to the user
represented. A user can be granted or denied access to all, some or
one host in the network. Though users may access different sets of
hosts, the Unix::Sysadmin framework provides a central place to store
UIDs and usernames so that these can be made unique across a set of
managed hosts.
For a detailed look at the properties and methods of the Uinf class,
see the Unix::Sysadmin::Uinf(3) manpage.
The Ainf Class
The Ainf class represents automount map entries (keys). Automount
keys may be applied to sets of hosts so that access to a particular
exported filesystem can be distributed to one, some or all hosts in
a network.
For a detailed look at the properties and methods of the Ainf class,
see the Unix::Sysadmin::Ainf(3) manpage.
The Ginf Class
The Ginf class represents Unix group entries. As with the other
entity classes, a Ginf object may be applied to one, some or all
hosts in a network. Like Uinf objects, Ginf objects can be made
globally unique with regard to group name and GID.
For a detailed look at the properties and methods of the Ginf class,
see the Unix::Sysadmin::Ginf(3) manpage.
Support Classes
These classes serve support roles within the Unix::Sysadmin framework.
The Nginf Class
The Nginf class represents netgroups. This object allows entity
objects to refer to sets of hosts with a single symbolic name. The
idea is stolen from NIS, of course. I don't run NIS or NIS+ so I
don't attempt to update its configuration. This class is therefore a
support class rather than an entity class.
For a detailed look at the properties and methods of the Nginf
class, see the Unix::Sysadmin::Nginf(3) manpage.
The List Classes
These classes are where much of the action is. Unix::Sysadmin::List is
a base class that provides storage, iteration, sorting, addition
and deletion of its underlying entity class in a list. The various
subclasses of List provide methods to produce the Unix
administrative file(s) corresponding to the entity class being
listed.
Unix::Sysadmin::List::Hinf
This class will produce a host file or DNS database from its
contents.
See the Unix::Sysadmin::List::Hinf(3) manpage for details of these
methods and the Unix::Sysadmin::List::Hinf(5) manpage for file
format.
Unix::Sysadmin::List::Uinf
If invoked by objects that belong to subclasses of Hinf, objects
of this class will produce password databases in whatever format
required by the invoking Hinf object. They may also enforce
access policies which means they may produce different passwd
entries depending on the rights assigned to a partcular user and
on which particular Hinf object is involved,
See the Unix::Sysadmin::List::Uinf(3) manpage for details of these
methods and the Unix::Sysadmin::List::Uinf(5) manpage for file
format.
Unix::Sysadmin::List::Ainf
If invoked by objects that belong to subclasses of Hinf, objects
of this class will produce automount maps in either amd or
automount format depending on the requirements of the invoking
Hinf object. In a manner similar to List::Uinf, objects of this
class may produce differing amd maps depending on the particular
invoking Hinf object.
See the Unix::Sysadmin::List::Ainf(3) manpage for details of these
methods and the Unix::Sysadmin::List::Ainf(5) manpage for file
format.
Unix::Sysadmin::List::Ginf
This class produces /etc/group files. In a manner similar to
List::Uinf, objects of this class may produce differing group
files depending on the particular invoking Hinf object.
See the Unix::Sysadmin::List::Ginf(3) manpage for details of these
methods and the Unix::Sysadmin::List::Ginf(5) manpage for file
format.
Unix::Sysadmin::List::Nginf
This class produces no corresponding Unix file. It could produce
an /etc/netgroup, but if you are running NIS, what do you need
this stuff for?
See the Unix::Sysadmin::List::Nginf(5) manpage for file format.
The Cmds Classes
The Unix::Sysadmin::Cmds class is a base class for os specific Unix
commands. The base class provides "lowest common denominator"
definitions which the following classes may override or supplement:
Unix::Sysadmin::Cmds::FreeBSD
FreeBSD specific commands. See the
Unix::Sysadmin::Cmds::FreeBSD(3) manpage.
Unix::Sysadmin::Cmds::Linux
Linux specific commands. See the Unix::Sysadmin::Cmds::Linux(3)
manpage.
Unix::Sysadmin::Cmds::SunOS
SunOS specific commands. See the Unix::Sysadmin::Cmds::SunOS(3)
manpage.
The Files Classes
The Unix::Sysadmin::Files class is a base class for os specific Unix
file paths. The base class provides "lowest common denominator"
definitions which the following classes may override or supplement:
Unix::Sysadmin::Files::FreeBSD
FreeBSD specific files. See the Unix::Sysadmin::Files::FreeBSD(3)
manpage.
Unix::Sysadmin::Files::Linux
Linux specific files. See the Unix::Sysadmin::Files::Linux(3)
manpage.
Unix::Sysadmin::Files::SunOS
SunOS specific files. See the Unix::Sysadmin::Files::SunOS(3)
manpage.
SEE ALSO
the Unix::Sysadmin::Hinf(3) manpage,
the Unix::Sysadmin::Uinf(3) manpage,
the Unix::Sysadmin::Ainf(3) manpage,
the Unix::Sysadmin::Ginf(3) manpage,
the Unix::Sysadmin::Nginf(3) manpage,
the Unix::Sysadmin::List::Hinf(3) manpage,
the Unix::Sysadmin::List::Unif(3) manpage,
the Unix::Sysadmin::List::Ainf(3) manpage,
the Unix::Sysadmin::List::Ginf(3) manpage,
the Unix::Sysadmin::List::Hinf(5) manpage,
the Unix::Sysadmin::List::Uinf(5) manpage,
the Unix::Sysadmin::List::Ainf(5) manpage,
the Unix::Sysadmin::List::Ginf(5) manpage,
the Unix::Sysadmin::List::Nginf(5) manpage,
the Unix::Sysadmin::Cmds::FreeBSD(3) manpage,
the Unix::Sysadmin::Cmds::Linux(3) manpage,
the Unix::Sysadmin::Cmds::SunOS(3) manpage,
the Unix::Sysadmin::Files::FreeBSD(3) manpage,
the Unix::Sysadmin::Files::Linux(3) manpage,
the Unix::Sysadmin::Files::SunOS(3) manpage
AUTHOR
Howard Owen <[EMAIL PROTECTED]>
--
Howard Owen - [EMAIL PROTECTED] - +1-831-477-1123
"Even if you are on the right track, you'll get run over if you just sit there."