diff --git a/capabilities-map.yaml b/capabilities-map.yaml index a644673a46..a8ddf9a693 100644 --- a/capabilities-map.yaml +++ b/capabilities-map.yaml @@ -390,6 +390,10 @@ topics: configured via puppet requires: - overcloud-resource-registry-puppet.yaml + - file: environments/cinder-nvmeof-config.yaml + title: Cinder NVMeOF backend + description: > + Enable a Cinder NVMeOF backend, configured via puppet - title: Cinder backup service description: environments: diff --git a/environments/cinder-nvmeof-config.yaml b/environments/cinder-nvmeof-config.yaml new file mode 100644 index 0000000000..44ca7433ea --- /dev/null +++ b/environments/cinder-nvmeof-config.yaml @@ -0,0 +1,22 @@ +# A Heat environment file which can be used to enable a +# Cinder NVMeOF backend, configured via puppet +resource_registry: + OS::TripleO::Services::CinderBackendNVMeOF: ../puppet/services/cinder-backend-nvmeof.yaml + +parameter_defaults: + CinderNVMeOFBackendName: 'tripleo_nvmeof' + CinderNVMeOFTargetPort: 4460 + CinderNVMeOFTargetHelper: 'nvmet' + CinderNVMeOFTargetProtocol: 'nvmet_rdma' + CinderNVMeOFTargetPrefix: 'nvme-subsystem' + CinderNVMeOFTargetPortId: 1 + CinderNVMeOFTargetNameSpaceId: 10 + + ControllerParameters: + ExtraKernelModules: + nvmet: {} + nvmet-rdma: {} + ComputeParameters: + ExtraKernelModules: + nvme: {} + nvme-rdma: {} diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index 57c6ef5122..c4a130a90e 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -307,6 +307,7 @@ resource_registry: OS::TripleO::Services::CinderBackendNetApp: OS::Heat::None OS::TripleO::Services::CinderBackendScaleIO: OS::Heat::None OS::TripleO::Services::CinderBackendVRTSHyperScale: OS::Heat::None + OS::TripleO::Services::CinderBackendNVMeOF: OS::Heat::None OS::TripleO::Services::CinderHPELeftHandISCSI: OS::Heat::None OS::TripleO::Services::Etcd: OS::Heat::None OS::TripleO::Services::Ec2Api: OS::Heat::None diff --git a/puppet/services/cinder-backend-nvmeof.yaml b/puppet/services/cinder-backend-nvmeof.yaml new file mode 100644 index 0000000000..d4a12cdc41 --- /dev/null +++ b/puppet/services/cinder-backend-nvmeof.yaml @@ -0,0 +1,76 @@ +heat_template_version: queens + +description: > + Openstack Cinder NVMeOF backend + +parameters: + CinderNVMeOFBackendName: + type: string + default: 'tripleo_nvmeof' + CinderNVMeOFTargetPort: + type: number + default: 4460 + CinderNVMeOFTargetHelper: + type: string + default: 'nvmet' + CinderNVMeOFTargetProtocol: + type: string + default: 'nvmet_rdma' + CinderNVMeOFTargetPrefix: + type: string + default: 'nvme-subsystem' + CinderNVMeOFTargetPortId: + type: number + default: 1 + CinderNVMeOFTargetNameSpaceId: + type: number + default: 10 + ServiceData: + default: {} + description: Dictionary packing service data + type: json + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + RoleName: + default: '' + description: Role name on which the service is applied + type: string + RoleParameters: + default: {} + description: Parameters specific to the role + type: json + EndpointMap: + default: {} + type: json + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + +outputs: + role_data: + description: Role data for the Cinder NVMeOF backend. + value: + service_name: cinder_backend_nvmeof + config_settings: + tripleo::profile::base::cinder::volume::cinder_enable_nvmeof_backend: true + tripleo::profile::base::cinder::volume::nvmeof::volume_backend_name: {get_param: CinderNVMeOFBackendName} + tripleo::profile::base::cinder::volume::nvmeof::target_port: {get_param: CinderNVMeOFTargetPort} + tripleo::profile::base::cinder::volume::nvmeof::target_helper: {get_param: CinderNVMeOFTargetHelper} + tripleo::profile::base::cinder::volume::nvmeof::target_protocol: {get_param: CinderNVMeOFTargetProtocol} + tripleo::profile::base::cinder::volume::nvmeof::target_prefix: {get_param: CinderNVMeOFTargetPrefix} + tripleo::profile::base::cinder::volume::nvmeof::nvmet_port_id: {get_param: CinderNVMeOFTargetPortId} + tripleo::profile::base::cinder::volume::nvmeof::nvmet_ns_id: {get_param: CinderNVMeOFTargetNameSpaceId} + tripleo::profile::base::cinder::volume::nvmeof::target_ip_address: + str_replace: + template: + "%{hiera('$NETWORK')}" + params: + $NETWORK: {get_param: [ServiceNetMap, CinderIscsiNetwork]} + step_config: | + include ::tripleo::profile::base::cinder::volume diff --git a/releasenotes/notes/add-cinder-backend-nvmeof-023d967980fcf7b8.yaml b/releasenotes/notes/add-cinder-backend-nvmeof-023d967980fcf7b8.yaml new file mode 100644 index 0000000000..a43e6e6f28 --- /dev/null +++ b/releasenotes/notes/add-cinder-backend-nvmeof-023d967980fcf7b8.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Add NVMeOF as Cinder backend. diff --git a/roles/Controller.yaml b/roles/Controller.yaml index 86e96b7668..b9d1b493be 100644 --- a/roles/Controller.yaml +++ b/roles/Controller.yaml @@ -61,6 +61,7 @@ - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendScaleIO - OS::TripleO::Services::CinderBackendVRTSHyperScale + - OS::TripleO::Services::CinderBackendNVMeOF - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderHPELeftHandISCSI - OS::TripleO::Services::CinderScheduler diff --git a/roles/ControllerNoCeph.yaml b/roles/ControllerNoCeph.yaml index 3ade46dff1..b307b0ddbb 100644 --- a/roles/ControllerNoCeph.yaml +++ b/roles/ControllerNoCeph.yaml @@ -54,6 +54,7 @@ - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendScaleIO - OS::TripleO::Services::CinderBackendVRTSHyperScale + - OS::TripleO::Services::CinderBackendNVMeOF - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderHPELeftHandISCSI - OS::TripleO::Services::CinderScheduler diff --git a/roles_data.yaml b/roles_data.yaml index a0e148361b..cc910e6dd1 100644 --- a/roles_data.yaml +++ b/roles_data.yaml @@ -64,6 +64,7 @@ - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendScaleIO - OS::TripleO::Services::CinderBackendVRTSHyperScale + - OS::TripleO::Services::CinderBackendNVMeOF - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderHPELeftHandISCSI - OS::TripleO::Services::CinderScheduler