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,
@ -121,14 +127,15 @@ class cloud::compute::hypervisor(
nova_config { 'DEFAULT/instances_path': value => $filesystem_store_datadir; }
$nfs_mount = {
"${filesystem_store_datadir}" => {
'ensure' => 'present',
'fstype' => 'nfs',
'device' => $nfs_device
'ensure' => 'present',
'fstype' => 'nfs',
'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
@ -187,14 +193,14 @@ class cloud::image::api(
}
$nfs_mount = {
"${filesystem_store_datadir}" => {
'ensure' => 'present',
'fstype' => 'nfs',
'device' => $nfs_device
'ensure' => 'present',
'fstype' => 'nfs',
'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,14 +494,16 @@ 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')
is_expected.to contain_mount('/var/lib/nova/instances').with({
'ensure' => 'present',
'fstype' => 'nfs',
'device' => 'nfs.example.com:/vol1',
'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
@ -119,9 +120,10 @@ describe 'cloud::image::api' do
is_expected.to contain_glance_api_config('DEFAULT/filesystem_store_datadir').with('value' => '/srv/images/')
is_expected.to contain_glance_api_config('DEFAULT/default_store').with('value' => 'file')
is_expected.to contain_mount('/srv/images/').with({
'ensure' => 'present',
'fstype' => 'nfs',
'device' => 'nfs.example.com:/vol1',
'ensure' => 'present',
'fstype' => 'nfs',
'device' => 'nfs.example.com:/vol1',
'options' => 'noacl,fsid=123',
})
end
end