puppet-cinder/manifests/setup_test_volume.pp
Javier Pena a8b991f6be Ensure test volume file permissions are correct
When setting up a test volume, we use dd (usually as root) to create
the file used for a loop mount. Permissions on that file will depend
on the umask, but they should not grant read for all to prevent
information leaks from Cinder volumes to any user.

Change-Id: Ie84650ec13cf746a3bbc99c9f652832c655f182f
2016-06-03 18:06:44 +02:00

60 lines
1.6 KiB
Puppet

# == Class: cinder::setup_test_volume
#
# Setup a volume group on a loop device for test purposes.
#
# === Parameters
#
# [*volume_name*]
# Volume group name. Defaults to 'cinder-volumes'.
#
# [*size*]
# Volume group size. Defaults to '4G'.
#
# [*loopback_device*]
# Loop device name. Defaults to '/dev/loop2'.
#
# [*volume_path*]
# Volume image location. Defaults to '/var/lib/cinder'.
class cinder::setup_test_volume(
$volume_name = 'cinder-volumes',
$volume_path = '/var/lib/cinder',
$size = '4G',
$loopback_device = '/dev/loop2'
) {
package { 'lvm2':
ensure => present,
require => Package['cinder'],
} ~>
exec { "create_${volume_path}/${volume_name}":
command => "dd if=/dev/zero of=\"${volume_path}/${volume_name}\" bs=1 count=0 seek=${size}",
path => ['/bin','/usr/bin','/sbin','/usr/sbin'],
unless => "stat ${volume_path}/${volume_name}",
} ~>
file { "${volume_path}/${volume_name}":
mode => '0640',
} ~>
exec { "losetup ${loopback_device} ${volume_path}/${volume_name}":
path => ['/bin','/usr/bin','/sbin','/usr/sbin'],
unless => "losetup ${loopback_device}",
refreshonly => true,
} ~>
exec { "pvcreate ${loopback_device}":
path => ['/bin','/usr/bin','/sbin','/usr/sbin'],
unless => "pvdisplay | grep ${volume_name}",
refreshonly => true,
} ~>
exec { "vgcreate ${volume_name} ${loopback_device}":
path => ['/bin','/usr/bin','/sbin','/usr/sbin'],
unless => "vgdisplay | grep ${volume_name}",
refreshonly => true,
}
}