Forge Home

gluster

pdk
GlusterFS management Puppet module

Roman Chukov

arrnorets

417 downloads

394 latest version

2.8 quality score

Version information

  • 0.2.0 (latest)
  • 0.1.0
released Jul 29th 2021
This version is compatible with:
  • Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2016.4.x
  • Puppet >= 4.10.0 < 7.0.0
  • CentOS
    ,
    OracleLinux
    ,
    RedHat
    ,
    Scientific
    ,
    Fedora

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'arrnorets-gluster', '0.2.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add arrnorets-gluster
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install arrnorets-gluster --version 0.2.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.

Download

Documentation

arrnorets/gluster — version 0.2.0 Jul 29th 2021

Table of contents

  1. Common purpose
  2. Compatibility
  3. Installation
  4. Config example in Hiera and result files

1. Common purpose

Gluster is a module for GlusterFS config and package version manasging.

2. Compatibility

This module was tested on CentOS 7. However, it should work on newer versions of CentOS, Fedora and RHEL as well where Ansible 2.9 or newer is available.

3. Installation

mod 'gluster',
    :git => 'https://github.com/arrnorets/puppet-gluster.git',
    :ref => 'main'

4. Config example in Hiera and result files

This module follows the concept of so called "XaaH in Puppet". The principles are described here and here.

Here is the example of config in Hiera:

---
gluster:
  packages:
    ansible: '2.9.10-1.el7'
    glusterfs: '7.6-1.el7'
    glusterfs-server: '7.6-1.el7'
    glusterfs-libs: '7.6-1.el7'
  enable: true

  # /* Obligatory setting. Choosin the host from which per Gluster volume options are applied. */
  management_server: 'gfs-node2'

  # /* This options describes whether files for SSL encryption must be installed 
  # See https://docs.gluster.org/en/v3/Administrator%20Guide/SSL */
  ssl_enabled: "off"
  # /* END BLOCK */

  config:
    # /* Global options for /etc/glusterfs/glusterd.vol */
    options:
      glusterd:
        "type" : mgmt/glusterd
        "option working-directory" : /var/lib/glusterd
        "option transport-type" : socket,rdma
        "option transport.socket.keepalive-time" : 10
        "option transport.socket.keepalive-interval" : 2
        "option transport.socket.read-fail-log" : off
        "option transport.socket.listen-port" : 24007
        "option transport.rdma.listen-port" : 24008
        "option ping-timeout" : 0
        "option event-threads" : 1
        "option rpc-auth-allow-insecure" : "on"
        "option max-port" : 60999
    # /* END BLOCK */

    # /* Per volume options which are applied via ansible */
    volumes:
      glustervol:
        options:
          performance.client-io-threads: "off"
          nfs.disable: "on"
          storage.fips-mode-rchecksum: "on"
          transport.address-family: inet
          storage.owner-uid: 36
          storage.owner-gid: 36
          # auth.allow: 127.0.0.1,10.10.10.1,10.10.10.2,10.10.10.3
          # auth.ssl-allow: 127.0.0.1,localhost,gfs-node2,gfs-node3,gfs-node1
          # client.ssl: on
          # server.ssl: on
    # /* END BLOCK */

  # // Files for SSL encryption - see  https://docs.gluster.org/en/v3/Administrator%20Guide/SSL 
  ssl_files:
    gfs-node2:
      key: <gfs-node2 key is here>
      cert: <gfs-node2 cert is here>
    gfs-node3:
      key: <gfs-node3 key is here>
      cert: <gfs-node3 cert is here>
    gfs-arbiter:
      key: <gfs-arbiter key is here>
      cert: <gfs-arbiter cert is here>
    ca:
      cert: <CA cert is here>

It will install ansible and gluster packages, enable service glusterd and produce the folowing files:

  • /etc/glusterfs/glusterd.vol:

    volume management
    
    type mgmt/glusterd
    option working-directory /var/lib/glusterd
    option transport-type socket,rdma
    option transport.socket.keepalive-time 10
    option transport.socket.keepalive-interval 2
    option transport.socket.read-fail-log false
    option transport.socket.listen-port 24007
    option transport.rdma.listen-port 24008
    option ping-timeout 0
    option event-threads 1
    option rpc-auth-allow-insecure on
    option max-port 60999
    
    end-volume
    
  • /opt/ansible4puppet-gluster/conf/site.yml:

    - name: Configure gluster settings
      hosts: localhost
      strategy: linear
    
      tasks:
      - name: Set multiple options on GlusterFS volume glustervol
        gluster_volume:
          state: present
          name: glustervol
          options:
            { 
              performance.client-io-threads: "off",
              nfs.disable: "on",
              storage.fips-mode-rchecksum: "on",
              transport.address-family: "inet",
              storage.owner-uid: "36",
              storage.owner-gid: "36"
            }
        delegate_to: localhost 
    

The ansible part is executed with script /opt/ansible4puppet-gluster/bin/glusterVolumeOptionsUpdate.sh which is generated as an ERB template inside of the module using abovementoned "management_server" setting from Hiera.