Allow using NFS shares for both Glance and Nova

Closes-bug #653
This commit is contained in:
Sylvain Baubeau 2014-10-06 11:59:29 +02:00
parent de6045357d
commit 0e9ea0d43a
4 changed files with 37 additions and 20 deletions

View File

@ -43,6 +43,11 @@
# Required when nfs_enabled is at true.
# Defaults to false
#
# [*nfs_options*]
# (optional) NFS mount options
# Example: 'nfsvers=3,noacl'
# Defaults to 'defaults'
#
# [*filesystem_store_datadir*]
# (optional) Full path of data directory to store the instances.
# Don't modify this parameter if you don't know what you do.
@ -74,6 +79,7 @@ class cloud::compute::hypervisor(
# when using NFS storage backend
$nfs_enabled = false,
$nfs_device = false,
$nfs_options = 'defaults',
$filesystem_store_datadir = '/var/lib/nova/instances',
# set to false to keep backward compatibility
$ks_spice_public_proto = false,
@ -123,12 +129,13 @@ class cloud::compute::hypervisor(
"${filesystem_store_datadir}" => {
'ensure' => 'present',
'fstype' => 'nfs',
'device' => $nfs_device
'device' => $nfs_device,
'options' => $nfs_options
}
}
ensure_resource('class', 'nfs', {
mounts => $nfs_mount
})
ensure_resource('class', 'nfs', {})
create_resources('types::mount', $nfs_mount)
# Not using /var/lib/nova/instances may cause side effects.
if $filesystem_store_datadir != '/var/lib/nova/instances' {
warning('filesystem_store_datadir is not /var/lib/nova/instances so you may have side effects (SElinux, etc)')

View File

@ -78,6 +78,11 @@
# Required when running 'nfs' backend.
# Defaults to false
#
# [*nfs_options*]
# (optional) NFS mount options
# Example: 'nfsvers=3,noacl'
# Defaults to 'defaults'
#
class cloud::image::api(
$glance_db_host = '127.0.0.1',
$glance_db_user = 'glance',
@ -102,6 +107,7 @@ class cloud::image::api(
$backend = 'rbd',
$filesystem_store_datadir = undef,
$nfs_device = false,
$nfs_options = 'defaults',
) {
# Disable twice logging if syslog is enabled
@ -189,12 +195,12 @@ class cloud::image::api(
"${filesystem_store_datadir}" => {
'ensure' => 'present',
'fstype' => 'nfs',
'device' => $nfs_device
'device' => $nfs_device,
'options' => $nfs_options
}
}
ensure_resource('class', 'nfs', {
mounts => $nfs_mount
})
ensure_resource('class', 'nfs', {})
create_resources('types::mount', $nfs_mount)
} else {
fail('When running NFS backend, you need to provide nfs_device parameter.')
}

View File

@ -494,7 +494,8 @@ describe 'cloud::compute::hypervisor' do
before :each do
params.merge!(
:nfs_enabled => true,
:nfs_device => 'nfs.example.com:/vol1' )
:nfs_device => 'nfs.example.com:/vol1',
:nfs_options => 'noacl,fsid=123' )
end
it 'configure nova instances path and NFS mount' do
is_expected.to contain_nova_config('DEFAULT/instances_path').with('value' => '/var/lib/nova/instances')
@ -502,6 +503,7 @@ describe 'cloud::compute::hypervisor' do
'ensure' => 'present',
'fstype' => 'nfs',
'device' => 'nfs.example.com:/vol1',
'options' => 'noacl,fsid=123'
})
end
end

View File

@ -110,7 +110,8 @@ describe 'cloud::image::api' do
before :each do
params.merge!(:backend => 'nfs',
:filesystem_store_datadir => '/srv/images/',
:nfs_device => 'nfs.example.com:/vol1' )
:nfs_device => 'nfs.example.com:/vol1',
:nfs_options => 'noacl,fsid=123' )
end
it 'configure Glance with NFS backend' do
@ -122,6 +123,7 @@ describe 'cloud::image::api' do
'ensure' => 'present',
'fstype' => 'nfs',
'device' => 'nfs.example.com:/vol1',
'options' => 'noacl,fsid=123',
})
end
end