# profiles::base::datavol # # This class 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. # class profiles::base::datavol ( Enum['present', 'absent'] $ensure = 'present', Enum['ext2', 'ext3', 'ext4', 'xfs', 'btrfs'] $fstype = 'xfs', String $vg = 'datavg', String $pv = '/dev/vdb', String $lv = 'data', Stdlib::Absolutepath $mount = '/data', Optional[Variant[Pattern[/^\d+(M|G|T|P)$/], Integer]] $size = undef, Array $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 logical volume is mounted at the desired location mount { $mount: ensure => $ensure, device => "/dev/${vg}/${lv}", fstype => $fstype, options => 'defaults', dump => 0, pass => 2, require => Filesystem["/dev/${vg}/${lv}"], } }