Skip to content
This repository has been archived by the owner on Feb 29, 2024. It is now read-only.

Commit

Permalink
Support cinder image conversion on an NFS share
Browse files Browse the repository at this point in the history
New CinderImageConversionNfsShare and CinderImageConversionNfsOptions
parameters add support for mounting an external NFS share for cinder
to use when converting glance images to or from another format (e.g.
qcow2 versus raw).

This feature is useful in preventing the node's root disk from filling
up in situations where the available disk space is too small, which
can happen in deployments that utilize very large glance images.

Change-Id: If7b3640191d84e5cf30cbbcb1cc94aa0f068d11c
(cherry picked from commit 2225f96)
(cherry picked from commit d5b8ced)
  • Loading branch information
ASBishop committed Jul 6, 2021
1 parent 6823e40 commit 0b5b09c
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 2 deletions.
61 changes: 60 additions & 1 deletion deployment/cinder/cinder-common-container-puppet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ parameters:
be managed by pacemaker. If these criteria are not met then the cluster
name must be left blank.
type: string
CinderImageConversionNfsShare:
default: ''
description: When set, the NFS share to be used for Cinder's image conversion
directory.
type: string
CinderImageConversionNfsOptions:
default: '_netdev,bg,intr,context=system_u:object_r:container_file_t:s0'
description: NFS mount options when using an NFS share for Cinder's image
conversion directory.
type: string
EnableInternalTLS:
type: boolean
default: false
Expand Down Expand Up @@ -124,12 +134,25 @@ conditions:
- equals: [{get_param: EnableInternalTLS}, true]
- equals: [{get_param: EnableEtcdInternalTLS}, true]

cinder_nfs_conversion_dir_enabled:
not:
equals:
- {get_param: CinderImageConversionNfsShare}
- ''

resources:

ContainersCommon:
type: ../containers-common.yaml

outputs:
cinder_image_conversion_nfs_dir:
description: The directory where cinder does its image conversion when the
directory is backed by an NFS share.
value: &cinder_image_conversion_nfs_dir
# Avoid SELinux conflicts by choosing a location outside /var/lib/cinder
/var/lib/cinder_image_conversion

cinder_common_host_prep_tasks:
description: Common host prep tasks for cinder-volume and cinder-backup services
value: &cinder_common_host_prep_tasks
Expand Down Expand Up @@ -221,7 +244,26 @@ outputs:
value:
list_concat:
- *cinder_common_host_prep_tasks
-
- - name: Support using an NFS share for cinder image conversion
vars:
image_conversion_nfs_enabled: {if: [cinder_nfs_conversion_dir_enabled, true, false]}
when:
- image_conversion_nfs_enabled|bool
block:
- name: Create cinder image conversion directory
file:
path: *cinder_image_conversion_nfs_dir
state: directory
- name: Mount cinder's image conversion NFS share
vars:
image_conversion_nfs_share: {get_param: CinderImageConversionNfsShare}
image_conversion_nfs_options: {get_param: CinderImageConversionNfsOptions}
mount:
path: *cinder_image_conversion_nfs_dir
state: mounted
fstype: nfs4
src: "{{ image_conversion_nfs_share }}"
opts: "{{ image_conversion_nfs_options }}"
- name: cinder_enable_iscsi_backend fact
set_fact:
cinder_enable_iscsi_backend: {if: [cinder_iscsi_backend_enabled, true, false]}
Expand Down Expand Up @@ -294,6 +336,14 @@ outputs:
enabled: yes
daemon_reload: yes

cinder_volume_config_settings:
description: Config settings for the cinder-volume container (HA or non-HA)
value:
if:
- cinder_nfs_conversion_dir_enabled
- cinder::image_conversion_dir: *cinder_image_conversion_nfs_dir
- {}

cinder_volume_volumes:
description: Volumes for the cinder-volume container (HA or non-HA)
value:
Expand Down Expand Up @@ -321,6 +371,15 @@ outputs:
- - /etc/multipath:/etc/multipath:z
- /etc/multipath.conf:/etc/multipath.conf:ro
- []
- if:
- cinder_nfs_conversion_dir_enabled
- - str_replace:
# Use slave propagation so if the mount is delayed on the host
# it will also be updated within the cinder-volume container.
template: DIR:DIR:slave
params:
DIR: *cinder_image_conversion_nfs_dir
- []

cinder_volume_environment:
description: Docker environment for the cinder-volume container (HA or non-HA)
Expand Down
3 changes: 2 additions & 1 deletion deployment/cinder/cinder-volume-container-puppet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -218,8 +218,9 @@ outputs:
config_settings:
map_merge:
- get_attr: [CinderBase, role_data, config_settings]
- get_attr: [CinderCommon, cinder_volume_config_settings]
- tripleo::profile::base::lvm::enable_udev: false
- tripleo::profile::base::cinder::volume::cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
tripleo::profile::base::cinder::volume::cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
tripleo::profile::base::cinder::volume::cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
tripleo::profile::base::cinder::volume::cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
tripleo::profile::base::cinder::volume::cinder_volume_cluster: {get_param: CinderVolumeCluster}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
features:
- |
The following parameters add support for mounting Cinder's image
conversion directory on an external NFS share.
* CinderImageConversionNfsShare
* CinderImageConversionNfsOptions

0 comments on commit 0b5b09c

Please sign in to comment.