Browse Source

Wire in Controller pre-deployment extraconfig

The recently added cinder-netapp extraconfig contains some additional
hieradata which needs to be applied during the initial pre-deployment
phase, e.g in controller-puppet.yaml (before the manifests are applied)
so wire in a new OS::TripleO::ControllerExtraConfigPre provider resource
which allows passing in a nested stack (empty by default) which contains
any required "pre deployment" extraconfig, such as applying this hieradata.

Some changes were required to the cinder-netapp extraconfig and environment
such that now the hieradata is actually applied, and the parameter_defaults
specified will be correctly mapped into the StructuredDeployment.

Change-Id: I8838a71db9447466cc84283b0b257bdb70353ffd
changes/43/193143/9
Steven Hardy 7 years ago committed by Robert Pothier
parent
commit
e4c4c4068e
  1. 51
      environments/cinder-netapp-config.yaml
  2. 38
      extraconfig/controller/cinder-netapp.yaml
  3. 3
      extraconfig/controller/noop.yaml
  4. 2
      extraconfig/post_deploy/README
  5. 11
      overcloud-resource-registry-puppet.yaml
  6. 14
      puppet/controller-puppet.yaml
  7. 12
      puppet/extraconfig/pre_deploy/README
  8. 145
      puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
  9. 18
      puppet/extraconfig/pre_deploy/controller/multiple.yaml
  10. 8
      puppet/extraconfig/pre_deploy/default.yaml

51
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'

38
extraconfig/controller/cinder-netapp.yaml

@ -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}

3
extraconfig/controller/noop.yaml

@ -1,3 +0,0 @@
heat_template_version: 2015-04-30
description: A stack which doesn't configure anything.

2
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.

11
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

14
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]}

12
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

145
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]}

18
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}

8
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"
Loading…
Cancel
Save