{"id":28088924,"url":"https://github.com/voxpupuli/puppet-gluster","last_synced_at":"2025-12-11T21:29:11.318Z","repository":{"id":20201360,"uuid":"23472734","full_name":"voxpupuli/puppet-gluster","owner":"voxpupuli","description":"Create and manage Gluster pools, volumes, and mounts","archived":false,"fork":false,"pushed_at":"2025-03-19T19:08:56.000Z","size":510,"stargazers_count":16,"open_issues_count":46,"forks_count":72,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-04-29T20:25:17.191Z","etag":null,"topics":["archlinux-puppet-module","centos-puppet-module","debian-puppet-module","hacktoberfest","linux-puppet-module","puppet","redhat-puppet-module","sles-puppet-module","ubuntu-puppet-module"],"latest_commit_sha":null,"homepage":"https://forge.puppet.com/puppet/gluster","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voxpupuli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"vox-pupuli","github":"voxpupuli"}},"created_at":"2014-08-29T17:55:55.000Z","updated_at":"2024-06-12T10:06:43.000Z","dependencies_parsed_at":"2023-07-12T14:27:28.208Z","dependency_job_id":"d89339e1-f6af-49cd-a457-2b72b2eae31d","html_url":"https://github.com/voxpupuli/puppet-gluster","commit_stats":{"total_commits":329,"total_committers":40,"mean_commits":8.225,"dds":0.5349544072948329,"last_synced_commit":"4ad4f970151a2e1184d086d97041999aa7d23b9b"},"previous_names":["covermymeds/puppet-gluster"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gluster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gluster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gluster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gluster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxpupuli","download_url":"https://codeload.github.com/voxpupuli/puppet-gluster/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253094653,"owners_count":21853253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archlinux-puppet-module","centos-puppet-module","debian-puppet-module","hacktoberfest","linux-puppet-module","puppet","redhat-puppet-module","sles-puppet-module","ubuntu-puppet-module"],"created_at":"2025-05-13T12:52:31.225Z","updated_at":"2025-12-11T21:29:11.257Z","avatar_url":"https://github.com/voxpupuli.png","language":"Ruby","funding_links":["https://opencollective.com/vox-pupuli","https://github.com/sponsors/voxpupuli"],"categories":[],"sub_categories":[],"readme":"\n# Gluster module for Puppet\n\n[![Build Status](https://travis-ci.org/voxpupuli/puppet-gluster.png?branch=master)](https://travis-ci.org/voxpupuli/puppet-gluster)\n[![Code Coverage](https://coveralls.io/repos/github/voxpupuli/puppet-gluster/badge.svg?branch=master)](https://coveralls.io/github/voxpupuli/puppet-gluster)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/gluster.svg)](https://forge.puppetlabs.com/puppet/gluster)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/gluster.svg)](https://forge.puppetlabs.com/puppet/gluster)\n[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/gluster.svg)](https://forge.puppetlabs.com/puppet/gluster)\n[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/gluster.svg)](https://forge.puppetlabs.com/puppet/gluster)\n\n## Moved to Vox Pupuli\nThis module has been moved to the [Vox Pupuli](https://github.com/voxpupuli/) organization.  Please update all bookmarks and Puppetfile references.\n\n## Table of Contents\n\n1. [Overview](#overview)\n2. [Custom Facts](#custom-facts)\n3. [Classes](#classes)\n4. [Resources](#resources)\n5. [Examples](#examples)\n6. [Contributing](#contributing)\n7. [Copyright](#copyright)\n\n## Overview\n\nThis module installs and configures servers to participate in a [Gluster](http://www.gluster.org/) Trusted Storage Pool, create or modify one or more Gluster volumes, and mount Gluster volumes.\n\nAlso provided with this module are a number of custom Gluster-related facts.\n\n## Custom Facts\n\n* `gluster_binary`: the full pathname of the Gluster CLI command\n* `gluster_peer_count`: the number of peers to which this server is connected in the pool.\n* `gluster_peer_list`: a comma-separated list of peer hostnames\n* `gluster_volume_list`: a comma-separated list of volumes being served by this server\n* `gluster_volume_#{vol}_bricks`: a comma-separated list of bricks in each volume being served by this server\n* `gluster_volume_#{vol}_options`: a comma-separared list of options enabled on each volume\n* `gluster_volume_#{vol}_ports`: a comma-separated list of ports used by the bricks in the specified volume.\n\nThe `gluster_binary` fact will look for an [external fact](http://docs.puppetlabs.com/guides/custom_facts.html#external-facts) named `gluster_custom_binary`. If this fact is defined, `gluster_binary` will use that value. Otherwise the path will be searched until the gluster command is found.\n\n## Classes\n\n### params.pp\nThis class establishes a number of default values used by the other classes.\n\nYou should not need to include or reference this class directly.\n\n### repo.pp\nThis class enables the GlusterFS repository. Either [Gluster.org](http://download.gluster.org/pub/) for APT or [CentOS](https://wiki.centos.org/SpecialInterestGroup/Storage) managed YUM for EL.\n\nFedora users can get GlusterFS packages directly from Fedora's repository. Red Hat users with a Gluster Storage subscription should set the appropriate subscription/repo for their OS. Therefore for both Fedora and Red Hat Gluster Storage users, the default upstream community repo should be off:\n\n```puppet\ngluster::repo =\u003e false\n```\n\nFor Debian, the latest packages of the latest release will be installed by default. Otherwise, specify a version:\n\n```puppet\nclass { gluster::repo:\n  version =\u003e '3.5.2',\n}\n```\n\nFor Ubuntu, the [Gluster PPA](https://launchpad.net/~gluster) repositories only contain the latest version of each release.\nTherefore specify the release to install:\n\n```puppet\nclass { gluster::repo:\n  release =\u003e '10',\n}\n```\n\n\nFor systems using YUM, the latest package from the 3.8 release branch will be installed. You can specify a specific version and release:\n\n```puppet\nclass { gluster::repo:\n  release =\u003e '3.7',\n}\nclass { gluster:\n  version =\u003e '3.7.12',\n}\n```\n\nPackage priorities are supported, but not activated by default.\n\nYum: If a `priority` parameter is passed to this class, the `yum-plugin-priorities` package will be installed, and a priority will be set on the Gluster repository.\n\nApt: If a `priority` parameter is passed to this class, it will be passed as is to the Apt::Source resource. See Puppetlabs [apt](https://forge.puppetlabs.com/puppetlabs/apt) module for details.\n\nThis is [useful](http://blog.gluster.org/2014/11/installing-glusterfs-3-4-x-3-5-x-or-3-6-0-on-rhel-or-centos-6-6-2/) in the event that you want to install a version from the upstream repos that is older than that provided by your distribution's repositories.\n\n### install.pp\nThis class handles the installation of the Gluster packages (both server and client).\n\nIf the upstream Gluster repo is enabled (default), this class will install packages from there. Otherwise it will attempt to use native OS packages.\n\nCurrently, RHEL 6, RHEL 7, Debian 8, Raspbian and Ubuntu provide native Gluster packages (at least client).\n\n    class { gluster::install:\n      server  =\u003e true,\n      client  =\u003e true,\n      repo    =\u003e true,\n      version =\u003e 3.5.1-1.el6,\n    }\n\nNote that on Red Hat (and derivative) systems, the `version` parameter should match the version number used by yum for the RPM package.\nBeware that Red Hat provides its own build of the GlusterFS FUSE client on RHEL but its minor version doesn't match the upstream. Therefore if you run a community GlusterFS server, you should try to match the version on your RHEL clients by running the community FUSE client.\nOn Debian-based systems, only the first two version places are significant (\"x.y\"). The latest minor version from that release will be installed unless the \"priority\" parameter is used.\n\n### client.pp\nThis class installs **only** the Gluster client package(s). If you need to install both the server and client, please use the `install.pp` (or `init.pp`) classes.\n\n    class { gluster::client:\n      repo    =\u003e true,\n      version =\u003e '3.5.2',\n    }\n\nUse of `gluster::client` is not supported with either `gluster::install` or `gluster::init`.\n\n### service.pp\nThis class manages the `glusterd` service.\n\n    class { gluster::service:\n      ensure =\u003e running,\n    }\n\n### init.pp\nThis class implements a basic Gluster server.\n\nIn the default configuration, this class exports a `gluster::peer` defined type for itself, and then collects any other exported `gluster::peer` resources for the same pool for instantiation.\n\nThis default configuration makes it easy to implement a Gluster storage pool by simply assigning the `gluster` class to your Gluster servers: they'll each export their `gluster::peer` resources, and then instantiate the other servers' `gluster::peer` resources.\n\nThe use of exported resources assume you're using PuppetDB, or some other backing mechanism to support exported resources.\n\nIf a `volumes` parameter is passed, the defined Gluster volume(s) can be created at the same time as the storage pool. See the volume defined type below for more details.\n\n    class { gluster:\n      repo    =\u003e true,\n      client  =\u003e false,\n      pool    =\u003e 'production',\n      version =\u003e '3.5',\n      volumes =\u003e {\n        'data1' =\u003e {\n          replica =\u003e 2,\n          bricks  =\u003e [ 'srv1.local:/export/brick1/brick',\n                       'srv2.local:/export/brick1/brick',\n                       'srv1.local:/export/brick2/brick',\n                       'srv2.local:/export/brick2/brick', ],\n          options =\u003e [ 'server.allow-insecure: on',\n                       'nfs.disable: true', ],\n                   }\n                 }\n    }\n\n## Resources\n\n### gluster::peer\nThis defined type creates a Gluster peering relationship.  The name of the resource should be the fully-qualified domain name of a peer to which to connect. An optional `pool` parameter permits you to configure different storage pools built from different hosts.\n\nWith the exported resource implementation in `init.pp`, the first server to be defined in the pool will find no peers, and therefore not do anything.  The second server to execute this module will collect the first server's exported resource and initiate the `gluster peer probe`, thus creating the storage pool.\n\nNote that the server being probed does not perform any DNS resolution on the server doing the probing. This means that the probed server will report only the IP address of the probing server.  The next time the probed client runs this module, it will execute a `gluster peer probe` against the originally-probing server, thereby updating its list of peers to use the FQDN of the other server.\n\nSee [this mailing list post](http://supercolony.gluster.org/pipermail/gluster-users/2013-December/015365.html) for more information.\n\n    gluster::peer { 'srv1.domain:\n      pool =\u003e 'production',\n    }\n\n### gluster::volume\nThis defined type creates a Gluster volume. You can specify a stripe count, a replica count, the transport type, a list of bricks to use, and an optional set of volume options to enforce.\n\nNote that creating brick filesystems is up to you. May I recommend the [Puppet Labs LVM module](https://forge.puppetlabs.com/puppetlabs/lvm) ?\n\nIf using [arbiter](https://gluster.readthedocs.io/en/latest/Administrator%20Guide/arbiter-volumes-and-quorum/) volumes, you must conform to the replica count that will work with them, at the time of writing this, Gluster 3.12 only supports a configuration of `replica =\u003e 3, arbiter =\u003e 1`.\n\nWhen creating a new volume, this defined type will ensure that all of the servers hosting bricks in the volume are members of the storage pool. In this way, you can define the volume at the time you create servers, and once the last peer joins the pool the volume will be created.\n\nAny volume options defined will be applied after the volume is created but before the volume is started.\n\nIn the event that the list of volume options active on a volume does not match the list of options passed to this defined type, no options will be removed by default. You must set the `$remove_options` parameter to `true` in order for this defined type to remove options.\n\nNote that adding or removing options does not (currently) restart the volume.\n\n    gluster::volume { 'data1':\n      replica =\u003e 2,\n      bricks  =\u003e [\n                   'srv1.local:/export/brick1/brick',\n                   'srv2.local:/export/brick1/brick',\n                   'srv1.local:/export/brick2/brick',\n                   'srv2.local:/export/brick2/brick',\n                 ],\n      options =\u003e [\n                   'server.allow-insecure: on',\n                   'nfs.ports-insecure: on',\n                 ],\n    }\n\n### gluster::volume::option\nThis defined type applies [Gluster options](https://github.com/gluster/glusterfs/blob/master/doc/admin-guide/en-US/markdown/admin_managing_volumes.md#tuning-options) to a volume.\n\nIn order to ensure uniqueness across multiple volumes, the title of each `gluster::volume::option` must include the name of the volume to which it applies.  The format for these titles is `volume:option_name`:\n\n    gluster::volume::option{ 'g0:nfs.disable':\n      value =\u003e 'on',\n    }\n\nTo remove an option, set the `ensure` parameter to `absent`:\n\n    gluster::volume::option{ 'g0:server.allow-insecure':\n      ensure =\u003e absent,\n    }\n\n### gluster::mount\nThis defined type mounts a Gluster volume.  Most of the parameters to this defined type match either the gluster FUSE options or the [Puppet mount](http://docs.puppetlabs.com/references/3.4.stable/type.html#mount) options.\n\n    gluster::mount { '/gluster/data1':\n      ensure    =\u003e present,\n      volume    =\u003e 'srv1.local:/data1',\n      transport =\u003e 'tcp',\n      atboot    =\u003e true,\n      dump      =\u003e 0,\n      pass      =\u003e 0,\n    }\n\n## Examples\n\nPlease see the examples directory.\n\n## Contributing\n\nPull requests are warmly welcomed!\n\n## Copyright\n\nCopyright 2014 [CoverMyMeds](https://www.covermymeds.com/) and released under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-gluster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxpupuli%2Fpuppet-gluster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-gluster/lists"}