NAME

  cfmdb - manage global aspects of a cfm database


SYNOPSIS

  cfmdb {--initdb}

  cfmdb {--init -i} {--host -h} <host>
  cfmdb {--init -i} {--rpm -r} [--all -a] [<rpm> ...]
  cfmdb {--init -i} {--set -s} <set> {<file> | <symlink>} [...]

  cfmdb {--hostset -h} <host> [...]
                       [--add -a] [--delete -d] [--da] [<set> ...]

  cfmdb {--query -q} [--all -a] [--counts -c]
                     [--host -h] [<host> ...]
                     [--list -l]
                         [--set -s] [<set> ...]
                     [--file -f] [<file> ...]

  cfmdb {--erase -e} [--all -a]
                     [--host -h] [<host> ...]
                     [{--set -s} <set> ...] [{--file -f} <file> ...]
                     [-F <file> ...] [-L <symlink> ...]

  cfmdb {--version}
  cfmdb {--verbosity -v} <level>


DESCRIPTION

The cfmdb cmd is used to install, initialize, and configure the cfm database (cfmdb). Use it to create a new cfmdb, to install or erase hosts, to manipulate hosts' set lists, to install, erase, or modify the content of sets, and to query the cfmdb about its content.


OPTIONS

cfmdb --initdb

  Use the --initdb option to create a new cfm database (cfmdb).  This
  verifies the CFMROOT env var is set, creates cfm dirs and admin
  files, and initializes the `all' set identified in CFMROOT/allfiles.
  The $CFMROOT dir should be NFS mountable by all hosts that use this
  cfmdb. On a typical linux server the cfmdb will contain around
  750-1000 config files and be about 10MB in size. Note security
  concerns related to sysadmin in L<assumptions>. Repeating execution
  of this cmd will not overwrite < existing entries.

cfmdb {--init -i}

  {--host -h} <host>
  Use the -h init sub-option to install a new host entry in the
  cfmdb. Host entries are created with the mandatory preemptive set
  list. Use the cfmdb --hostset option to extend it. The host specific
  files listed in CFMROOT/hsfiles and the SVR4 runcmd symlinks are
  initialized and uploaded from the executing host using <host> as the
  set name. See L<cfmh> for more on runcmd symlinks.  Note that you
  must execute this cmd on <host> for the files to be correctly
  initialized. Note host name syntax: /^[a-z]+[a-z0-9.-]*$/

  {--rpm -r} [--all -a] [<rpm> ...]
  Use the -r init sub-option to initialize the cfmdb for the config
  files of one or more rpms. For each rpm specified the rpmdb is
  queried to id its config files. Thus the rpms must already be
  installed on the executing host. For each config file a cfmdb
  rcsfile is initialized using the rpm name as the set tag. If the -a
  option is specified config files for all rpms installed on the
  executing host are processed.

  {--set -s} <set> [[--] {<file> | symlink} ...]
  Use the -s <set> init sub-option to create or add new files to a set
  made from an arbitrary collection of config files. For each config
  file a cfmdb rcsfile is initialized and uploaded with a version
  tagged with the supplied <set> name.  Note setname systax:
  /^[a-zA-Z]+[a-zA-Z0-9+-]*$/
  NOTE: Files added to the cfmdb using this cmd will NOT be found
  using the default set. You must add the set name to the host's
  preemptive set list on the hosts that use the file.

cfmdb {--hostset -h} <host> [...]

  Use the -h <host> option to add, delete, or resequence a host's
  optional extensions to its mandatory preemptive set list. A 
  host's hostset entry contains 4 mandatory items:
    <host_id> <ref_set> <pnp_set> <hostname_set>
  The host_id is an identifier string, not a set name.
  See L<overview> for info about the mandatory special sets.
  With no sup-options the -h <host> option is the equivalent of a
  query, ie it returns the hosts set list. Also note that the -d and
  -a options together will replace the set list. Ie they are the
  equivalent of the --da option.

  [--add -a] <set> [...]
  Use the -a sub-option to add new sets to the host's preemptive
  set list.  The new sets are suffixed to the existing set list.
  Note setname syntax: /^[a-zA-Z]+[a-zA-Z0-9+-]*$/

  [--delete -d] <set> [...]
  Use the -d sub-option to delete set(s) from a host's preemptive
  set list.

  [--da] [<set> ...]
  Use the --da sub-option to delete a host's preemptive set list
  and replace it with a new list. This is required when you need
  to resequence an optional preemptive set list to change the
  order in which sets are selected. Note: do not include the
  mandatory `ref, <pnp>, <host>' sets in the new list. They will
  be prefixed to your supplied list.
cfmdb {--query -q}

Query the cfmdb about statistical counts, hosts, sets, and files.

  [--counts -c]
  Use the -c option to list a count of rcsfiles, sets, and
  file version instances currently in use in the cfmdb.

  [--all -a]
  Query for all hosts, sets, or files.
  The -a option has no affect on the -c option.

  [--host -h] [<host> ...]
  Use the -h option to list the entries for one or more hosts.
  Combine it with the -a option to list them all. 
  All is the default when no host names are supplied.

  [--list -l]
  Use the list option with the -s option to list the files in each
  set or with the -f option to list the sets which exist for each
  file. The list option has no effect on the -c and -h options.

  [{--set -s} <set> ...]
  Use the -s option to list one or more sets and a count or their
  member files. Processes all sets in the cfmdb with the -a option.
  All is the default when no set is supplied. Lists all files in each
  set with the -l option.

  [{--file -f} <file> ...]
  Use the -f option to list one or more files and a count of the sets
  for each one. Processes all files in the cfmdb with the -a option.
  Lists all sets in each file with the -l option.
cfmdb {--erase -e}

Erase hosts, sets, or files.

  [--all -a]
  Erasing hosts from the cfmdb is pretty straight forward.  Erasing
  files or sets is more complex. Erasing either all sets or all files
  would effectively erase the entire cfmdb and we don't need special
  cmds for that. If you start with a set you can erase part of it, ie
  remove one or more of the files from membership in the set.  If you
  start with a file you can erase its membership in one or more sets.
  These are the same. Erasing all the files in a set erases the set.
  Erasing all of the set memberships in a file erases the file.  These
  are not the same. So when you use the -a option with the -s or -f
  option carefully note that:
    -as <set>   implies all files OF a set,
                NOT all sets. This deletes a set from the cfmdb.
    -af <file>  implies all sets memberships OF a file,
                NOT all files. This deletes a file from the cfmdb.

  [--host -h] [<host> ...]
  Use the -h suboption to erase one or more hosts from the cfmdb.
  The -ha combination would remove all hosts.

  [{--set -s} <set> ...] [{--file -f} <file> ...]
  [-F <file> ...] [-L <symlink> ...]
  Use the -s suboption with the -a suboption to erase all of a set.
  Use the -s suboption with the -f suboption to erase the set from
  one or more files or symlinks that exist on the host. Use it with
  the -F or -L suboptions to erase the set from files or symlinks
  respectively that do not exist on the executing host. 
  Use the -f, -F, or -L suboptions with the -a suboption to erase all
  of a cfmdb file. The -F and -L suboptions are required for
  non-existant regular files and symlinks respectively.
  Note: An alternative to -a{f|F|L} is `rm <cfmdb_rcsfile>'. 


AUTHOR

Derald Metzger <dmetz@remotesensing.org>


BUGS

Surely: 000210-dam. Just started


FILES

  allfiles  list of non-rpm config files put in the all set
  config    misc cfm configuration params
  hostsets  list of hosts and their sets list
  hsfiles   list of host specific files put in each E<lt>hostE<gt> set


SEE ALSO

cfm-cmd-list


COPYRIGHT

Derald Metzger 1998 - 2000. This program is distributed under the GPL.