========================== clufter (CLUster FilTER) ========================== .. code-block:: bash $ ./run-dev -h | sed '2,8p;d' Tool/library for transforming/analyzing cluster configuration formats While primarily aimed at (CMAN,rgmanager)->(Corosync/CMAN,Pacemaker) cluster stacks configuration conversion (as per RHEL trend), the command-filter-format framework (capable of XSLT) offers also other uses through its plugin library. And nope, the name is not a pun, typo or lisp-pronounced `cluster` per se :-P Historical curiosity: ``clufter`` logotype should actually make ``f`` look similar to ``ſ`` letter (`long s`__, in use some 200 years ago) as an explicit association with an s-contained word (conversely, project name searchable in *A new alphabetical vocabulary, Gailic and English* `OCR scan`__). .. __: https://en.wikipedia.org/wiki/Long_s .. __: http://deriv.nls.uk/dcn6/7664/76646081.6.pdf ------- Usage ------- The package can either be used as a separate CLI tool (as per *What*) or as a Python library, which is the case, e.g., with `pcs`_. .. _pcs: https://github.com/feist/pcs/ Demo ~~~~ When properly installed, ``clufter`` command should be only these few letters away at your shell prompt. For simplicity, I will stick with what one can use directly after cloning the repository and running ``./run-check`` (to get the helper binary compiled): .. code-block:: bash $ ./run-dev ccs2pcscmd -gsq tests/filled.conf pcs cluster auth ju hele pcs cluster setup --start --name test ju hele --consensus 200 \ --token 5000 --join 100 sleep 60 pcs cluster cib tmp-cib.xml --config pcs -f tmp-cib.xml property set stonith-enabled=false pcs cluster cib-push tmp-cib.xml --config Here we got a sequence of ``pcs`` commands that should get us started with rebuilding a cluster originally based on CMAN/rgmanager stack (with configuration captured in given file), now targetting Corosync/Pacemaker one (for which ``pcs`` is one of the high-level configuration tools). Depending on how sensitive the target environment is (conversely, how much confident of ``clufter`` and its output you are), you can either reason about each command, possibly making correction in due course (well, ``clufter`` never had ambitions to be fully and reliably automagic), or just pipe that into the shell interpreter, for instance: .. code-block:: bash $ ./run-dev ccs2pcscmd -gsq tests/filled.conf | sh -x which will also turn on echoing of what is being executed, just in case. Take this just as a showcase of the primary goal for this tool, there are many other realated conversion/analysis related tasks featured and discoverable as: .. code-block:: bash $ ./run-dev -l Dependencies ~~~~~~~~~~~~ Python-wise: - `lxml`_ (``python-lxml``) general: - Python 2 - 2.7 preferred - 2.6 with `ordereddict`_ or some kind of ``collections.OrderedDict`` backport (#929258) required - embedded ``ccs_flatten`` (originally `pacemaker.git/extra/rgmanager `_) compiled helper - suitable C compiler (``gcc``) - ``libxml2`` tests: - outside of Python 2.7+, `unittest2`_ (``python-unittest2``) is needed .. _lxml: http://lxml.de .. _ordereddict: https://pypi.python.org/pypi/ordereddict .. _unittest2: https://pypi.python.org/pypi/unittest2 Stable version ~~~~~~~~~~~~~~ Official released tarballs (as opposed to what you can `download from GitHub `_) can be found, together with GPG signatures, at https://people.redhat.com/jpokorny/pkgs/clufter/. Also, the ``HEAD`` of ``master`` branch in the repository should always point to the latest stable, tagged (and GPG-signed, for that matter) release. Current status of the test run using Travis CI against this branch: .. image:: https://travis-ci.org/jnpkrn/clufter.svg?branch=master :target: https://travis-ci.org/jnpkrn/clufter .. image:: https://coveralls.io/repos/jnpkrn/clufter/badge.svg?branch=master&service=github :target: https://coveralls.io/github/jnpkrn/clufter?branch=master Development version ~~~~~~~~~~~~~~~~~~~ TBD .. image:: https://travis-ci.org/jnpkrn/clufter.svg?branch=next :target: https://travis-ci.org/jnpkrn/clufter .. image:: https://coveralls.io/repos/jnpkrn/clufter/badge.svg?branch=next&service=github :target: https://coveralls.io/github/jnpkrn/clufter?branch=next --------------- Other remarks --------------- Bash completion ~~~~~~~~~~~~~~~ For convenience, bash completion is at user's hands by just running within the session: .. code-block:: bash $ eval "$(clufter --completion-bash)" Indeed, to make such a feature permanent, the produced script can be appended to or referred from some relevant file like ``~/.bashrc``, or when ``bash-completion`` package installed, stored to ``~/.config/bash_completion`` (per-user) or ``/usr/share/bash-completion/bash_completion`` (system-wide). It's also possible this is already performed on the packaging level. --------- Contact --------- Common cluster/HA channels falling under `ClusterLabs`_ umbrella: - `users dedicated mailing list`_ - ``#clusterlabs`` channel at Freenode IRC server .. _ClusterLabs: http://clusterlabs.org/ .. _users dedicated mailing list: http://oss.clusterlabs.org/mailman/listinfo/users