gdeploy is a new tool developed using ansible, to help in setting backend, creating volume, and deploying gluster usecases.
Setting up a backend filesystem for GlusterFS becomes a tedious task as the number of servers/bricks increase. GlusterFS being a highly scalable software solution, provides the user ability to create a storage cluster with large number of nodes.
As the number of nodes increase, naturally we face the following shortcomings:
- One has to login to the nodes to setup the backend.
- Typing a long command with combination of node:brick is error prone.
- In case of error, clean up is painful.
- User might find setting up an UI solution to be too heavy, and again requires installing and maintaining necessary packages on all the nodes.
- If the user wants to use the cool new snapshot feature, thin-p backend has to be configured. This requires running plethora of commands to setup thin-p volume on multiple nodes.
gdeploy, addresses the above shortcomings and adds cool features to make the life of an admin/user easy.
gdeploy 1.0 currently implements the features:
- Setting up a thin-p backend on any number of nodes in a non-interactive and automated way.
- Mount the LV on a specified directory.
- Peer probe the listed nodes and create a volume using them.
- Mount the volume for the listed clients.
- Set/Unset an option on a volume.
- add-brick to a given volume.
- remove-brick from a given volume.
- Support multiple volume types...
gdeploy can be run from one's laptop/workstation, and is not needed to be installed on any of the servers that gdeploy manages.
Installing - gdeploy RPMs for CentOS and Fedora can be found here.
Bootstrapping - There is a one step bootstrapping required; to create passwordless ssh to the nodes which are intended to be used to create a cluster.
$ ssh-copy-id email@example.com
Once the bootstrapping is done it is a matter of writing configuration files to setup the components like:
- Setup backend.
- Create volume.
- add-brick ...
A single configuration can be written to many tasks or can be made modular by writing a configuration file for each task.
My next post will explain on how to writing configuration files to do particular tasks with examples.