diff options
Diffstat (limited to 'base/all/root/scripts/cluster_configure/README')
-rw-r--r-- | base/all/root/scripts/cluster_configure/README | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/base/all/root/scripts/cluster_configure/README b/base/all/root/scripts/cluster_configure/README deleted file mode 100644 index caa75e3..0000000 --- a/base/all/root/scripts/cluster_configure/README +++ /dev/null @@ -1,168 +0,0 @@ -WHAT? ------ - -This is a templated-based configuration utility for clusters. It -allows CTDB and various services (Samba, NFS, vsftpd, ...) to be -configured. It should be installed/run on each node after relevant -packages are installed or after any master configuration/template -change. - -WHY? ----- - -This is meant to be flexible and allow subsets of services to be -configured. - -HOW? ----- - -Run like this to test template expansion into a staging subdirectory -"t/": - - ./cluster-configure.py -vv -n -t templates/rhel -s t example.conf - -Or without -n but as root to test actual installation of files and -reload of services. - -Try --help to see the options. - -Notes - this sounds complex, but it isn't... see the example -configuration file and templates. Run the above command with the "-n" -option and check out the files in the staging area... :-) - -* Master configuration file - - The master configuration file is parsed by Python's ConfigParser - module. Therefore, it is subject to any restrictions of that - module. For example, older versions do not allow identation of - settings. - -* Template structure - - Each subdirectory of templates directory is a package name, with a - 2-digit-plus-dot prefix used to order the processing of packages. - If, according to the system's package manager, that package is not - installed on the system then no further processing is done. - - A package subdirectory should have one or more version - subdirectories that are matched to the version of the package - reported by the package manager. A version subdirectory is named as - <min>#<max> with a literal '#' as the separator. A missing limit - implies no limit, so a version subdirectory of "#" matches all - version. Comparisons with <min> use <= and comparisons with <max> - use <. This allows simple ranges like "3.0#4.0" to work sensibly - with "4.0#". The highest matching version is used, so the above - could just be written "3.0#" and "4.0#". - - A "files" subdirectory of a version subdirectory contains a - directory tree of configuration files that have template - substitution done and are then installed into the root filesystem. - A file is only actually installed if, after substitutions, it is - different to the currently/previously installed file. - - An "events" subdirectory of a version subdirectory can contain "pre" - and "post" files. If any configuration files are (to be) installed - the "pre" is run before installation of these files and "post" is - run afterwards. - - For example, consider the following: - - templates/rhel/60.nfs-utils/1.0#/files/etc/exports - templates/rhel/60.nfs-utils/1.0#/files/etc/sysconfig/nfs - templates/rhel/60.nfs-utils/1.0#/events/post - - If nfs-utils with a version >= 1.0 is installed then: - - 1. Template substitution is done on both files the /etc/exports and - /etc/sysconfig/nfs files, and each resulting file is installed if - it is different to the already installed corresponding file. - - 2. If a file was installed then "post" is run. This tells NFS to - reload its configuration. - -* Template substitutions - - !!variable!! - - The template format is !!variable!!. @@variable@@ has been avoided - so that you can install a configuration and templates with - autocluster. - - !!|expr!! - - Apart from simple variables, templates can contain expression - evaluations. !!|expr!! causes expr to be processed with Python's - eval() function and the *return value* (not the output) is - substituted for the template expression. - - !!%plugin.func(args)!! - - Plugin expressions are an extension to expression evaluations. If a - plugin called "export.py" contains a function called "format" then a - template can contain: - - !!%export.format(REST)!! - - and this will cause the return value the following to be substituted: - - export.format(config, self.name, ... REST ...) - - where: - - - config is the global configuration object - - - self.name is the name of the current package being processed - - - ... REST ... is usually a printf-style format string followed by a - list of configuration keys who's values should be substituted into - the - - Note that, for robustness, plugins don't actually get imported into - the regular namespace so plugin expressions are quite useful... even - though they might look confusing at first. - - An example is illustrative... - - Assuming that export.py contains: - - def format(config, package, format, items): - ... - - In config (the master configuration file), several exports may be - defined for the given package. Each will be of the form: - - [export:nfs-utils:data] - share = data - fsid = 834258092 - - This will inherit the directory and other options from the share - "data": - - [share:data] - directory = /srv/xyz123/data - filesystem = /srv/xyz123 - permissions = 0777 - comment = An example share - - To create export defintions for NFS, something like this can be - used: - - !!%export:format("\"%s\" *(rw,fsid=%s)\n", ["directory", "fsid"])!! - - This produces a line of output for each export, substituting the - values for "directory" and "fsid" appropriately. In the above case, - the output would be: - - "/srv/xyz123/data" *(rw,fsid=834258092) - -WHERE? ------- - -This is part of autocluster, so you can get it from: - - git://git.samba.org/autocluster.git - -WHO? ----- - -Martin Schwenke <martin@meltin.net> |