NFS backend for Cinder
authorJiri Stransky <jistr@redhat.com>
Thu, 2 Jul 2015 11:59:31 +0000 (13:59 +0200)
committerJiri Stransky <jistr@redhat.com>
Tue, 7 Jul 2015 11:25:29 +0000 (13:25 +0200)
Adds support for NFS backend for Cinder, but remains disabled by
default.

Change-Id: I9ebef072ed115efe980fa4904ea80f02384522af

compute.yaml
controller.yaml
overcloud-without-mergepy.yaml
puppet/compute-puppet.yaml
puppet/controller-puppet.yaml
puppet/manifests/overcloud_compute.pp
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp

index 4a9a92b..556e265 100644 (file)
@@ -25,6 +25,10 @@ parameters:
     description: The password for the ceilometer service account.
     type: string
     hidden: true
+  CinderEnableNfsBackend:
+    default: false
+    description: Whether to enable or not the NFS backend for Cinder
+    type: boolean
   Debug:
     default: ''
     description: Set to True to enable debugging on all services.
index 5596591..d2afe7a 100644 (file)
@@ -28,6 +28,10 @@ parameters:
     description: The password for the ceilometer service and db account.
     type: string
     hidden: true
+  CinderEnableNfsBackend:
+    default: false
+    description: Whether to enable or not the NFS backend for Cinder
+    type: boolean
   CinderEnableIscsiBackend:
     default: true
     description: Whether to enable or not the Iscsi backend for Cinder
@@ -44,6 +48,18 @@ parameters:
     default: 5000
     description: The size of the loopback file used by the cinder LVM driver.
     type: number
+  CinderNfsMountOptions:
+    default: ''
+    description: >
+      Mount options for NFS mounts used by Cinder NFS backend. Effective
+      when CinderEnableNfsBackend is true.
+    type: string
+  CinderNfsServers:
+    default: ''
+    description: >
+      NFS servers used by Cinder NFS backend. Effective when
+      CinderEnableNfsBackend is true.
+    type: comma_delimited_list
   CinderPassword:
     default: unset
     description: The password for the cinder service and db account, used by cinder-api.
index 14e2ac2..643f10e 100644 (file)
@@ -42,6 +42,10 @@ parameters:
     default: ''
     description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
     type: string
+  CinderEnableNfsBackend:
+    default: false
+    description: Whether to enable or not the NFS backend for Cinder
+    type: boolean
   CinderEnableIscsiBackend:
     default: true
     description: Whether to enable or not the Iscsi backend for Cinder
@@ -225,6 +229,18 @@ parameters:
     default: 5000
     description: The size of the loopback file used by the cinder LVM driver.
     type: number
+  CinderNfsMountOptions:
+    default: ''
+    description: >
+      Mount options for NFS mounts used by Cinder NFS backend. Effective
+      when CinderEnableNfsBackend is true.
+    type: string
+  CinderNfsServers:
+    default: ''
+    description: >
+      NFS servers used by Cinder NFS backend. Effective when
+      CinderEnableNfsBackend is true.
+    type: comma_delimited_list
   CinderPassword:
     default: unset
     description: The password for the cinder service account, used by cinder-api.
@@ -652,8 +668,11 @@ resources:
           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
           CeilometerPassword: {get_param: CeilometerPassword}
           CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
+          CinderNfsMountOptions: {get_param: CinderNfsMountOptions}
+          CinderNfsServers: {get_param: CinderNfsServers}
           CinderPassword: {get_param: CinderPassword}
           CinderISCSIHelper: {get_param: CinderISCSIHelper}
+          CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
           CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
           CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
           CloudName: {get_param: CloudName}
@@ -754,6 +773,7 @@ resources:
           CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
           CeilometerPassword: {get_param: CeilometerPassword}
+          CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
           Debug: {get_param: Debug}
           ExtraConfig: {get_param: ExtraConfig}
           Flavor: {get_param: OvercloudComputeFlavor}
index afe85d1..4654760 100644 (file)
@@ -25,6 +25,10 @@ parameters:
     description: The password for the ceilometer service account.
     type: string
     hidden: true
+  CinderEnableNfsBackend:
+    default: false
+    description: Whether to enable or not the NFS backend for Cinder
+    type: boolean
   Debug:
     default: ''
     description: Set to True to enable debugging on all services.
@@ -342,6 +346,7 @@ resources:
             compute:
               raw_data: {get_file: hieradata/compute.yaml}
               mapped_data:
+                cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
                 nova::debug: {get_input: debug}
                 nova::rabbit_userid: {get_input: rabbit_username}
                 nova::rabbit_password: {get_input: rabbit_password}
@@ -401,6 +406,7 @@ resources:
       config: {get_resource: NovaComputeConfig}
       server: {get_resource: NovaCompute}
       input_values:
+        cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
         debug: {get_param: Debug}
         nova_compute_driver: {get_param: NovaComputeDriver}
         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
index 5a356bc..f899374 100644 (file)
@@ -28,6 +28,10 @@ parameters:
     description: The password for the ceilometer service  and db account.
     type: string
     hidden: true
+  CinderEnableNfsBackend:
+    default: false
+    description: Whether to enable or not the NFS backend for Cinder
+    type: boolean
   CinderEnableIscsiBackend:
     default: true
     description: Whether to enable or not the Iscsi backend for Cinder
@@ -44,6 +48,18 @@ parameters:
     default: 5000
     description: The size of the loopback file used by the cinder LVM driver.
     type: number
+  CinderNfsMountOptions:
+    default: ''
+    description: >
+      Mount options for NFS mounts used by Cinder NFS backend. Effective
+      when CinderEnableNfsBackend is true.
+    type: string
+  CinderNfsServers:
+    default: ''
+    description: >
+      NFS servers used by Cinder NFS backend. Effective when
+      CinderEnableNfsBackend is true.
+    type: comma_delimited_list
   CinderPassword:
     default: unset
     description: The password for the cinder service and db account, used by cinder-api.
@@ -607,7 +623,17 @@ resources:
         admin_token: {get_param: AdminToken}
         neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
         debug: {get_param: Debug}
+        cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
+        cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
+        cinder_nfs_servers:
+          str_replace:
+            template: "['SERVERS']"
+            params:
+              SERVERS:
+                list_join:
+                - "','"
+                - {get_param: CinderNfsServers}
         cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
         cinder_password: {get_param: CinderPassword}
         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
@@ -862,7 +888,10 @@ resources:
                 tripleo::ringbuilder::build_ring: True
 
                 # Cinder
+                cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
+                cinder_nfs_mount_options: {get_input: cinder_nfs_mount_options}
+                cinder_nfs_servers: {get_input: cinder_nfs_servers}
                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
                 cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
index 67a73dd..27af665 100644 (file)
@@ -61,6 +61,17 @@ if $nova_enable_rbd_backend {
   }
 }
 
+if hiera('cinder_enable_nfs_backend', false) {
+  if ($::selinux != "false") {
+    selboolean { 'virt_use_nfs':
+        value => on,
+        persistent => true,
+    } -> Package['nfs-utils']
+  }
+
+  package {'nfs-utils': } -> Service['nova-compute']
+}
+
 include ::nova::compute::libvirt
 include ::nova::network::neutron
 include ::neutron
index 777ebad..a955433 100644 (file)
@@ -352,7 +352,25 @@ if hiera('step') >= 3 {
     }
   }
 
-  $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend])
+  if hiera('cinder_enable_nfs_backend', false) {
+    $cinder_nfs_backend = 'tripleo_nfs'
+
+    if ($::selinux != "false") {
+      selboolean { 'virt_use_nfs':
+          value => on,
+          persistent => true,
+      } -> Package['nfs-utils']
+    }
+
+    package {'nfs-utils': } ->
+    cinder::backend::nfs { $cinder_nfs_backend :
+      nfs_servers         => hiera('cinder_nfs_servers'),
+      nfs_mount_options   => hiera('cinder_nfs_mount_options'),
+      nfs_shares_config   => '/etc/cinder/shares-nfs.conf',
+    }
+  }
+
+  $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend, $cinder_nfs_backend])
   class { '::cinder::backends' :
     enabled_backends => $cinder_enabled_backends,
   }
index 582e29e..7cd6705 100644 (file)
@@ -703,7 +703,25 @@ if hiera('step') >= 3 {
     }
   }
 
-  $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend])
+  if hiera('cinder_enable_nfs_backend', false) {
+    $cinder_nfs_backend = 'tripleo_nfs'
+
+    if ($::selinux != "false") {
+      selboolean { 'virt_use_nfs':
+          value => on,
+          persistent => true,
+      } -> Package['nfs-utils']
+    }
+
+    package {'nfs-utils': } ->
+    cinder::backend::nfs { $cinder_nfs_backend:
+      nfs_servers         => hiera('cinder_nfs_servers'),
+      nfs_mount_options   => hiera('cinder_nfs_mount_options'),
+      nfs_shares_config   => '/etc/cinder/shares-nfs.conf',
+    }
+  }
+
+  $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend, $cinder_nfs_backend])
   class { '::cinder::backends' :
     enabled_backends => $cinder_enabled_backends,
   }