diff options
-rw-r--r-- | DOCUMENTATION.md | 2 | ||||
-rw-r--r-- | data/tree/RedHat/Fedora.yaml | 1 | ||||
-rw-r--r-- | manifests/brick.pp | 15 | ||||
-rw-r--r-- | manifests/brick/btrfs.pp | 27 | ||||
-rw-r--r-- | manifests/params.pp | 2 | ||||
-rw-r--r-- | puppet-gluster-documentation.pdf | bin | 238523 -> 238689 bytes | |||
-rw-r--r-- | vagrant/Vagrantfile | 10 | ||||
-rw-r--r-- | vagrant/puppet/manifests/site.pp | 4 |
8 files changed, 61 insertions, 0 deletions
diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md index b103868..e1cc82c 100644 --- a/DOCUMENTATION.md +++ b/DOCUMENTATION.md @@ -778,6 +778,8 @@ This should be _xfs_ or _ext4_. Using _xfs_ is recommended, but _ext4_ is also quite common. This only affects a file system that is getting created by this module. If you provision a new machine, with a root file system of _ext4_, and the brick you create is a root file system path, then this option does nothing. +A _btrfs_ option is now available for testing. It is not officially supported +by GlusterFS, but testing it anyways, and reporting any issues is encouraged. ####`xfs_inode64` Set _inode64_ mount option when using the _xfs_ fstype. Choose _true_ to set. diff --git a/data/tree/RedHat/Fedora.yaml b/data/tree/RedHat/Fedora.yaml index 856eebe..09a8789 100644 --- a/data/tree/RedHat/Fedora.yaml +++ b/data/tree/RedHat/Fedora.yaml @@ -14,6 +14,7 @@ gluster::params::program_vgdisplay: '/usr/sbin/vgdisplay' #gluster::params::program_lvdisplay: '/usr/sbin/lvdisplay' gluster::params::program_mkfs_xfs: '/usr/sbin/mkfs.xfs' gluster::params::program_mkfs_ext4: '/usr/sbin/mkfs.ext4' +gluster::params::program_mkfs_btrfs: '/usr/sbin/mkfs.btrfs' gluster::params::program_findmnt: '/usr/bin/findmnt' gluster::params::misc_gluster_reload: '/usr/bin/systemctl reload glusterd' diff --git a/manifests/brick.pp b/manifests/brick.pp index b280d8f..8358ad2 100644 --- a/manifests/brick.pp +++ b/manifests/brick.pp @@ -246,6 +246,7 @@ define gluster::brick( }, default => $fstype ? { 'ext4' => 'ext4', # TODO + 'btrfs' => 'btrfs', default => 'xfs', }, } @@ -351,6 +352,20 @@ define gluster::brick( # mount options $options_list = [] # TODO + + } elsif ( $valid_fstype == 'btrfs' ) { + # exec requires + include gluster::brick::btrfs + $exec_requires = [Package["${::gluster::params::package_btrfsprogs}"]] + + # FIXME: this filesystem has not yet been optimized for performance + + # mkfs w/ uuid command + $mkfs_exec = "${::gluster::params::program_mkfs_btrfs} -U '${valid_fsuuid}' ${dev2}" + + # mount options + $options_list = [] # TODO + } else { fail('The $fstype is invalid.') } diff --git a/manifests/brick/btrfs.pp b/manifests/brick/btrfs.pp new file mode 100644 index 0000000..94232b3 --- /dev/null +++ b/manifests/brick/btrfs.pp @@ -0,0 +1,27 @@ +# GlusterFS module by James +# Copyright (C) 2010-2013+ James Shubin +# Written by James Shubin <james@shubin.ca> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +class gluster::brick::btrfs { + + include gluster::params + + package { "${::gluster::params::package_btrfsprogs}": + ensure => present, + } +} + +# vim: ts=8 diff --git a/manifests/params.pp b/manifests/params.pp index b53b9e2..8ed265e 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -24,6 +24,7 @@ class gluster::params( $package_e2fsprogs = 'e2fsprogs', $package_xfsprogs = 'xfsprogs', + $package_btrfsprogs = 'btrfs-progs', $package_python_argparse = 'python-argparse', $package_python_lxml = 'python-lxml', @@ -47,6 +48,7 @@ class gluster::params( $program_xfsadmin = '/usr/sbin/xfs_admin', $program_mkfs_xfs = '/sbin/mkfs.xfs', $program_mkfs_ext4 = '/sbin/mkfs.ext4', + $program_mkfs_btrfs = '/sbin/mkfs.btrfs', $program_fping = '/usr/sbin/fping', $program_findmnt = '/bin/findmnt', diff --git a/puppet-gluster-documentation.pdf b/puppet-gluster-documentation.pdf Binary files differindex f129b93..69ba9de 100644 --- a/puppet-gluster-documentation.pdf +++ b/puppet-gluster-documentation.pdf diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile index 44b36a0..aef25d1 100644 --- a/vagrant/Vagrantfile +++ b/vagrant/Vagrantfile @@ -67,6 +67,7 @@ netmask2 = IPAddr.new('255.255.255.255').mask(cidr2).to_s count = 4 # default number of gluster hosts to build disks = 0 # default number of disks to attach (after the host os) bricks = 0 # default number of bricks to build (0 defaults to 1) +fstype = '' # default filesystem for bricks (requires bricks > 0) version = '' # default gluster version (empty string means latest!) firewall = false # default firewall enabled (FIXME: default to true when keepalived bug is fixed) replica = 1 # default replica count @@ -88,6 +89,7 @@ if File.exist?(f) count = settings[:count] disks = settings[:disks] bricks = settings[:bricks] + fstype = settings[:fstype] version = settings[:version] firewall = settings[:firewall] replica = settings[:replica] @@ -121,6 +123,12 @@ while skip < ARGV.length bricks = v.to_i # set gluster brick count + elsif ARGV[skip].start_with?(arg='--gluster-fstype=') + v = ARGV.delete_at(skip).dup + v.slice! arg + + fstype = v.to_s # set gluster fstype + elsif ARGV[skip].start_with?(arg='--gluster-version=') v = ARGV.delete_at(skip).dup v.slice! arg @@ -189,6 +197,7 @@ settings = { :count => count, :disks => disks, :bricks => bricks, + :fstype => fstype, :version => version, :firewall => firewall, :replica => replica, @@ -460,6 +469,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 'vagrant' => '1', 'vagrant_gluster_disks' => disks.to_s, 'vagrant_gluster_bricks' => bricks.to_s, + 'vagrant_gluster_fstype' => fstype.to_s, 'vagrant_gluster_replica' => replica.to_s, 'vagrant_gluster_layout' => layout, 'vagrant_gluster_setgroup' => setgroup, diff --git a/vagrant/puppet/manifests/site.pp b/vagrant/puppet/manifests/site.pp index 426099d..e0decc3 100644 --- a/vagrant/puppet/manifests/site.pp +++ b/vagrant/puppet/manifests/site.pp @@ -69,6 +69,10 @@ node /^annex\d+$/ inherits default { # annex{1,2,..N} $brick_param_defaults = { # TODO: set these from vagrant variables... 'lvm' => false, + 'fstype' => "${::vagrant_gluster_fstype}" ? { + '' => undef, + default => "${::vagrant_gluster_fstype}", + }, 'xfs_inode64' => true, 'force' => true, } |