aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--environments/cinder-netapp-config.yaml51
-rw-r--r--extraconfig/controller/cinder-netapp.yaml38
-rw-r--r--extraconfig/controller/noop.yaml3
-rw-r--r--extraconfig/post_deploy/README2
-rw-r--r--overcloud-resource-registry-puppet.yaml11
-rw-r--r--puppet/controller-puppet.yaml14
-rw-r--r--puppet/extraconfig/pre_deploy/README12
-rw-r--r--puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml145
-rw-r--r--puppet/extraconfig/pre_deploy/controller/multiple.yaml18
-rw-r--r--puppet/extraconfig/pre_deploy/default.yaml8
10 files changed, 230 insertions, 72 deletions
diff --git a/environments/cinder-netapp-config.yaml b/environments/cinder-netapp-config.yaml
index 4dd9eed7..4eaec71f 100644
--- a/environments/cinder-netapp-config.yaml
+++ b/environments/cinder-netapp-config.yaml
@@ -1,30 +1,29 @@
# A Heat environment file which can be used to enable a
-# a Cinder NetApp backend.
+# a Cinder NetApp backend, configured via puppet
resource_registry:
- OS::TripleO::Controller::CinderBackend: extraconfig/controller/cinder-netapp.yaml
+ OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
parameter_defaults:
- CinderBackendConfig:
- CinderEnableNetappBackend: false
- CinderNetappBackendName: 'tripleo_netapp'
- CinderNetappLogin: ''
- CinderNetappPassword: ''
- CinderNetappServerHostname: ''
- CinderNetappServerPort: '80'
- CinderNetappSizeMultiplier: '1.2'
- CinderNetappStorageFamily: 'ontap_cluster'
- CinderNetappStorageProtocol: 'nfs'
- CinderNetappTransportType: 'http'
- CinderNetappVfiler: ''
- CinderNetappVolumeList: ''
- CinderNetappVserver: ''
- CinderNetappPartnerBackendName: ''
- CinderNetappNfsShares: ''
- CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
- CinderNetappNfsMountOptions: ''
- CinderNetappCopyOffloadToolPath: ''
- CinderNetappControllerIps: ''
- CinderNetappSaPassword: ''
- CinderNetappStoragePools: ''
- CinderNetappEseriesHostType: 'linux_dm_mp'
- CinderNetappWebservicePath: '/devmgr/v2'
+ CinderEnableNetappBackend: false
+ CinderNetappBackendName: 'tripleo_netapp'
+ CinderNetappLogin: ''
+ CinderNetappPassword: ''
+ CinderNetappServerHostname: ''
+ CinderNetappServerPort: '80'
+ CinderNetappSizeMultiplier: '1.2'
+ CinderNetappStorageFamily: 'ontap_cluster'
+ CinderNetappStorageProtocol: 'nfs'
+ CinderNetappTransportType: 'http'
+ CinderNetappVfiler: ''
+ CinderNetappVolumeList: ''
+ CinderNetappVserver: ''
+ CinderNetappPartnerBackendName: ''
+ CinderNetappNfsShares: ''
+ CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
+ CinderNetappNfsMountOptions: ''
+ CinderNetappCopyOffloadToolPath: ''
+ CinderNetappControllerIps: ''
+ CinderNetappSaPassword: ''
+ CinderNetappStoragePools: ''
+ CinderNetappEseriesHostType: 'linux_dm_mp'
+ CinderNetappWebservicePath: '/devmgr/v2'
diff --git a/extraconfig/controller/cinder-netapp.yaml b/extraconfig/controller/cinder-netapp.yaml
deleted file mode 100644
index 223ceacd..00000000
--- a/extraconfig/controller/cinder-netapp.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: >
- Configure hieradata for Cinder Netapp configuration
-
-resources:
- CinderNetappConfig:
- type: OS::Heat::StructuredConfig
- properties:
- group: os-apply-config
- config:
- hiera:
- datafiles:
- cinder_netapp_data:
- mapped_data:
- cinder_enable_netapp_backend: {get_param: CinderEnableNetappBackend}
- cinder::backend::netapp::title: {get_param: CinderNetappBackendName}
- cinder::backend::netapp::netapp_login: {get_param: CinderNetappLogin}
- cinder::backend::netapp::netapp_password: {get_param: CinderNetappPassword}
- cinder::backend::netapp::netapp_hostname: {get_param: CinderNetappServerHostname}
- cinder::backend::netapp::netapp_server_port: {get_param: CinderNetappServerPort}
- cinder::backend::netapp::netapp_size_multiplier: {get_param: CinderNetappSizeMultiplier}
- cinder::backend::netapp::netapp_storage_family: {get_param: CinderNetappStorageFamily}
- cinder::backend::netapp::netapp_storage_protocol: {get_param: CinderNetappStorageProtocol}
- cinder::backend::netapp::netapp_transport_type: {get_param: CinderNetappTransportType}
- cinder::backend::netapp::netapp_vfiler: {get_param: CinderNetappVfiler}
- cinder::backend::netapp::netapp_volume_list: {get_param: CinderNetappVolumeList}
- cinder::backend::netapp::netapp_vserver: {get_param: CinderNetappVserver}
- cinder::backend::netapp::netapp_partner_backend_name: {get_param: CinderNetappPartnerBackendName}
- cinder::backend::netapp::nfs_shares: {get_param: CinderNetappNfsShares}
- cinder::backend::netapp::nfs_shares_config: {get_param: CinderNetappNfsSharesConfig}
- cinder::backend::netapp::nfs_mount_options: {get_param: CinderNetappNfsMountOptions}
- cinder::backend::netapp::netapp_copyoffload_tool_path: {get_param: CinderNetappCopyOffloadToolPath}
- cinder::backend::netapp::netapp_controller_ips: {get_param: CinderNetappControllerIps}
- cinder::backend::netapp::netapp_sa_password: {get_param: CinderNetappSaPassword}
- cinder::backend::netapp::netapp_storage_pools: {get_param: CinderNetappStoragePools}
- cinder::backend::netapp::netapp_eseries_host_type: {get_param: CinderNetappEseriesHostType}
- cinder::backend::netapp::netapp_webservice_path: {get_param: CinderNetappWebservicePath}
diff --git a/extraconfig/controller/noop.yaml b/extraconfig/controller/noop.yaml
deleted file mode 100644
index 2eb35763..00000000
--- a/extraconfig/controller/noop.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: A stack which doesn't configure anything.
diff --git a/extraconfig/post_deploy/README b/extraconfig/post_deploy/README
new file mode 100644
index 00000000..3c53fa2c
--- /dev/null
+++ b/extraconfig/post_deploy/README
@@ -0,0 +1,2 @@
+This tree contains additional configuration which happens "post deployment",
+e.g after the OpenStack service configuration has been completed.
diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml
index c9041c6b..17c1470f 100644
--- a/overcloud-resource-registry-puppet.yaml
+++ b/overcloud-resource-registry-puppet.yaml
@@ -21,9 +21,15 @@ resource_registry:
OS::TripleO::CephClusterConfig::SoftwareConfig: puppet/ceph-cluster-config.yaml
OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
OS::TripleO::BootstrapNode::SoftwareConfig: puppet/bootstrap-config.yaml
+ OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml
+
+ # Hooks for operator extra config
+ # NodeUserData == Cloud-init additional user-data, e.g cloud-config
+ # ControllerExtraConfigPre == Controller configuration pre service deployment
+ # NodeExtraConfigPost == All nodes configuration post service deployment
OS::TripleO::NodeUserData: firstboot/userdata_default.yaml
+ OS::TripleO::ControllerExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
OS::TripleO::NodeExtraConfigPost: extraconfig/post_deploy/default.yaml
- OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml
# TripleO overcloud networks
OS::TripleO::Network: network/networks.yaml
@@ -65,9 +71,6 @@ resource_registry:
OS::TripleO::BlockStorage::Ports::StoragePort: network/ports/noop.yaml
OS::TripleO::BlockStorage::Ports::StorageMgmtPort: network/ports/noop.yaml
- # Cinder backend config for the controller role
- OS::TripleO::Controller::CinderBackend: extraconfig/controller/noop.yaml
-
# Port assignments for service virtual IPs for the controller role
OS::TripleO::Controller::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
diff --git a/puppet/controller-puppet.yaml b/puppet/controller-puppet.yaml
index 5a356bcc..f4eab68a 100644
--- a/puppet/controller-puppet.yaml
+++ b/puppet/controller-puppet.yaml
@@ -824,6 +824,7 @@ resources:
- vip_data # provided by vip-config
- '"%{::osfamily}"'
- common
+ - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
datafiles:
common:
raw_data: {get_file: hieradata/common.yaml}
@@ -1041,6 +1042,13 @@ resources:
tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
enable_package_install: {get_input: enable_package_install}
+ # Hook for site-specific additional pre-deployment config, e.g extra hieradata
+ ControllerExtraConfigPre:
+ depends_on: ControllerDeployment
+ type: OS::TripleO::ControllerExtraConfigPre
+ properties:
+ server: {get_resource: Controller}
+
UpdateConfig:
type: OS::TripleO::Tasks::PackageUpdate
@@ -1112,4 +1120,8 @@ outputs:
IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
config_identifier:
description: identifier which changes if the controller configuration may need re-applying
- value: {get_attr: [ControllerDeployment, deploy_stdout]}
+ value:
+ list_join:
+ - ','
+ - - {get_attr: [ControllerDeployment, deploy_stdout]}
+ - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
diff --git a/puppet/extraconfig/pre_deploy/README b/puppet/extraconfig/pre_deploy/README
new file mode 100644
index 00000000..51fc3406
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/README
@@ -0,0 +1,12 @@
+This tree contains additional configuration which happens "pre deployment",
+e.g before the OpenStack services themselves are configured but after the
+nodes themselves have been provisioned and initially configured.
+
+Typically for puppet deployments these additional configs will put in place
+hieradata which is then consumed by the subsequent puppet configuration
+which occurs during the post-deployment phase.
+
+If you need to specify multiple configs, you can chain them together in a
+template, see the multiple.yaml example:
+
+ OS::TripleO::ControllerExtraConfigPre: puppet/extraconfig/pre_deploy/controller/multiple.yaml
diff --git a/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
new file mode 100644
index 00000000..1d982dff
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
@@ -0,0 +1,145 @@
+heat_template_version: 2015-04-30
+
+description: Configure hieradata for Cinder Netapp configuration
+
+parameters:
+ server:
+ description: ID of the controller node to apply this config to
+ type: string
+
+ # Config specific parameters, to be provided via parameter_defaults
+ CinderEnableNetappBackend:
+ type: string
+ default: false
+ CinderNetappBackendName:
+ type: string
+ default: 'tripleo_netapp'
+ CinderNetappLogin:
+ type: string
+ CinderNetappPassword:
+ type: string
+ CinderNetappServerHostname:
+ type: string
+ CinderNetappServerPort:
+ type: string
+ default: '80'
+ CinderNetappSizeMultiplier:
+ type: string
+ default: '1.2'
+ CinderNetappStorageFamily:
+ type: string
+ default: 'ontap_cluster'
+ CinderNetappStorageProtocol:
+ type: string
+ default: 'nfs'
+ CinderNetappTransportType:
+ type: string
+ default: 'http'
+ CinderNetappVfiler:
+ type: string
+ default: ''
+ CinderNetappVolumeList:
+ type: string
+ default: ''
+ CinderNetappVserver:
+ type: string
+ default: ''
+ CinderNetappPartnerBackendName:
+ type: string
+ default: ''
+ CinderNetappNfsShares:
+ type: string
+ default: ''
+ CinderNetappNfsSharesConfig:
+ type: string
+ default: '/etc/cinder/shares.conf'
+ CinderNetappNfsMountOptions:
+ type: string
+ default: ''
+ CinderNetappCopyOffloadToolPath:
+ type: string
+ default: ''
+ CinderNetappControllerIps:
+ type: string
+ default: ''
+ CinderNetappSaPassword:
+ type: string
+ default: ''
+ CinderNetappStoragePools:
+ type: string
+ default: ''
+ CinderNetappEseriesHostType:
+ type: string
+ default: 'linux_dm_mp'
+ CinderNetappWebservicePath:
+ type: string
+ default: '/devmgr/v2'
+
+resources:
+ CinderNetappConfig:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ hiera:
+ datafiles:
+ cinder_netapp_data:
+ mapped_data:
+ cinder_enable_netapp_backend: {get_input: EnableNetappBackend}
+ cinder::backend::netapp::title: {get_input: NetappBackendName}
+ cinder::backend::netapp::netapp_login: {get_input: NetappLogin}
+ cinder::backend::netapp::netapp_password: {get_input: NetappPassword}
+ cinder::backend::netapp::netapp_hostname: {get_input: NetappServerHostname}
+ cinder::backend::netapp::netapp_server_port: {get_input: NetappServerPort}
+ cinder::backend::netapp::netapp_size_multiplier: {get_input: NetappSizeMultiplier}
+ cinder::backend::netapp::netapp_storage_family: {get_input: NetappStorageFamily}
+ cinder::backend::netapp::netapp_storage_protocol: {get_input: NetappStorageProtocol}
+ cinder::backend::netapp::netapp_transport_type: {get_input: NetappTransportType}
+ cinder::backend::netapp::netapp_vfiler: {get_input: NetappVfiler}
+ cinder::backend::netapp::netapp_volume_list: {get_input: NetappVolumeList}
+ cinder::backend::netapp::netapp_vserver: {get_input: NetappVserver}
+ cinder::backend::netapp::netapp_partner_backend_name: {get_input: NetappPartnerBackendName}
+ cinder::backend::netapp::nfs_shares: {get_input: NetappNfsShares}
+ cinder::backend::netapp::nfs_shares_config: {get_input: NetappNfsSharesConfig}
+ cinder::backend::netapp::nfs_mount_options: {get_input: NetappNfsMountOptions}
+ cinder::backend::netapp::netapp_copyoffload_tool_path: {get_input: NetappCopyOffloadToolPath}
+ cinder::backend::netapp::netapp_controller_ips: {get_input: NetappControllerIps}
+ cinder::backend::netapp::netapp_sa_password: {get_input: NetappSaPassword}
+ cinder::backend::netapp::netapp_storage_pools: {get_input: NetappStoragePools}
+ cinder::backend::netapp::netapp_eseries_host_type: {get_input: NetappEseriesHostType}
+ cinder::backend::netapp::netapp_webservice_path: {get_input: NetappWebservicePath}
+
+ CinderNetappDeployment:
+ type: OS::Heat::StructuredDeployment
+ properties:
+ config: {get_resource: CinderNetappConfig}
+ server: {get_param: server}
+ input_values:
+ EnableNetappBackend: {get_param: CinderEnableNetappBackend}
+ NetappBackendName: {get_param: CinderNetappBackendName}
+ NetappLogin: {get_param: CinderNetappLogin}
+ NetappPassword: {get_param: CinderNetappPassword}
+ NetappServerHostname: {get_param: CinderNetappServerHostname}
+ NetappServerPort: {get_param: CinderNetappServerPort}
+ NetappSizeMultiplier: {get_param: CinderNetappSizeMultiplier}
+ NetappStorageFamily: {get_param: CinderNetappStorageFamily}
+ NetappStorageProtocol: {get_param: CinderNetappStorageProtocol}
+ NetappTransportType: {get_param: CinderNetappTransportType}
+ NetappVfiler: {get_param: CinderNetappVfiler}
+ NetappVolumeList: {get_param: CinderNetappVolumeList}
+ NetappVserver: {get_param: CinderNetappVserver}
+ NetappPartnerBackendName: {get_param: CinderNetappPartnerBackendName}
+ NetappNfsShares: {get_param: CinderNetappNfsShares}
+ NetappNfsSharesConfig: {get_param: CinderNetappNfsSharesConfig}
+ NetappNfsMountOptions: {get_param: CinderNetappNfsMountOptions}
+ NetappCopyOffloadToolPath: {get_param: CinderNetappCopyOffloadToolPath}
+ NetappControllerIps: {get_param: CinderNetappControllerIps}
+ NetappSaPassword: {get_param: CinderNetappSaPassword}
+ NetappStoragePools: {get_param: CinderNetappStoragePools}
+ NetappEseriesHostType: {get_param: CinderNetappEseriesHostType}
+ NetappWebservicePath: {get_param: CinderNetappWebservicePath}
+
+outputs:
+ deploy_stdout:
+ description: Deployment reference, used to trigger puppet apply on changes
+ value: {get_attr: [CinderNetappDeployment, deploy_stdout]}
diff --git a/puppet/extraconfig/pre_deploy/controller/multiple.yaml b/puppet/extraconfig/pre_deploy/controller/multiple.yaml
new file mode 100644
index 00000000..f949a397
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/controller/multiple.yaml
@@ -0,0 +1,18 @@
+heat_template_version: 2014-10-16
+description: 'Extra Pre-Deployment Config, multiple'
+parameters:
+ server:
+ type: string
+
+resources:
+
+ CinderNetappConfig:
+ type: cinder-netapp.yaml
+ properties:
+ server: {get_param: server}
+
+ # Note depends_on may be used for serialization if ordering is important
+ OtherConfig:
+ type: other.yaml
+ properties:
+ server: {get_param: server}
diff --git a/puppet/extraconfig/pre_deploy/default.yaml b/puppet/extraconfig/pre_deploy/default.yaml
new file mode 100644
index 00000000..dcbc6811
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/default.yaml
@@ -0,0 +1,8 @@
+heat_template_version: 2014-10-16
+description: 'Noop Extra Pre-Deployment Config'
+parameters:
+ server:
+ type: string
+outputs:
+ deploy_stdout:
+ value: "None"