feat: add new datavol
- add datavol define to replace the datavol class, which has more flexibility through additional params, and the ability to call it multiple times for multiple datavolumes
This commit is contained in:
parent
dcf83aa466
commit
0c1548fbd8
75
site/profiles/manifests/storage/datavol.pp
Normal file
75
site/profiles/manifests/storage/datavol.pp
Normal file
@ -0,0 +1,75 @@
|
||||
# profiles::storage::datavol
|
||||
#
|
||||
# This define manages the creation of a logical volume using the `lvm::volume` definition.
|
||||
#
|
||||
# Parameters:
|
||||
# $ensure - Ensure whether the logical volume is present or not. Defaults to 'present'.
|
||||
# $vg - Volume group name. No default.
|
||||
# $pv - Physical volume, typically the disk or partition device path. No default.
|
||||
# $fstype - Filesystem type for the logical volume. Defaults to 'ext3'.
|
||||
# $size - Size of the logical volume. undef = 100%FREE. Changing $size to cause a resize.
|
||||
#
|
||||
define profiles::storage::datavol (
|
||||
Enum['present', 'absent'] $ensure = 'present',
|
||||
Enum['ext2', 'ext3', 'ext4', 'xfs', 'btrfs'] $fstype = 'xfs',
|
||||
String $vg = 'datavg',
|
||||
String $pv = '/dev/vdb',
|
||||
String $lv = 'data',
|
||||
String $owner = 'root',
|
||||
String $group = 'root',
|
||||
Stdlib::Filemode $mode = '0755',
|
||||
Stdlib::Absolutepath $mount = '/data',
|
||||
Optional[Variant[Pattern[/^\d+(M|G|T|P)$/], Integer]] $size = undef,
|
||||
Array[Enum[
|
||||
'defaults', 'ro', 'rw', 'sync', 'async',
|
||||
'noatime', 'nodiratime', 'noexec', 'nosuid',
|
||||
'nodev', 'remount', 'auto', 'noauto'
|
||||
]] $mount_options = ['noatime', 'nodiratime'],
|
||||
) {
|
||||
|
||||
# Ensure the physical volume exists
|
||||
physical_volume { $pv:
|
||||
ensure => $ensure,
|
||||
before => Volume_group[$vg],
|
||||
}
|
||||
|
||||
# Ensure the volume group exists
|
||||
volume_group { $vg:
|
||||
ensure => $ensure,
|
||||
physical_volumes => [$pv],
|
||||
before => Logical_volume[$lv],
|
||||
}
|
||||
|
||||
# Ensure the logical volume exists
|
||||
logical_volume { $lv:
|
||||
ensure => $ensure,
|
||||
volume_group => $vg,
|
||||
size => $size,
|
||||
before => Filesystem["/dev/${vg}/${lv}"],
|
||||
}
|
||||
|
||||
# Ensure the filesystem is created on the logical volume
|
||||
filesystem { "/dev/${vg}/${lv}":
|
||||
ensure => $ensure,
|
||||
fs_type => $fstype,
|
||||
require => Logical_volume[$lv],
|
||||
before => Mount[$mount],
|
||||
}
|
||||
|
||||
# Ensure the mountpath exists
|
||||
file { $mount:
|
||||
ensure => directory,
|
||||
owner => $owner,
|
||||
group => $group,
|
||||
mode => $mode,
|
||||
}
|
||||
|
||||
# Ensure the logical volume is mounted at the desired location
|
||||
mount { $mount:
|
||||
ensure => $ensure,
|
||||
device => "/dev/${vg}/${lv}",
|
||||
fstype => $fstype,
|
||||
options => $mount_options.join(','),
|
||||
require => Filesystem["/dev/${vg}/${lv}"],
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user