bb1eba7195
Use Hash values instead of Array values to avoid unnecessary conversion between actual value type and internal data type. This allows us to avoid potential issues caused by tricky parsing or conversion. Note that this could not be backword compatible and users have to update their manifests to adopt to this change. Change-Id: Id4a32752eb1073c6467d089bc97c8271741feba0
278 lines
12 KiB
Puppet
278 lines
12 KiB
Puppet
# == define: cinder::backend::netapp
|
|
#
|
|
# Configures Cinder to use the NetApp unified volume driver
|
|
# Compatible for multiple backends
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [*netapp_login*]
|
|
# (required) Administrative user account name used to access the storage
|
|
# system or proxy server.
|
|
#
|
|
# [*netapp_password*]
|
|
# (required) Password for the administrative user account specified in the
|
|
# netapp_login option.
|
|
#
|
|
# [*netapp_server_hostname*]
|
|
# (required) The hostname (or IP address) for the storage system or proxy
|
|
# server.
|
|
#
|
|
# [*volume_backend_name*]
|
|
# (optional) The name of the cinder::backend::netapp resource
|
|
# Defaults to $name.
|
|
#
|
|
# [*backend_availability_zone*]
|
|
# (Optional) Availability zone for this volume backend.
|
|
# If not set, the storage_availability_zone option value
|
|
# is used as the default for all backends.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*image_volume_cache_enabled*]
|
|
# (Optional) Enable Cinder's image cache function for this backend.
|
|
# Defaults to $facts['os_service_default'],
|
|
#
|
|
# [*image_volume_cache_max_size_gb*]
|
|
# (Optional) Max size of the image volume cache for this backend in GB.
|
|
# Defaults to $facts['os_service_default'],
|
|
#
|
|
# [*image_volume_cache_max_count*]
|
|
# (Optional) Max number of entries allowed in the image volume cache.
|
|
# Defaults to $facts['os_service_default'],
|
|
#
|
|
# [*reserved_percentage*]
|
|
# (Optional) The percentage of backend capacity is reserved.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*max_over_subscription_ratio*]
|
|
# (Optional) Representation of the over subscription ratio when thin
|
|
# provisionig is involved.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*netapp_server_port*]
|
|
# (optional) The TCP port to use for communication with the storage
|
|
# system or proxy. If not specified, Data ONTAP drivers will use 80
|
|
# for HTTP and 443 for HTTPS;
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*netapp_size_multiplier*]
|
|
# (optional) The quantity to be multiplied by the requested volume size to
|
|
# ensure enough space is available on the virtual storage server (Vserver) to
|
|
# fulfill the volume creation request.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*netapp_storage_family*]
|
|
# (optional) The storage family type used on the storage system; valid value
|
|
# is ontap_cluster for using clustered Data ONTAP.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*netapp_storage_protocol*]
|
|
# (optional) The storage protocol to be used on the data path with the storage
|
|
# system. Valid values are iscsi, fc, nfs.
|
|
# Defaults to nfs
|
|
#
|
|
# [*netapp_transport_type*]
|
|
# (optional) The transport protocol used when communicating with the storage
|
|
# system or proxy server. Valid values are http or https.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*netapp_vserver*]
|
|
# (optional) This option specifies the virtual storage server (Vserver)
|
|
# name on the storage cluster on which provisioning of block storage volumes
|
|
# should occur.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*expiry_thres_minutes*]
|
|
# (optional) This parameter specifies the threshold for last access time for
|
|
# images in the NFS image cache. When a cache cleaning cycle begins, images
|
|
# in the cache that have not been accessed in the last M minutes, where M is
|
|
# the value of this parameter, will be deleted from the cache to create free
|
|
# space on the NFS share.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*thres_avl_size_perc_start*]
|
|
# (optional) If the percentage of available space for an NFS share has
|
|
# dropped below the value specified by this parameter, the NFS image cache
|
|
# will be cleaned.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*thres_avl_size_perc_stop*]
|
|
# (optional) When the percentage of available space on an NFS share has
|
|
# reached the percentage specified by this parameter, the driver will stop
|
|
# clearing files from the NFS image cache that have not been accessed in the
|
|
# last M minutes, where M is the value of the expiry_thres_minutes parameter.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*nfs_shares*]
|
|
# (optional) Array of NFS exports in the form of host:/share; will be written into
|
|
# file specified in nfs_shares_config
|
|
# Defaults to undef
|
|
#
|
|
# [*nfs_shares_config*]
|
|
# (optional) File with the list of available NFS shares
|
|
# Defaults to '/etc/cinder/shares.conf'
|
|
#
|
|
# [*nfs_mount_options*]
|
|
# (optional) Mount options passed to the nfs client. See section
|
|
# of the nfs man page for details.
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*netapp_pool_name_search_pattern*]
|
|
# (optional) This option is only utilized when the Cinder driver is
|
|
# configured to use iSCSI or Fibre Channel. It is used to restrict
|
|
# provisioning to the specified FlexVol volumes. Specify the value of this
|
|
# option as a regular expression which will be applied to the names of
|
|
# FlexVol volumes from the storage backend which represent pools in Cinder.
|
|
# ^ (beginning of string) and $ (end of string) are implicitly wrapped around
|
|
# the regular expression specified before filtering.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*netapp_host_type*]
|
|
# (optional) This option is used to define how the controllers will work with
|
|
# the particular operating system on the hosts that are connected to it.
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*nas_secure_file_operations*]
|
|
# (Optional) Allow network-attached storage systems to operate in a secure
|
|
# environment where root level access is not permitted. If set to False,
|
|
# access is as the root user and insecure. If set to True, access is not as
|
|
# root. If set to auto, a check is done to determine if this is a new
|
|
# installation: True is used if so, otherwise False. Default is auto.
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*nas_secure_file_permissions*]
|
|
# (Optional) Set more secure file permissions on network-attached storage
|
|
# volume files to restrict broad other/world access. If set to False,
|
|
# volumes are created with open permissions. If set to True, volumes are
|
|
# created with permissions for the cinder user and group (660). If set to
|
|
# auto, a check is done to determine if this is a new installation: True is
|
|
# used if so, otherwise False. Default is auto.
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*manage_volume_type*]
|
|
# (Optional) Whether or not manage Cinder Volume type.
|
|
# If set to true, a Cinder Volume type will be created
|
|
# with volume_backend_name=$volume_backend_name key/value.
|
|
# Defaults to false.
|
|
#
|
|
# [*extra_options*]
|
|
# (optional) Hash of extra options to pass to the backend stanza
|
|
# Defaults to: {}
|
|
# Example :
|
|
# { 'netapp_backend/param1' => { 'value' => value1 } }
|
|
#
|
|
# DEPRECATED PARAMETERS
|
|
#
|
|
# [*netapp_copyoffload_tool_path*]
|
|
# (optional) This option specifies the path of the NetApp Copy Offload tool
|
|
# binary. Ensure that the binary has execute permissions set which allow the
|
|
# effective user of the cinder-volume process to execute the file.
|
|
# Defaults to undef
|
|
#
|
|
# === Examples
|
|
#
|
|
# cinder::backend::netapp { 'myBackend':
|
|
# netapp_login => 'clusterAdmin',
|
|
# netapp_password => 'password',
|
|
# netapp_server_hostname => 'netapp.mycorp.com',
|
|
# netapp_server_port => '443',
|
|
# netapp_transport_type => 'https',
|
|
# netapp_vserver => 'openstack-vserver',
|
|
# }
|
|
#
|
|
# === Authors
|
|
#
|
|
# Bob Callaway <bob.callaway@netapp.com>
|
|
#
|
|
# === Copyright
|
|
#
|
|
# Copyright 2014 NetApp, Inc.
|
|
#
|
|
define cinder::backend::netapp (
|
|
$netapp_login,
|
|
$netapp_password,
|
|
$netapp_server_hostname,
|
|
$volume_backend_name = $name,
|
|
$backend_availability_zone = $facts['os_service_default'],
|
|
$image_volume_cache_enabled = $facts['os_service_default'],
|
|
$image_volume_cache_max_size_gb = $facts['os_service_default'],
|
|
$image_volume_cache_max_count = $facts['os_service_default'],
|
|
$reserved_percentage = $facts['os_service_default'],
|
|
$max_over_subscription_ratio = $facts['os_service_default'],
|
|
$netapp_server_port = $facts['os_service_default'],
|
|
$netapp_size_multiplier = $facts['os_service_default'],
|
|
$netapp_storage_family = $facts['os_service_default'],
|
|
$netapp_storage_protocol = 'nfs',
|
|
$netapp_transport_type = $facts['os_service_default'],
|
|
$netapp_vserver = $facts['os_service_default'],
|
|
$expiry_thres_minutes = $facts['os_service_default'],
|
|
$thres_avl_size_perc_start = $facts['os_service_default'],
|
|
$thres_avl_size_perc_stop = $facts['os_service_default'],
|
|
Optional[Array[String]] $nfs_shares = undef,
|
|
Stdlib::Absolutepath $nfs_shares_config = '/etc/cinder/shares.conf',
|
|
$nfs_mount_options = $facts['os_service_default'],
|
|
$netapp_host_type = $facts['os_service_default'],
|
|
Boolean $manage_volume_type = false,
|
|
Hash $extra_options = {},
|
|
$netapp_pool_name_search_pattern = $facts['os_service_default'],
|
|
$nas_secure_file_operations = $facts['os_service_default'],
|
|
$nas_secure_file_permissions = $facts['os_service_default'],
|
|
# DEPRECATED PARAMETERS
|
|
$netapp_copyoffload_tool_path = undef,
|
|
) {
|
|
|
|
include cinder::deps
|
|
|
|
if $netapp_copyoffload_tool_path != undef {
|
|
warning("The netapp_copyoffload_tool_path parameter has been deprecated \
|
|
and will be removed in a future release.")
|
|
}
|
|
|
|
if $nfs_shares {
|
|
file {$nfs_shares_config:
|
|
content => join($nfs_shares, "\n"),
|
|
require => Anchor['cinder::install::end'],
|
|
notify => Anchor['cinder::service::begin'],
|
|
}
|
|
}
|
|
|
|
cinder_config {
|
|
"${name}/nfs_mount_options": value => $nfs_mount_options;
|
|
"${name}/volume_backend_name": value => $volume_backend_name;
|
|
"${name}/backend_availability_zone": value => $backend_availability_zone;
|
|
"${name}/image_volume_cache_enabled": value => $image_volume_cache_enabled;
|
|
"${name}/image_volume_cache_max_size_gb": value => $image_volume_cache_max_size_gb;
|
|
"${name}/image_volume_cache_max_count": value => $image_volume_cache_max_count;
|
|
"${name}/reserved_percentage": value => $reserved_percentage;
|
|
"${name}/max_over_subscription_ratio": value => $max_over_subscription_ratio;
|
|
"${name}/volume_driver": value => 'cinder.volume.drivers.netapp.common.NetAppDriver';
|
|
"${name}/netapp_login": value => $netapp_login;
|
|
"${name}/netapp_password": value => $netapp_password, secret => true;
|
|
"${name}/netapp_server_hostname": value => $netapp_server_hostname;
|
|
"${name}/netapp_server_port": value => $netapp_server_port;
|
|
"${name}/netapp_size_multiplier": value => $netapp_size_multiplier;
|
|
"${name}/netapp_storage_family": value => $netapp_storage_family;
|
|
"${name}/netapp_storage_protocol": value => $netapp_storage_protocol;
|
|
"${name}/netapp_transport_type": value => $netapp_transport_type;
|
|
"${name}/netapp_vserver": value => $netapp_vserver;
|
|
"${name}/expiry_thres_minutes": value => $expiry_thres_minutes;
|
|
"${name}/thres_avl_size_perc_start": value => $thres_avl_size_perc_start;
|
|
"${name}/thres_avl_size_perc_stop": value => $thres_avl_size_perc_stop;
|
|
"${name}/nfs_shares_config": value => $nfs_shares_config;
|
|
"${name}/netapp_copyoffload_tool_path": value => pick($netapp_copyoffload_tool_path, $facts['os_service_default']);
|
|
"${name}/netapp_pool_name_search_pattern": value => $netapp_pool_name_search_pattern;
|
|
"${name}/netapp_host_type": value => $netapp_host_type;
|
|
"${name}/nas_secure_file_operations": value => $nas_secure_file_operations;
|
|
"${name}/nas_secure_file_permissions": value => $nas_secure_file_permissions;
|
|
}
|
|
|
|
if $manage_volume_type {
|
|
cinder_type { $volume_backend_name:
|
|
ensure => present,
|
|
properties => {'volume_backend_name' => $volume_backend_name},
|
|
}
|
|
}
|
|
|
|
create_resources('cinder_config', $extra_options)
|
|
|
|
}
|