gluster1:/gvol /mnt/gluster glusterfs defaults,transport=tcp,backup-volfile-servers=gluster2:gluster3 0 0
augeas { "gluster-fstab-mod-mountpoint": context => "/files/etc/fstab", changes => [ "set *[file = '/mnt/gluster']/file '$mountpoint'", ], onlyif => [ "match *[spec = '$server:/$volume']", "match *[file = '$mountpoint']", "match *[vfstype = 'glusterfs']", ] }define glusterfs::mount ( $server = "", $volume = "", $peers = "", $mountpoint = "/mnt/gluster", $dump = "0", $pass = "0", $description = "GlusterFS mount", ){################################################################################ native augeas nodes for fstab + input variables# spec = $server:/$volume# file = $mountpoint# vmfstype = glusterfs# opt = defaults,transport=tcp,backup-volfile-servers=$peers# dump = 0# passno = 0############################################################################### # install augeas package as dependency for everything package { 'augeas': ensure => present, provider => yum }
# create mountpoint file { "$mountpoint": ensure => "directory", owner => root, group => root, mode => '0755', }
# fstab augeas { "gluster-fstab-add": context => "/files/etc/fstab", changes => [ "set #comment[last()+1] '$description'", "set 01/spec '$server:/$volume'", "set 01/file '$mountpoint'", "set 01/vfstype 'glusterfs'", "set 01/opt[1] 'defaults'", "set 01/opt[2] 'transport'", "set 01/opt[2]/value 'tcp'", "set 01/opt[3] '_netdev'", "set 01/opt[4] 'backup-volfile-servers'", "set 01/opt[4]/value '$peers'", "set 01/dump '$dump'", "set 01/passno '$pass'", ], onlyif => [ "match *[file = '$mountpoint'] size == 0", ] }
augeas { "gluster-fstab-set-peers": context => "/files/etc/fstab", changes => [ "set *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs']/opt[. = 'backup-volfile-servers']/value '$peers'", ], } augeas { "gluster-fstab-add-peers": context => "/files/etc/fstab", changes => [ "ins opt after *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs'][count(opt[. = 'backup-volfile-servers']) = 0]/opt[last()]", "set *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs'][count(opt[. = 'backup-volfile-servers']) = 0]/opt[last()] backup-volfile-servers", "set *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs'][count(opt[. = 'backup-volfile-servers']) = 1]/opt[last()]/value '$peers'", ], onlyif => [ "match *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs'][opt = 'backup-volfile-servers'] size == 0", ] }
augeas { "gluster-fstab-set-transport": context => "/files/etc/fstab", changes => [ "set *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs']/opt[. = 'transport']/value 'tcp'", ], } augeas { "gluster-fstab-add-transport": context => "/files/etc/fstab", changes => [ "ins opt after *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs'][count(opt[. = 'transport']) = 0]/opt[last()]", "set *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs'][count(opt[. = 'transport']) = 0]/opt[last()] transport", "set *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs'][count(opt[. = 'transport']) = 1]/opt[last()]/value 'tcp'", ], onlyif => [ "match *[spec = '$server:/$volume'][file = '$mountpoint'][vfstype = 'glusterfs'][opt = 'transport'] size == 0", ] }}