Merge pull request #654 from enovance/nfs-for-both-glance-and-nova

Allow using NFS shares for both Glance and Nova
This commit is contained in:
Emilien Macchi
2014-10-06 09:31:36 -04:00
4 changed files with 37 additions and 20 deletions

View File

@@ -43,6 +43,11 @@
# Required when nfs_enabled is at true. # Required when nfs_enabled is at true.
# Defaults to false # Defaults to false
# #
# [*nfs_options*]
# (optional) NFS mount options
# Example: 'nfsvers=3,noacl'
# Defaults to 'defaults'
#
# [*filesystem_store_datadir*] # [*filesystem_store_datadir*]
# (optional) Full path of data directory to store the instances. # (optional) Full path of data directory to store the instances.
# Don't modify this parameter if you don't know what you do. # 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 # when using NFS storage backend
$nfs_enabled = false, $nfs_enabled = false,
$nfs_device = false, $nfs_device = false,
$nfs_options = 'defaults',
$filesystem_store_datadir = '/var/lib/nova/instances', $filesystem_store_datadir = '/var/lib/nova/instances',
# set to false to keep backward compatibility # set to false to keep backward compatibility
$ks_spice_public_proto = false, $ks_spice_public_proto = false,
@@ -123,12 +129,13 @@ class cloud::compute::hypervisor(
"${filesystem_store_datadir}" => { "${filesystem_store_datadir}" => {
'ensure' => 'present', 'ensure' => 'present',
'fstype' => 'nfs', 'fstype' => 'nfs',
'device' => $nfs_device 'device' => $nfs_device,
'options' => $nfs_options
} }
} }
ensure_resource('class', 'nfs', { ensure_resource('class', 'nfs', {})
mounts => $nfs_mount create_resources('types::mount', $nfs_mount)
})
# Not using /var/lib/nova/instances may cause side effects. # Not using /var/lib/nova/instances may cause side effects.
if $filesystem_store_datadir != '/var/lib/nova/instances' { 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)') 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. # Required when running 'nfs' backend.
# Defaults to false # Defaults to false
# #
# [*nfs_options*]
# (optional) NFS mount options
# Example: 'nfsvers=3,noacl'
# Defaults to 'defaults'
#
class cloud::image::api( class cloud::image::api(
$glance_db_host = '127.0.0.1', $glance_db_host = '127.0.0.1',
$glance_db_user = 'glance', $glance_db_user = 'glance',
@@ -102,6 +107,7 @@ class cloud::image::api(
$backend = 'rbd', $backend = 'rbd',
$filesystem_store_datadir = undef, $filesystem_store_datadir = undef,
$nfs_device = false, $nfs_device = false,
$nfs_options = 'defaults',
) { ) {
# Disable twice logging if syslog is enabled # Disable twice logging if syslog is enabled
@@ -189,12 +195,12 @@ class cloud::image::api(
"${filesystem_store_datadir}" => { "${filesystem_store_datadir}" => {
'ensure' => 'present', 'ensure' => 'present',
'fstype' => 'nfs', 'fstype' => 'nfs',
'device' => $nfs_device 'device' => $nfs_device,
'options' => $nfs_options
} }
} }
ensure_resource('class', 'nfs', { ensure_resource('class', 'nfs', {})
mounts => $nfs_mount create_resources('types::mount', $nfs_mount)
})
} else { } else {
fail('When running NFS backend, you need to provide nfs_device parameter.') 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 before :each do
params.merge!( params.merge!(
:nfs_enabled => true, :nfs_enabled => true,
:nfs_device => 'nfs.example.com:/vol1' ) :nfs_device => 'nfs.example.com:/vol1',
:nfs_options => 'noacl,fsid=123' )
end end
it 'configure nova instances path and NFS mount' do 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_nova_config('DEFAULT/instances_path').with('value' => '/var/lib/nova/instances')
@@ -502,6 +503,7 @@ describe 'cloud::compute::hypervisor' do
'ensure' => 'present', 'ensure' => 'present',
'fstype' => 'nfs', 'fstype' => 'nfs',
'device' => 'nfs.example.com:/vol1', 'device' => 'nfs.example.com:/vol1',
'options' => 'noacl,fsid=123'
}) })
end end
end end

View File

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