Allow pacemaker ports in firewall
[apex-tripleo-heat-templates.git] / overcloud.yaml
index e152047..d8955b9 100644 (file)
@@ -118,10 +118,6 @@ parameters:
     default: false
     description: Enable IPv6 features in Memcached.
     type: boolean
     default: false
     description: Enable IPv6 features in Memcached.
     type: boolean
-  NeutronExternalNetworkBridge:
-    description: Name of bridge used for external network traffic.
-    type: string
-    default: 'br-ex'
   NeutronBridgeMappings:
     description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
   NeutronBridgeMappings:
     description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
@@ -136,10 +132,6 @@ parameters:
     default: 'ctlplane'
     type: string
     description: Neutron ID or name for ctlplane network.
     default: 'ctlplane'
     type: string
     description: Neutron ID or name for ctlplane network.
-  NeutronEnableIsolatedMetadata:
-    default: 'False'
-    description: If True, DHCP provide metadata route to VM.
-    type: string
   NeutronEnableTunnelling:
     type: string
     default: "True"
   NeutronEnableTunnelling:
     type: string
     default: "True"
@@ -166,28 +158,6 @@ parameters:
     default: nic1
     description: What interface to bridge onto br-ex for network nodes.
     type: string
     default: nic1
     description: What interface to bridge onto br-ex for network nodes.
     type: string
-  NeutronPublicInterfaceTag:
-    default: ''
-    description: >
-      VLAN tag for creating a public VLAN. The tag will be used to
-      create an access port on the exterior bridge for each control plane node,
-      and that port will be given the IP address returned by neutron from the
-      public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
-      overcloud.yaml to include the deployment of VLAN ports to the control
-      plane.
-    type: string
-  NeutronComputeAgentMode:
-    default: 'dvr'
-    description: Agent mode for the neutron-l3-agent on the compute hosts
-    type: string
-  NeutronAgentMode:
-    default: 'dvr_snat'
-    description: Agent mode for the neutron-l3-agent on the controller hosts
-    type: string
-  NeutronDVR:
-    default: 'False'
-    description: Whether to configure Neutron Distributed Virtual Routers
-    type: string
   NeutronMetadataProxySharedSecret:
     description: Shared secret to prevent spoofing
     type: string
   NeutronMetadataProxySharedSecret:
     description: Shared secret to prevent spoofing
     type: string
@@ -206,17 +176,6 @@ parameters:
     description: |
         The tunnel types for the Neutron tenant network.
     type: comma_delimited_list
     description: |
         The tunnel types for the Neutron tenant network.
     type: comma_delimited_list
-  NeutronTunnelIdRanges:
-    description: |
-        Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
-        of GRE tunnel IDs that are available for tenant network allocation
-    default: ["1:4094", ]
-    type: comma_delimited_list
-  NeutronVniRanges:
-    description: |
-        Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
-        of VXLAN VNI IDs that are available for tenant network allocation
-    default: ["1:4094", ]
     type: comma_delimited_list
   NeutronCorePlugin:
     default: 'ml2'
     type: comma_delimited_list
   NeutronCorePlugin:
     default: 'ml2'
@@ -240,10 +199,6 @@ parameters:
     description: |
         The mechanism drivers for the Neutron tenant network.
     type: comma_delimited_list
     description: |
         The mechanism drivers for the Neutron tenant network.
     type: comma_delimited_list
-  NeutronPluginExtensions:
-    default: "qos,port_security"
-    description: |
-        Comma-separated list of extensions enabled for the Neutron plugin.
     type: comma_delimited_list
   NeutronAgentExtensions:
     default: "qos"
     type: comma_delimited_list
   NeutronAgentExtensions:
     default: "qos"
@@ -258,10 +213,6 @@ parameters:
     default: 'False'
     description: Whether to enable l3-agent HA
     type: string
     default: 'False'
     description: Whether to enable l3-agent HA
     type: string
-  NeutronDhcpAgentsPerNetwork:
-    type: number
-    default: 1
-    description: The number of neutron dhcp agents to schedule per network
   NovaIPv6:
     default: false
     description: Enable IPv6 features in Nova
   NovaIPv6:
     default: false
     description: Enable IPv6 features in Nova
@@ -274,14 +225,6 @@ parameters:
     default: ''
     description: Comma-separated list of ntp servers
     type: comma_delimited_list
     default: ''
     description: Comma-separated list of ntp servers
     type: comma_delimited_list
-  MongoDbNoJournal:
-    default: false
-    description: Should MongoDb journaling be disabled
-    type: boolean
-  MongoDbIPv6:
-    default: false
-    description: Enable IPv6 if MongoDB VIP is IPv6
-    type: boolean
   PublicVirtualFixedIPs:
     default: []
     description: >
   PublicVirtualFixedIPs:
     default: []
     description: >
@@ -310,15 +253,6 @@ parameters:
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
-  # We need to set this as string because 'unlimited' is a valid setting
-  RabbitFDLimit:
-    default: 16384
-    description: Configures RabbitMQ FD limit
-    type: string
-  RabbitIPv6:
-    default: false
-    description: Enable IPv6 in RabbitMQ
-    type: boolean
   RedisPassword:
     description: The password for Redis
     type: string
   RedisPassword:
     description: The password for Redis
     type: string
@@ -365,18 +299,6 @@ parameters:
     default: 10280
     description: The size of the loopback file used by the cinder LVM driver.
     type: number
     default: 10280
     description: The size of the loopback file used by the cinder LVM driver.
     type: number
-  CinderNfsMountOptions:
-    default: ''
-    description: >
-      Mount options for NFS mounts used by Cinder NFS backend. Effective
-      when CinderEnableNfsBackend is true.
-    type: string
-  CinderNfsServers:
-    default: ''
-    description: >
-      NFS servers used by Cinder NFS backend. Effective when
-      CinderEnableNfsBackend is true.
-    type: comma_delimited_list
   CinderPassword:
     description: The password for the cinder service account, used by cinder-api.
     type: string
   CinderPassword:
     description: The password for the cinder service account, used by cinder-api.
     type: string
@@ -393,8 +315,7 @@ parameters:
   controllerExtraConfig:
     default: {}
     description: |
   controllerExtraConfig:
     default: {}
     description: |
-      Controller specific configuration to inject into the cluster. Same
-      structure as ExtraConfig.
+      Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
     type: json
   controllerImage:
     type: string
     type: json
   controllerImage:
     type: string
@@ -485,14 +406,6 @@ parameters:
     description: The password for the gnocchi service account.
     type: string
     hidden: true
     description: The password for the gnocchi service account.
     type: string
     hidden: true
-  HeatPassword:
-    description: The password for the Heat service account, used by the Heat services.
-    type: string
-    hidden: true
-  HeatStackDomainAdminPassword:
-    description: Password for heat_stack_domain_admin user.
-    type: string
-    hidden: true
   InstanceNameTemplate:
     default: 'instance-%08x'
     description: Template string to be used to generate instance names
   InstanceNameTemplate:
     default: 'instance-%08x'
     description: Template string to be used to generate instance names
@@ -516,25 +429,6 @@ parameters:
     description: Configures MySQL max_connections config setting
     type: number
     default: 4096
     description: Configures MySQL max_connections config setting
     type: number
     default: 4096
-  NeutronDnsmasqOptions:
-    default: 'dhcp-option-force=26,%MTU%'
-    description: >
-      Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU
-      to be set to the value of NeutronTenantMtu, which should be set to account
-      for tunnel overhead.
-    type: string
-  NeutronPublicInterfaceDefaultRoute:
-    default: ''
-    description: A custom default route for the NeutronPublicInterface.
-    type: string
-  NeutronPublicInterfaceIP:
-    default: ''
-    description: A custom IP address to put onto the NeutronPublicInterface.
-    type: string
-  NeutronPublicInterfaceRawDevice:
-    default: ''
-    description: If set, the public interface is a vlan with this device as the raw device.
-    type: string
   PublicVirtualInterface:
     default: 'br-ex'
     description: >
   PublicVirtualInterface:
     default: 'br-ex'
     description: >
@@ -545,10 +439,6 @@ parameters:
     description: A random string to be used as a salt when hashing to determine mappings in the ring.
     type: string
     hidden: true
     description: A random string to be used as a salt when hashing to determine mappings in the ring.
     type: string
     hidden: true
-  SwiftPassword:
-    description: The password for the swift service account, used by the swift proxy services.
-    type: string
-    hidden: true
   SwiftMountCheck:
     default: 'false'
     description: Value of mount_check in Swift account/container/object -server.conf
   SwiftMountCheck:
     default: 'false'
     description: Value of mount_check in Swift account/container/object -server.conf
@@ -565,10 +455,6 @@ parameters:
     type: number
     default: 3
     description: How many replicas to use in the swift rings.
     type: number
     default: 3
     description: How many replicas to use in the swift rings.
-  SaharaPassword:
-    description: The password for the sahara service account.
-    type: string
-    hidden: true
 
 # Compute-specific params
   CeilometerComputeAgent:
 
 # Compute-specific params
   CeilometerComputeAgent:
@@ -680,14 +566,47 @@ parameters:
 
   ControllerServices:
     default:
 
   ControllerServices:
     default:
+      - OS::TripleO::Services::CinderApi
+      - OS::TripleO::Services::CinderScheduler
+      - OS::TripleO::Services::CinderVolume
       - OS::TripleO::Services::Keystone
       - OS::TripleO::Services::GlanceApi
       - OS::TripleO::Services::GlanceRegistry
       - OS::TripleO::Services::Keystone
       - OS::TripleO::Services::GlanceApi
       - OS::TripleO::Services::GlanceRegistry
+      - OS::TripleO::Services::HeatApi
+      - OS::TripleO::Services::HeatApiCfn
+      - OS::TripleO::Services::HeatApiCloudwatch
+      - OS::TripleO::Services::HeatEngine
+      - OS::TripleO::Services::NeutronDhcpAgent
+      - OS::TripleO::Services::NeutronL3Agent
+      - OS::TripleO::Services::NeutronMetadataAgent
+      - OS::TripleO::Services::NeutronServer
+      - OS::TripleO::Services::NeutronCorePlugin
+      - OS::TripleO::Services::NeutronOvsAgent
+      - OS::TripleO::Services::RabbitMQ
+      - OS::TripleO::Services::HAproxy
+      - OS::TripleO::Services::Keepalived
+      - OS::TripleO::Services::Memcached
+      - OS::TripleO::Services::SwiftProxy
+      - OS::TripleO::Services::Redis
+      - OS::TripleO::Services::NovaConductor
+      - OS::TripleO::Services::MongoDb
+      - OS::TripleO::Services::NovaApi
+      - OS::TripleO::Services::NovaScheduler
+      - OS::TripleO::Services::NovaConsoleauth
+      - OS::TripleO::Services::NovaVncproxy
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Controllers.
     type: comma_delimited_list
 
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Controllers.
     type: comma_delimited_list
 
+  ComputeServices:
+    default:
+      - OS::TripleO::Services::NovaCompute
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the Compute Nodes.
+    type: comma_delimited_list
+
 # Block storage specific parameters
   BlockStorageCount:
     type: number
 # Block storage specific parameters
   BlockStorageCount:
     type: number
@@ -736,6 +655,14 @@ parameters:
     type: json
     description: Optional scheduler hints to pass to nova
     default: {}
     type: json
     description: Optional scheduler hints to pass to nova
     default: {}
+  ObjectStorageServices:
+    default: []
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the ObjectStorage nodes.
+                 Note this role currently only supports steps 2, 3 and 4 configuration.
+    type: comma_delimited_list
+
 
 # Ceph storage specific parameters
   CephStorageCount:
 
 # Ceph storage specific parameters
   CephStorageCount:
@@ -760,7 +687,12 @@ parameters:
     type: json
     description: Optional scheduler hints to pass to nova
     default: {}
     type: json
     description: Optional scheduler hints to pass to nova
     default: {}
-
+  CephStorageServices:
+    default: []
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the CephStorage nodes.
+    type: comma_delimited_list
 
   # Hostname format for each role
   # Note %index% is translated into the index of the node, e.g 0/1/2 etc
 
   # Hostname format for each role
   # Note %index% is translated into the index of the node, e.g 0/1/2 etc
@@ -835,6 +767,12 @@ parameters:
       List of resources to be removed from CephStorageResourceGroup when
       doing an update which requires removal of specific resources.
 
       List of resources to be removed from CephStorageResourceGroup when
       doing an update which requires removal of specific resources.
 
+parameter_groups:
+- label: deprecated
+  description: Do not use deprecated params, they will be removed.
+  parameters:
+  - controllerExtraConfig
+
 
 resources:
 
 
 resources:
 
@@ -873,10 +811,10 @@ resources:
 
   ControllerServiceChain:
     type: OS::TripleO::Services
 
   ControllerServiceChain:
     type: OS::TripleO::Services
+    depends_on: Networks
     properties:
       Services: {get_param: ControllerServices}
       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
     properties:
       Services: {get_param: ControllerServices}
       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
-      MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
 
   Controller:
     type: OS::Heat::ResourceGroup
 
   Controller:
     type: OS::Heat::ResourceGroup
@@ -893,17 +831,9 @@ resources:
           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
           CeilometerPassword: {get_param: CeilometerPassword}
           CeilometerMeterDispatcher: {get_param: CeilometerMeterDispatcher}
           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
           CeilometerPassword: {get_param: CeilometerPassword}
           CeilometerMeterDispatcher: {get_param: CeilometerMeterDispatcher}
-          CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
-          CinderNfsMountOptions: {get_param: CinderNfsMountOptions}
-          CinderNfsServers: {get_param: CinderNfsServers}
-          CinderPassword: {get_param: CinderPassword}
-          CinderISCSIHelper: {get_param: CinderISCSIHelper}
-          CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
-          CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
-          CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
           CloudDomain: {get_param: CloudDomain}
           ControlVirtualInterface: {get_param: ControlVirtualInterface}
           CloudDomain: {get_param: CloudDomain}
           ControlVirtualInterface: {get_param: ControlVirtualInterface}
-          ControllerExtraConfig: {get_param: controllerExtraConfig}
+          controllerExtraConfig: {get_param: controllerExtraConfig}
           CorosyncIPv6: {get_param: CorosyncIPv6}
           Debug: {get_param: Debug}
           EnableFencing: {get_param: EnableFencing}
           CorosyncIPv6: {get_param: CorosyncIPv6}
           Debug: {get_param: Debug}
           EnableFencing: {get_param: EnableFencing}
@@ -919,8 +849,6 @@ resources:
           GnocchiBackend: {get_param: GnocchiBackend}
           GnocchiIndexerBackend: {get_param: GnocchiIndexerBackend}
           HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
           GnocchiBackend: {get_param: GnocchiBackend}
           GnocchiIndexerBackend: {get_param: GnocchiIndexerBackend}
           HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
-          HeatPassword: {get_param: HeatPassword}
-          HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
           HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
           HorizonAllowedHosts: {get_param: HorizonAllowedHosts}
           HorizonSecret: {get_resource: HorizonSecret}
           HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
           HorizonAllowedHosts: {get_param: HorizonAllowedHosts}
           HorizonSecret: {get_resource: HorizonSecret}
@@ -933,43 +861,13 @@ resources:
           MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
           MysqlMaxConnections: {get_param: MysqlMaxConnections}
           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
           MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
           MysqlMaxConnections: {get_param: MysqlMaxConnections}
           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
-          NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
-          NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
-          NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
           NeutronTenantMtu: {get_param: NeutronTenantMtu}
           NeutronTenantMtu: {get_param: NeutronTenantMtu}
-          NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
-          NeutronEnableIsolatedMetadata: {get_param: NeutronEnableIsolatedMetadata}
-          NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
-          NeutronEnableL2Pop: {get_param: NeutronEnableL2Pop}
-          NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
           NeutronPublicInterface: {get_param: NeutronPublicInterface}
           NeutronPublicInterface: {get_param: NeutronPublicInterface}
-          NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
-          NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
           NeutronPassword: {get_param: NeutronPassword}
           NeutronPassword: {get_param: NeutronPassword}
-          NeutronDnsmasqOptions:
-            str_replace:
-              template: {get_param: NeutronDnsmasqOptions}
-              params:
-                '%MTU%': {get_param: NeutronTenantMtu}
-          NeutronDVR: {get_param: NeutronDVR}
           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
-          NeutronAgentMode: {get_param: NeutronAgentMode}
-          NeutronCorePlugin: {get_param: NeutronCorePlugin}
-          NeutronServicePlugins: {get_param: NeutronServicePlugins}
-          NeutronTypeDrivers: {get_param: NeutronTypeDrivers}
-          NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
-          NeutronPluginExtensions: {get_param: NeutronPluginExtensions}
-          NeutronAgentExtensions: {get_param: NeutronAgentExtensions}
-          NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
-          NeutronL3HA: {get_param: NeutronL3HA}
-          NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
-          NeutronNetworkType: {get_param: NeutronNetworkType}
-          NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
           NovaIPv6: {get_param: NovaIPv6}
           NovaPassword: {get_param: NovaPassword}
           NtpServer: {get_param: NtpServer}
           NovaIPv6: {get_param: NovaIPv6}
           NovaPassword: {get_param: NovaPassword}
           NtpServer: {get_param: NtpServer}
-          MongoDbNoJournal: {get_param: MongoDbNoJournal}
-          MongoDbIPv6: {get_param: MongoDbIPv6}
           PcsdPassword: {get_resource: PcsdPassword}
           PublicVirtualInterface: {get_param: PublicVirtualInterface}
           RabbitPassword: {get_param: RabbitPassword}
           PcsdPassword: {get_resource: PcsdPassword}
           PublicVirtualInterface: {get_param: PublicVirtualInterface}
           RabbitPassword: {get_param: RabbitPassword}
@@ -977,10 +875,7 @@ resources:
           RabbitCookie: {get_attr: [RabbitCookie, value]}
           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
           RabbitClientPort: {get_param: RabbitClientPort}
           RabbitCookie: {get_attr: [RabbitCookie, value]}
           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
           RabbitClientPort: {get_param: RabbitClientPort}
-          RabbitFDLimit: {get_param: RabbitFDLimit}
-          RabbitIPv6: {get_param: RabbitIPv6}
           RedisPassword: {get_param: RedisPassword}
           RedisPassword: {get_param: RedisPassword}
-          SaharaPassword: {get_param: SaharaPassword}
           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
           RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
           RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
@@ -989,7 +884,6 @@ resources:
           SwiftMountCheck: {get_param: SwiftMountCheck}
           SwiftMinPartHours: {get_param: SwiftMinPartHours}
           SwiftPartPower: {get_param: SwiftPartPower}
           SwiftMountCheck: {get_param: SwiftMountCheck}
           SwiftMinPartHours: {get_param: SwiftMinPartHours}
           SwiftPartPower: {get_param: SwiftPartPower}
-          SwiftPassword: {get_param: SwiftPassword}
           SwiftReplicas: { get_param: SwiftReplicas}
           TimeZone: {get_param: TimeZone}
           VirtualIP: {get_attr: [VipMap, net_ip_map, ctlplane]} # deprecated. Use per service VIP settings instead now.
           SwiftReplicas: { get_param: SwiftReplicas}
           TimeZone: {get_param: TimeZone}
           VirtualIP: {get_attr: [VipMap, net_ip_map, ctlplane]} # deprecated. Use per service VIP settings instead now.
@@ -1005,7 +899,6 @@ resources:
           NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
           SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
           MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
           NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
           SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
           MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
-          MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
           NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
           NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
           SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
           NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
           NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
           SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
@@ -1020,6 +913,12 @@ resources:
           SchedulerHints: {get_param: ControllerSchedulerHints}
           ServiceConfigSettings: {get_attr: [ControllerServiceChain, config_settings]}
 
           SchedulerHints: {get_param: ControllerSchedulerHints}
           ServiceConfigSettings: {get_attr: [ControllerServiceChain, config_settings]}
 
+  ComputeServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: ComputeServices}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+
   Compute:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
   Compute:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
@@ -1056,10 +955,7 @@ resources:
           NeutronPassword: {get_param: NeutronPassword}
           NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
           NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
           NeutronPassword: {get_param: NeutronPassword}
           NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
           NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
-          NeutronDVR: {get_param: NeutronDVR}
           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
-          NeutronAgentMode: {get_param: NeutronComputeAgentMode}
-          NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
           NeutronCorePlugin: {get_param: NeutronCorePlugin}
           NeutronServicePlugins: {get_param: NeutronServicePlugins}
           NeutronTypeDrivers: {get_param: NeutronTypeDrivers}
           NeutronCorePlugin: {get_param: NeutronCorePlugin}
           NeutronServicePlugins: {get_param: NeutronServicePlugins}
           NeutronTypeDrivers: {get_param: NeutronTypeDrivers}
@@ -1100,6 +996,8 @@ resources:
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: NovaComputeSchedulerHints}
           NodeIndex: '%index%'
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: NovaComputeSchedulerHints}
           NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [ComputeServiceChain, config_settings]}
+
 
   BlockStorage:
     type: OS::Heat::ResourceGroup
 
   BlockStorage:
     type: OS::Heat::ResourceGroup
@@ -1135,7 +1033,6 @@ resources:
                 '%stackname%': {get_param: 'OS::stack_name'}
           ServiceNetMap: {get_param: ServiceNetMap}
           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
                 '%stackname%': {get_param: 'OS::stack_name'}
           ServiceNetMap: {get_param: ServiceNetMap}
           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
-          MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
           ExtraConfig: {get_param: ExtraConfig}
           BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
           CloudDomain: {get_param: CloudDomain}
           ExtraConfig: {get_param: ExtraConfig}
           BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
           CloudDomain: {get_param: CloudDomain}
@@ -1143,6 +1040,12 @@ resources:
           SchedulerHints: {get_param: BlockStorageSchedulerHints}
           NodeIndex: '%index%'
 
           SchedulerHints: {get_param: BlockStorageSchedulerHints}
           NodeIndex: '%index%'
 
+  ObjectStorageServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: ObjectStorageServices}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+
   ObjectStorage:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
   ObjectStorage:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
@@ -1175,6 +1078,13 @@ resources:
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: ObjectStorageSchedulerHints}
           NodeIndex: '%index%'
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: ObjectStorageSchedulerHints}
           NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, config_settings]}
+
+  CephStorageServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: CephStorageServices}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
 
   CephStorage:
     type: OS::Heat::ResourceGroup
 
   CephStorage:
     type: OS::Heat::ResourceGroup
@@ -1203,6 +1113,7 @@ resources:
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: CephStorageSchedulerHints}
           NodeIndex: '%index%'
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: CephStorageSchedulerHints}
           NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [CephStorageServiceChain, config_settings]}
 
   ControllerIpListMap:
     type: OS::TripleO::Network::Ports::NetIpListMap
 
   ControllerIpListMap:
     type: OS::TripleO::Network::Ports::NetIpListMap
@@ -1438,29 +1349,6 @@ resources:
       ceph_mon_names: {get_attr: [Controller, hostname]}
       ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
 
       ceph_mon_names: {get_attr: [Controller, hostname]}
       ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
 
-  ControllerClusterConfig:
-    type: OS::Heat::StructuredConfig
-    properties:
-      group: os-apply-config
-      config:
-        corosync:
-          nodes: {get_attr: [Controller, corosync_node]}
-        horizon:
-          caches:
-            memcached:
-              nodes: {get_attr: [Controller, hostname]}
-        mysql:
-          nodes: {get_attr: [Controller, corosync_node]}
-        haproxy:
-          nodes: {get_attr: [Controller, corosync_node]}
-
-  ControllerClusterDeployment:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      name: ControllerClusterDeployment
-      config: {get_resource: ControllerClusterConfig}
-      servers: {get_attr: [Controller, attributes, nova_server_resource]}
-
   ControllerAllNodesDeployment:
     type: OS::Heat::StructuredDeployments
     properties:
   ControllerAllNodesDeployment:
     type: OS::Heat::StructuredDeployments
     properties:
@@ -1600,6 +1488,7 @@ resources:
         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
         compute_config: {get_attr: [Compute, attributes, config_identifier]}
         deployment_identifier: {get_param: DeployIdentifier}
         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
         compute_config: {get_attr: [Compute, attributes, config_identifier]}
         deployment_identifier: {get_param: DeployIdentifier}
+      StepConfig: {get_attr: [ComputeServiceChain, step_config]}
 
   ObjectStorageNodesPostDeployment:
     type: OS::TripleO::ObjectStoragePostDeployment
 
   ObjectStorageNodesPostDeployment:
     type: OS::TripleO::ObjectStoragePostDeployment
@@ -1610,6 +1499,7 @@ resources:
         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
         objectstorage_config: {get_attr: [ObjectStorage, attributes, config_identifier]}
         deployment_identifier: {get_param: DeployIdentifier}
         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
         objectstorage_config: {get_attr: [ObjectStorage, attributes, config_identifier]}
         deployment_identifier: {get_param: DeployIdentifier}
+      StepConfig: {get_attr: [ObjectStorageServiceChain, step_config]}
 
   BlockStorageNodesPostDeployment:
     type: OS::TripleO::BlockStoragePostDeployment
 
   BlockStorageNodesPostDeployment:
     type: OS::TripleO::BlockStoragePostDeployment
@@ -1630,6 +1520,7 @@ resources:
         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
         cephstorage_config: {get_attr: [CephStorage, attributes, config_identifier]}
         deployment_identifier: {get_param: DeployIdentifier}
         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
         cephstorage_config: {get_attr: [CephStorage, attributes, config_identifier]}
         deployment_identifier: {get_param: DeployIdentifier}
+      StepConfig: {get_attr: [CephStorageServiceChain, step_config]}
 
 outputs:
   KeystoneURL:
 
 outputs:
   KeystoneURL: