-
Notifications
You must be signed in to change notification settings - Fork 86
Home
ClusterShell is an event-based Python library to execute commands on local or distant cluster nodes in parallel depending on the selected engine and worker mechanisms. The library provides advanced nodeset and NodeGroups handling methods. Its goal is to improve the administration of cluster by providing a lightweight but scalable API for developers. Also, clush, clubak and nodeset, three convenient command-line tools using the library are included.
ClusterShell allows for running commands in parallel on very large Linux clusters using present remote shell facilities on your cluster like SSH. It is designed to easily write administrative scripts or applications for clusters. A very simple example of ClusterShell script speaks louder than words (also see NodeSet, Task):
from ClusterShell.Task import task_self, NodeSet
task = task_self()
task.run("/bin/uname -r", nodes="callisto[36-39,133]")
for output, nodes in task.iter_buffers():
print NodeSet.fromlist(nodes), output
ClusterShell comes with a full-featured command line (clush) for sending cluster commands and gathering output data. Some very simple examples follow:
$ clush -b -w callisto[32-157] uname -r
---------------
callisto[32-157]
---------------
2.6.18-164.11.1.el5
$ clush -b -r -w callisto[32-157] uname -r
---------------
@chassis[1-7]
---------------
2.6.18-164.11.1.el5
The library defines a node groups syntax (through the NodeSet class) and allows you to bind several group sources to your ClusterShell-ready applications. The nodeset command allows you to easily compute node-set operations from the shell:
$ nodeset -f donut[1-9] -x donut[2,5]
donut[1,3-4,6-9]
$ nodeset -e pizza[2-22/2]
pizza2 pizza4 pizza6 pizza8 pizza10 pizza12 pizza14 pizza16 pizza18 pizza20 pizza22
$ for node in $(nodeset -e pizza[2-640]); do something_with $node; done
...and NodeGroups too:
$ nodeset -f @oss @mds
callisto[4-24]
$ nodeset -r @oss @mds
@lustre
- Stable version: 1.5.1
- Development version: [milestone:2.0]
- Deprecated versions: 1.0, 1.1, 1.2 ([milestone:1.2 milestone notes]), 1.3.3 ([milestone:1.3 milestone notes]), 1.4.3 ([milestone:1.4.3], [milestone:1.4.2], [milestone:1.4.1], [milestone:1.4] milestone notes)
- Supported plateforms are RHEL5, RHEL6, Fedora 11-16 and Debian.
- If you're stuck with Python 2.3 (RHEL4), you can still use version 1.1.
Two ClusterShell RPM packages are available:
-
clustershell.noarch
owns the tools and library -
vim-clustershell.noarch
is an optional RPM which adds VIM syntax files for ClusterShell configuration files.
Latest ClusterShell release RPMS are available on Sourceforge:
ClusterShell is part of Fedora Linux. ''Yum'' makes it easy to get it:
$ yum install clustershell vim-clustershell
You can also check this Fedora "stable" download matrix (v1.5.1):
Fedora 15 | RPM | VIM syntax files RPM | Source RPM |
Fedora 14 | RPM | VIM syntax files RPM | Source RPM |
Fedora 13 | RPM | VIM syntax files RPM | Source RPM |
EPEL 6 | RPM | VIM syntax files RPM | Source RPM |
EPEL 5 | RPM | VIM syntax files RPM | Source RPM |
- Packages for Debian are also available. Check http://packages.debian.org/clustershell to see which version is available for each Debian release. Currently, packages are available for, at least:
- wheezy (Testing)
- sid (Unstable)
- Packages for Ubuntu are available on universe repository. Check http://packages.ubuntu.com/clustershell.
- Online Epydoc html documentation for developers:
- Version 1.4.3 (stable, Python2.4+)
- Old versions:
- Version 1.3 (stable, Python2.4+) ([milestone:1.3 milestone notes])
- Version 1.1 (stable, Python2.3)
- Class diagram for version 1.1
- ClusterShell Quick Overview slides (June 2011, v1.4/1.5)
- General
- NodeGroups
- Libray
- NodeSet
- RangeSet
- Task
- EventHandler
- Comparison with Pdsh
- Bug reports: to report bugs, login with your github account and use New Issue link
- Contact us through [email protected] (subscribe to it)
- Support us by telling Ohloh you like it. :)
- /.