diff --git a/ChangeLog b/ChangeLog index 229ef3b..914d2cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2015-04-10 - 0.0.4 +* replace Modulefile with metadata.json + 2013-05-24 - 0.0.3 * Update README and use markdown. * Change to 2-space indent. diff --git a/Modulefile b/Modulefile deleted file mode 100644 index 4f58683..0000000 --- a/Modulefile +++ /dev/null @@ -1,8 +0,0 @@ -name 'thias-glusterfs' -version '0.0.3' -source 'git://github.com/thias/puppet-glusterfs' -author 'Matthias Saou' -license 'Apache 2.0' -summary 'GlusterFS module' -description "Install, enable and configure GlusterFS servers and clients." -project_page 'https://github.com/thias/puppet-glusterfs' diff --git a/README.md b/README.md index 8a430dd..bff7c11 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,7 @@ on the same hardware for optimal performance and optimal fail-over : file { '/var/www': ensure => directory } glusterfs::mount { '/var/www': + fstype => 'glusterfs', device => $::hostname ? { 'client1' => '192.168.0.1:/gv0', 'client2' => '192.168.0.2:/gv0', diff --git a/manifests/client.pp b/manifests/client.pp index 1088e1e..c8d0eb9 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -2,9 +2,14 @@ # # GlusterFS client. See glusterfs::mount instead. # -class glusterfs::client { +class glusterfs::client ( + $client_package_name = $::glusterfs::params::client_package_name, +) inherits glusterfs::params { - package { 'glusterfs-fuse': ensure => installed } + package { 'glusterfs-fuse': + ensure => installed, + name => $client_package_name, + } } diff --git a/manifests/mount.pp b/manifests/mount.pp index 649a602..d23a255 100644 --- a/manifests/mount.pp +++ b/manifests/mount.pp @@ -9,19 +9,34 @@ # define glusterfs::mount ( $device, - $options = 'defaults', + $path = $name, + $options = 'defaults,_netdev', + $fstype = 'glusterfs', $ensure = 'mounted' ) { include glusterfs::client - mount { $title: - ensure => $ensure, - device => $device, - fstype => 'glusterfs', - options => $options, - require => Package['glusterfs-fuse'], + if $fstype == 'glusterfs' { + mount { $path: + ensure => $ensure, + device => $device, + fstype => $fstype, + options => $options, + remounts => false, + require => Package['glusterfs-fuse'], + } + } + elsif $fstype == 'nfs' { + mount { $path: + ensure => $ensure, + device => $device, + fstype => $fstype, + remounts => false, + options => $options, + } + } + else { + fail("${fstype} is not a valid filesystem for gluster") } - } - diff --git a/manifests/params.pp b/manifests/params.pp new file mode 100644 index 0000000..959dddb --- /dev/null +++ b/manifests/params.pp @@ -0,0 +1,14 @@ +# Set default values here that are different accross OSes +class glusterfs::params { + + case $::osfamily { + 'Debian': { + $service_name = 'glusterfs-server' + $client_package_name = 'glusterfs-client' + } + default, 'RedHat': { + $service_name = 'glusterd' + $client_package_name = 'glusterfs-fuse' + } + } +} diff --git a/manifests/peer.pp b/manifests/peer.pp index 028cd30..f44b43f 100644 --- a/manifests/peer.pp +++ b/manifests/peer.pp @@ -6,10 +6,11 @@ # define glusterfs::peer () { - exec { "/usr/sbin/gluster peer probe ${title}": - unless => "/bin/egrep '^hostname.+=${title}$' /var/lib/glusterd/peers/*", - require => Service['glusterd'], + unless $::hostname in $title { # No need to probe local host + exec { "/usr/sbin/gluster peer probe ${title}": + unless => "/bin/egrep '^hostname.+=${title}$' /var/lib/glusterd/peers/*", + require => Service['glusterfs-server'], + } } - } diff --git a/manifests/server.pp b/manifests/server.pp index 1aad37e..f8c89bd 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -15,15 +15,17 @@ # } # class glusterfs::server ( - $peers = [] -) { + $peers = [], + $service_name = $::glusterfs::params::service_name, +) inherits glusterfs::params { # Main package and service it provides package { 'glusterfs-server': ensure => installed } service { 'glusterd': - enable => true, ensure => running, + enable => true, hasstatus => true, + name => $service_name, require => Package['glusterfs-server'], } diff --git a/manifests/volume.pp b/manifests/volume.pp index 7a6ae2b..a96ccd1 100644 --- a/manifests/volume.pp +++ b/manifests/volume.pp @@ -18,7 +18,7 @@ } exec { "/usr/sbin/gluster volume start ${title}": - unless => "[ \"`gluster volume info ${title} | egrep '^Status:'`\" = 'Status: Started' ]", + unless => "gluster volume info ${title} | grep -q '^Status: Started'", path => [ '/usr/sbin', '/usr/bin', '/sbin', '/bin' ], require => Exec["gluster volume create ${title}"], } diff --git a/metadata.json b/metadata.json new file mode 100644 index 0000000..0aa0c1c --- /dev/null +++ b/metadata.json @@ -0,0 +1,26 @@ +{ + "name": "thias-glusterfs", + "version": "0.0.4", + "author": "Matthias Saou", + "summary": "GlusterFS module", + "description": "Install, enable and configure GlusterFS servers and clients", + "license": "Apache-2.0", + "source": "https://github.com/thias/puppet-glusterfs", + "project_page": "https://github.com/thias/puppet-glusterfs", + "issues_url": "https://github.com/thias/puppet-glusterfs/issues", + "dependencies": [], + "operatingsystem_support": [ + { + "operatingsystem": "Ubuntu" + }, + { + "operatingsystem": "Debian" + }, + { + "operatingsystem": "RedHat" + }, + { + "operatingsystem": "CentOS" + } + ] +}