Files
puppet-swift/manifests/storage/xfs.pp
Sergio Rubio 0a630c3c9e swift::storage::xfs improvements
* Create $mnt_base_dir if dir does not exist (useful when not using
* loopback)
* use 'xfs_admin -l' to check for an existing XFS instead of using
* refreshonly
* device param now defaults to '' for compat reasons since we'll be
  using '/dev/' + resource title when no device is specified
* use -f flag with mkfs.xfs so we can format RAW unpartitioned devices
* Does not break interface compatibility, tests OK
2012-09-26 18:37:11 +02:00

60 lines
1.5 KiB
Puppet

# [*title*]
#
# [*byte_size*] Byte size to use for every inode in the created filesystem.
# It is recommened to use 1024 to ensure that the metadata can fit in a single inode.
#
#
# Sample usage:
#
# swift::storage::xfs {
# ['sdb', 'sdc', 'sde', 'sdf', 'sdg', 'sdh', 'sdi', 'sdj', 'sdk']:
# mnt_base_dir => '/srv/node',
# require => Class['swift'];
# }
#
# Creates /srv/node if dir does not exist, formats sdbX with XFS unless
# it already has an XFS FS, and mounts de FS in /srv/node/sdX
#
define swift::storage::xfs(
$device = '',
$byte_size = '1024',
$mnt_base_dir = '/srv/node',
$loopback = false
) {
include swift::xfs
if $device == '' {
$target_device = "/dev/${name}"
} else {
$target_device = $device
}
if(!defined(File[$mnt_base_dir])) {
file { $mnt_base_dir:
owner => 'swift',
group => 'swift',
ensure => directory,
}
}
# We use xfs_admin -l to print FS label
# If it's not a valid XFS FS, command will return 1
# so we format it. If device has a valid XFS FS, command returns 0
# So we do NOT touch it.
exec { "mkfs-${name}":
command => "mkfs.xfs -f -i size=${byte_size} ${target_device}",
path => ['/sbin/', '/usr/sbin/'],
require => Package['xfsprogs'],
unless => "xfs_admin -l ${target_device}",
}
swift::storage::mount { $name:
device => "/dev/${name}",
mnt_base_dir => $mnt_base_dir,
subscribe => Exec["mkfs-${name}"],
loopback => $loopback,
}
}