Monday, September 14, 2015

gdeploy: A Short Introduction

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:
  1. One has to login to the nodes to setup the backend.
  2. Typing a long command with combination of node:brick is error prone.
  3. In case of error, clean up is painful.
  4. User might find setting up an UI solution to be too heavy, and again requires installing and maintaining necessary packages on all the nodes.
  5. 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:
  1. Setting up a thin-p backend on any number of nodes in a non-interactive and automated way.
  2. Mount the LV on a specified directory.
  3. Peer probe the listed nodes and create a volume using them.
  4. Mount the volume for the listed clients.
  5. Set/Unset an option on a volume.
  6. add-brick to a given volume.
  7. remove-brick from a given volume.
  8. Support multiple volume types...

Using gdeploy:


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
Once the bootstrapping is done it is a matter of writing configuration files to setup the components like:
  1. Setup backend.
  2. Create volume.
  3. 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.